Advanced Custom Fields - Version 5.7.4

Version Description

Release Date - 30 August 2018

  • Fix - Fixed bug causing field groups to disappear when selecting a taxonomy term with WPML active.
  • Tweak - Added more Dark Mode styles.
  • Tweak - Improved DB upgrade prompt, functions and AJAX logic.
  • Tweak - Improved the "What's New" admin page seen after DB Upgrade.
  • Dev - Added new location rules filters.
Download this release

Release Info

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

Code changes from version 5.7.3 to 5.7.4

Files changed (101) hide show
  1. README.md +0 -25
  2. acf.php +6 -13
  3. assets/_build/_compiler/acf-field-group.js +0 -7
  4. assets/_build/_compiler/acf-field-group.min.js +0 -7
  5. assets/_build/_compiler/acf-input.js +0 -45
  6. assets/_build/_compiler/acf-input.min.js +0 -45
  7. assets/_build/css/acf-dark.less +0 -401
  8. assets/_build/css/field-group.less +0 -602
  9. assets/_build/css/global.less +0 -1815
  10. assets/_build/css/input.less +0 -3662
  11. assets/_build/css/vars.less +0 -68
  12. assets/_build/images/sprite.psd +0 -0
  13. assets/_build/images/sprite@2x.psd +0 -0
  14. assets/_build/js/acf-compatibility.js +0 -754
  15. assets/_build/js/acf-condition-types.js +0 -447
  16. assets/_build/js/acf-condition.js +0 -249
  17. assets/_build/js/acf-conditions.js +0 -306
  18. assets/_build/js/acf-field-accordion.js +0 -219
  19. assets/_build/js/acf-field-button-group.js +0 -45
  20. assets/_build/js/acf-field-checkbox.js +0 -97
  21. assets/_build/js/acf-field-color-picker.js +0 -55
  22. assets/_build/js/acf-field-date-picker.js +0 -157
  23. assets/_build/js/acf-field-date-time-picker.js +0 -99
  24. assets/_build/js/acf-field-file.js +0 -120
  25. assets/_build/js/acf-field-google-map.js +0 -569
  26. assets/_build/js/acf-field-image.js +0 -198
  27. assets/_build/js/acf-field-link.js +0 -191
  28. assets/_build/js/acf-field-oembed.js +0 -163
  29. assets/_build/js/acf-field-page-link.js +0 -9
  30. assets/_build/js/acf-field-post-object.js +0 -9
  31. assets/_build/js/acf-field-radio.js +0 -68
  32. assets/_build/js/acf-field-range.js +0 -42
  33. assets/_build/js/acf-field-relationship.js +0 -376
  34. assets/_build/js/acf-field-select.js +0 -57
  35. assets/_build/js/acf-field-tab.js +0 -505
  36. assets/_build/js/acf-field-taxonomy.js +0 -320
  37. assets/_build/js/acf-field-time-picker.js +0 -77
  38. assets/_build/js/acf-field-true-false.js +0 -95
  39. assets/_build/js/acf-field-url.js +0 -64
  40. assets/_build/js/acf-field-user.js +0 -9
  41. assets/_build/js/acf-field-wysiwyg.js +0 -95
  42. assets/_build/js/acf-field.js +0 -524
  43. assets/_build/js/acf-fields.js +0 -372
  44. assets/_build/js/acf-helpers.js +0 -333
  45. assets/_build/js/acf-hooks.js +0 -252
  46. assets/_build/js/acf-media.js +0 -794
  47. assets/_build/js/acf-model.js +0 -908
  48. assets/_build/js/acf-notice.js +0 -142
  49. assets/_build/js/acf-panel.js +0 -34
  50. assets/_build/js/acf-popup.js +0 -121
  51. assets/_build/js/acf-postbox.js +0 -67
  52. assets/_build/js/acf-screen.js +0 -353
  53. assets/_build/js/acf-select2.js +0 -793
  54. assets/_build/js/acf-tinymce.js +0 -380
  55. assets/_build/js/acf-tooltip.js +0 -323
  56. assets/_build/js/acf-unload.js +0 -53
  57. assets/_build/js/acf-validation.js +0 -586
  58. assets/_build/js/acf.js +0 -2192
  59. assets/_build/js/field-group-compatibility.js +0 -281
  60. assets/_build/js/field-group-conditions.js +0 -403
  61. assets/_build/js/field-group-field.js +0 -809
  62. assets/_build/js/field-group-fields.js +0 -468
  63. assets/_build/js/field-group-locations.js +0 -104
  64. assets/_build/js/field-group-settings.js +0 -248
  65. assets/_build/js/field-group.js +0 -182
  66. assets/css/acf-dark.css +1 -1
  67. assets/css/acf-global.css +65 -64
  68. assets/images/acf-logo.png +0 -0
  69. assets/images/sprite.png +0 -0
  70. assets/images/sprite@2x.png +0 -0
  71. assets/js/acf-field-group.js +1 -2
  72. assets/js/acf-field-group.min.js +1 -1
  73. assets/js/acf-input.js +38 -12
  74. assets/js/acf-input.min.js +1 -1
  75. includes/admin/admin-field-group.php +4 -8
  76. includes/admin/admin-upgrade.php +225 -0
  77. includes/admin/install-network.php +0 -283
  78. includes/admin/install-updates.php +0 -499
  79. includes/admin/install.php +0 -431
  80. includes/admin/views/html-admin-page-upgrade-network.php +211 -0
  81. includes/admin/views/html-admin-page-upgrade.php +119 -0
  82. includes/admin/views/html-location-group.php +4 -6
  83. includes/admin/views/html-location-rule.php +9 -3
  84. includes/admin/views/html-notice-upgrade.php +43 -0
  85. includes/admin/views/install-network.php +0 -233
  86. includes/admin/views/install-notice.php +0 -57
  87. includes/admin/views/install.php +0 -108
  88. includes/admin/views/settings-info.php +115 -126
  89. includes/ajax/class-acf-ajax-upgrade.php +59 -0
  90. includes/api/api-helpers.php +133 -11
  91. includes/api/api-term.php +38 -2
  92. includes/compatibility.php +162 -327
  93. includes/fields/class-acf-field-post_object.php +2 -3
  94. includes/locations.php +31 -15
  95. includes/upgrades.php +507 -0
  96. includes/wpml.php +6 -6
  97. lang/acf-fa_IR.mo +0 -0
  98. lang/acf-fa_IR.po +1145 -787
  99. lang/acf-ru_RU.mo +0 -0
  100. lang/acf-ru_RU.po +885 -782
  101. lang/acf.pot +140 -131
README.md DELETED
@@ -1,25 +0,0 @@
1
- # Advanced Custom Fields
2
-
3
- Welcome to the official Advanced Custom Fields repository on GitHub. ACF is a WordPress plugin used to take full control of your edit screens & custom field data.
4
-
5
- Looking for ACF version 4? Please use the [previous ACF repository](https://github.com/elliotcondon/acf).
6
-
7
- Upgrading from ACF version 4? Please read our [Upgrading from v4 to v5 guide](https://www.advancedcustomfields.com/resources/upgrading-v4-v5/).
8
-
9
- ## Documentation
10
-
11
- Do you need help getting started with ACF, or do you have questions about one of the ACF features? You can [search through our documentation here](https://www.advancedcustomfields.com/resources). If you don't find the answers you're looking for, you can [submit a support ticket](https://support.advancedcustomfields.com/new-ticket/) or start a new forum thread in the [support forum](https://support.advancedcustomfields.com/).
12
-
13
- ## Support
14
-
15
- This repository is not suitable for support. Please don't use our issue tracker for support requests, but for core issues only.
16
- Support can take place in the appropriate channels:
17
-
18
- * Email based ticket system
19
- * Community forum
20
-
21
- These channels can be accessed from our [support website](https://support.advancedcustomfields.com/).
22
-
23
- ## Contributing
24
-
25
- If you have a patch, or stumbled upon an issue with ACF core, you can contribute this back to the code. Please create a new github issue with as much information as possible.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
acf.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Advanced Custom Fields
4
  Plugin URI: https://www.advancedcustomfields.com/
5
  Description: Customise WordPress with powerful, professional and intuitive fields.
6
- Version: 5.7.3
7
  Author: Elliot Condon
8
  Author URI: http://www.elliotcondon.com/
9
  Copyright: Elliot Condon
@@ -18,7 +18,7 @@ if( ! class_exists('ACF') ) :
18
  class ACF {
19
 
20
  /** @var string The plugin version number */
21
- var $version = '5.7.3';
22
 
23
  /** @var array The plugin settings array */
24
  var $settings = array();
@@ -118,7 +118,7 @@ class ACF {
118
  $this->define( 'ACF', true );
119
  $this->define( 'ACF_VERSION', $version );
120
  $this->define( 'ACF_PATH', $path );
121
-
122
 
123
  // api
124
  include_once( ACF_PATH . 'includes/api/api-helpers.php');
@@ -151,12 +151,14 @@ class ACF {
151
  acf_include('includes/media.php');
152
  acf_include('includes/revisions.php');
153
  acf_include('includes/updates.php');
 
154
  acf_include('includes/validation.php');
155
 
156
  // ajax
157
  acf_include('includes/ajax/class-acf-ajax.php');
158
  acf_include('includes/ajax/class-acf-ajax-check-screen.php');
159
  acf_include('includes/ajax/class-acf-ajax-user-setting.php');
 
160
  acf_include('includes/ajax/class-acf-ajax-query.php');
161
  acf_include('includes/ajax/class-acf-ajax-query-terms.php');
162
 
@@ -174,21 +176,12 @@ class ACF {
174
 
175
  // admin
176
  if( is_admin() ) {
177
-
178
  acf_include('includes/admin/admin.php');
179
  acf_include('includes/admin/admin-field-group.php');
180
  acf_include('includes/admin/admin-field-groups.php');
181
- acf_include('includes/admin/install.php');
182
  acf_include('includes/admin/admin-tools.php');
 
183
  acf_include('includes/admin/settings-info.php');
184
-
185
-
186
- // network
187
- if( is_network_admin() ) {
188
-
189
- acf_include('includes/admin/install-network.php');
190
-
191
- }
192
  }
193
 
194
 
3
  Plugin Name: Advanced Custom Fields
4
  Plugin URI: https://www.advancedcustomfields.com/
5
  Description: Customise WordPress with powerful, professional and intuitive fields.
6
+ Version: 5.7.4
7
  Author: Elliot Condon
8
  Author URI: http://www.elliotcondon.com/
9
  Copyright: Elliot Condon
18
  class ACF {
19
 
20
  /** @var string The plugin version number */
21
+ var $version = '5.7.4';
22
 
23
  /** @var array The plugin settings array */
24
  var $settings = array();
118
  $this->define( 'ACF', true );
119
  $this->define( 'ACF_VERSION', $version );
120
  $this->define( 'ACF_PATH', $path );
121
+ //$this->define( 'ACF_DEV', true );
122
 
123
  // api
124
  include_once( ACF_PATH . 'includes/api/api-helpers.php');
151
  acf_include('includes/media.php');
152
  acf_include('includes/revisions.php');
153
  acf_include('includes/updates.php');
154
+ acf_include('includes/upgrades.php');
155
  acf_include('includes/validation.php');
156
 
157
  // ajax
158
  acf_include('includes/ajax/class-acf-ajax.php');
159
  acf_include('includes/ajax/class-acf-ajax-check-screen.php');
160
  acf_include('includes/ajax/class-acf-ajax-user-setting.php');
161
+ acf_include('includes/ajax/class-acf-ajax-upgrade.php');
162
  acf_include('includes/ajax/class-acf-ajax-query.php');
163
  acf_include('includes/ajax/class-acf-ajax-query-terms.php');
164
 
176
 
177
  // admin
178
  if( is_admin() ) {
 
179
  acf_include('includes/admin/admin.php');
180
  acf_include('includes/admin/admin-field-group.php');
181
  acf_include('includes/admin/admin-field-groups.php');
 
182
  acf_include('includes/admin/admin-tools.php');
183
+ acf_include('includes/admin/admin-upgrade.php');
184
  acf_include('includes/admin/settings-info.php');
 
 
 
 
 
 
 
 
185
  }
186
 
187
 
assets/_build/_compiler/acf-field-group.js DELETED
@@ -1,7 +0,0 @@
1
- // @codekit-prepend "../js/field-group.js";
2
- // @codekit-prepend "../js/field-group-field.js";
3
- // @codekit-prepend "../js/field-group-settings.js";
4
- // @codekit-prepend "../js/field-group-conditions.js";
5
- // @codekit-prepend "../js/field-group-fields.js";
6
- // @codekit-prepend "../js/field-group-locations.js";
7
- // @codekit-prepend "../js/field-group-compatibility.js";
 
 
 
 
 
 
 
assets/_build/_compiler/acf-field-group.min.js DELETED
@@ -1,7 +0,0 @@
1
- // @codekit-prepend "../js/field-group.js";
2
- // @codekit-prepend "../js/field-group-field.js";
3
- // @codekit-prepend "../js/field-group-settings.js";
4
- // @codekit-prepend "../js/field-group-conditions.js";
5
- // @codekit-prepend "../js/field-group-fields.js";
6
- // @codekit-prepend "../js/field-group-locations.js";
7
- // @codekit-prepend "../js/field-group-compatibility.js";
 
 
 
 
 
 
 
assets/_build/_compiler/acf-input.js DELETED
@@ -1,45 +0,0 @@
1
- // @codekit-prepend "../js/acf.js";
2
- // @codekit-prepend "../js/acf-hooks.js";
3
- // @codekit-prepend "../js/acf-model.js";
4
- // @codekit-prepend "../js/acf-popup.js";
5
- // @codekit-prepend "../js/acf-unload.js";
6
- // @codekit-prepend "../js/acf-panel.js";
7
- // @codekit-prepend "../js/acf-notice.js";
8
- // @codekit-prepend "../js/acf-postbox.js";
9
- // @codekit-prepend "../js/acf-tooltip.js";
10
- // @codekit-prepend "../js/acf-field.js";
11
- // @codekit-prepend "../js/acf-fields.js";
12
- // @codekit-prepend "../js/acf-field-accordion.js";
13
- // @codekit-prepend "../js/acf-field-button-group.js";
14
- // @codekit-prepend "../js/acf-field-checkbox.js";
15
- // @codekit-prepend "../js/acf-field-color-picker.js";
16
- // @codekit-prepend "../js/acf-field-date-picker.js";
17
- // @codekit-prepend "../js/acf-field-date-time-picker.js";
18
- // @codekit-prepend "../js/acf-field-google-map.js";
19
- // @codekit-prepend "../js/acf-field-image.js";
20
- // @codekit-prepend "../js/acf-field-file.js";
21
- // @codekit-prepend "../js/acf-field-link.js";
22
- // @codekit-prepend "../js/acf-field-oembed.js";
23
- // @codekit-prepend "../js/acf-field-radio.js";
24
- // @codekit-prepend "../js/acf-field-range.js";
25
- // @codekit-prepend "../js/acf-field-relationship.js";
26
- // @codekit-prepend "../js/acf-field-select.js";
27
- // @codekit-prepend "../js/acf-field-tab.js";
28
- // @codekit-prepend "../js/acf-field-post-object.js";
29
- // @codekit-prepend "../js/acf-field-page-link.js";
30
- // @codekit-prepend "../js/acf-field-user.js";
31
- // @codekit-prepend "../js/acf-field-taxonomy.js";
32
- // @codekit-prepend "../js/acf-field-time-picker.js";
33
- // @codekit-prepend "../js/acf-field-true-false.js";
34
- // @codekit-prepend "../js/acf-field-url.js";
35
- // @codekit-prepend "../js/acf-field-wysiwyg.js";
36
- // @codekit-prepend "../js/acf-condition.js";
37
- // @codekit-prepend "../js/acf-conditions.js";
38
- // @codekit-prepend "../js/acf-condition-types.js";
39
- // @codekit-prepend "../js/acf-media.js";
40
- // @codekit-prepend "../js/acf-screen.js";
41
- // @codekit-prepend "../js/acf-select2.js";
42
- // @codekit-prepend "../js/acf-tinymce.js";
43
- // @codekit-prepend "../js/acf-validation.js";
44
- // @codekit-prepend "../js/acf-helpers.js";
45
- // @codekit-prepend "../js/acf-compatibility";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/_compiler/acf-input.min.js DELETED
@@ -1,45 +0,0 @@
1
- // @codekit-prepend "../js/acf.js";
2
- // @codekit-prepend "../js/acf-hooks.js";
3
- // @codekit-prepend "../js/acf-model.js";
4
- // @codekit-prepend "../js/acf-popup.js";
5
- // @codekit-prepend "../js/acf-unload.js";
6
- // @codekit-prepend "../js/acf-panel.js";
7
- // @codekit-prepend "../js/acf-notice.js";
8
- // @codekit-prepend "../js/acf-postbox.js";
9
- // @codekit-prepend "../js/acf-tooltip.js";
10
- // @codekit-prepend "../js/acf-field.js";
11
- // @codekit-prepend "../js/acf-fields.js";
12
- // @codekit-prepend "../js/acf-field-accordion.js";
13
- // @codekit-prepend "../js/acf-field-button-group.js";
14
- // @codekit-prepend "../js/acf-field-checkbox.js";
15
- // @codekit-prepend "../js/acf-field-color-picker.js";
16
- // @codekit-prepend "../js/acf-field-date-picker.js";
17
- // @codekit-prepend "../js/acf-field-date-time-picker.js";
18
- // @codekit-prepend "../js/acf-field-google-map.js";
19
- // @codekit-prepend "../js/acf-field-image.js";
20
- // @codekit-prepend "../js/acf-field-file.js";
21
- // @codekit-prepend "../js/acf-field-link.js";
22
- // @codekit-prepend "../js/acf-field-oembed.js";
23
- // @codekit-prepend "../js/acf-field-radio.js";
24
- // @codekit-prepend "../js/acf-field-range.js";
25
- // @codekit-prepend "../js/acf-field-relationship.js";
26
- // @codekit-prepend "../js/acf-field-select.js";
27
- // @codekit-prepend "../js/acf-field-tab.js";
28
- // @codekit-prepend "../js/acf-field-post-object.js";
29
- // @codekit-prepend "../js/acf-field-page-link.js";
30
- // @codekit-prepend "../js/acf-field-user.js";
31
- // @codekit-prepend "../js/acf-field-taxonomy.js";
32
- // @codekit-prepend "../js/acf-field-time-picker.js";
33
- // @codekit-prepend "../js/acf-field-true-false.js";
34
- // @codekit-prepend "../js/acf-field-url.js";
35
- // @codekit-prepend "../js/acf-field-wysiwyg.js";
36
- // @codekit-prepend "../js/acf-condition.js";
37
- // @codekit-prepend "../js/acf-conditions.js";
38
- // @codekit-prepend "../js/acf-condition-types.js";
39
- // @codekit-prepend "../js/acf-media.js";
40
- // @codekit-prepend "../js/acf-screen.js";
41
- // @codekit-prepend "../js/acf-select2.js";
42
- // @codekit-prepend "../js/acf-tinymce.js";
43
- // @codekit-prepend "../js/acf-validation.js";
44
- // @codekit-prepend "../js/acf-helpers.js";
45
- // @codekit-prepend "../js/acf-compatibility";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/css/acf-dark.less DELETED
@@ -1,401 +0,0 @@
1
- /**
2
- * acf-dark.scss
3
- *
4
- * Dark Mode Styles for ACF.
5
- * WordPress plugin: https://en-au.wordpress.org/plugins/dark-mode/
6
- * Github Documentation: https://github.com/danieltj27/Dark-Mode/wiki/Help:-Plugin-Compatibility-Guide
7
- *
8
- * @date 14/8/18
9
- * @since 5.7.3
10
- */
11
-
12
- @white: #ffffff;
13
- @black: #000000;
14
- @blue: #0073aa;
15
- @medium-blue: #00a0d2;
16
- @clear: transparent;
17
-
18
- @accent-red: #dc3232;
19
- @accent-orange: #f56e28;
20
- @accent-yellow: #ffb900;
21
- @accent-green: #46b450;
22
- @accent-blue: @blue;
23
- @accent-purple: #826eb4;
24
-
25
- @base-grey: #23282d;
26
- @light-grey: #bbc8d4;
27
- @heavy-grey: #37444c;
28
- @dark-grey: #32373c;
29
- @ultra-grey: #191f25;
30
- @dark-silver: #50626f;
31
- @base-blue: #2e74aa;
32
- @light-blue: #4092d2;
33
- @dark-blue: #2c5f88;
34
- @ultra-blue: #1f3f58;
35
- @bright-blue: #30ceff;
36
-
37
- @editor-lavender: #c678dd;
38
- @editor-sunglo: #e06c75;
39
- @editor-olivine: #98c379;
40
-
41
- @body_text: #bbc8d4;
42
- @body_background: #23282d;
43
- @body_background2: #191f25;
44
- @postbox_background: #32373c;
45
- @postbox_border: #191f25;
46
- @postbox_divider: #23282d;
47
- @input_background: #50626f;
48
- @input_text: #fff;
49
- @input_border: #191f25;
50
-
51
- .dark-text() {
52
- color: @body_text;
53
- }
54
- .dark-heading() {
55
- color: @body_text;
56
- }
57
- .dark-border() {
58
- border-color: @postbox_border;
59
- }
60
- .dark-background() {
61
- background: @body_background;
62
- }
63
- .darker-background() {
64
- background: darken(@body_background, 5%);
65
- }
66
- .dark-postbox() {
67
- background-color: @postbox_background;
68
- border-color: @postbox_border;
69
- color: @body_text;
70
- }
71
- .dark-postbox-block() {
72
- background-color: #2d3136;
73
- border-color: @postbox_divider;
74
- }
75
- .dark-divider() {
76
- border-color: @postbox_divider;
77
- }
78
- .dark-input() {
79
- background-color: @input_background;
80
- border-color: @input_border;
81
- color: @input_text;
82
- }
83
-
84
-
85
- /*---------------------------------------------------------------------------------------------
86
- *
87
- * Global
88
- *
89
- *---------------------------------------------------------------------------------------------*/
90
-
91
- // acf-box
92
- .acf-box {
93
- .dark-postbox();
94
-
95
- .title,
96
- .footer {
97
- .dark-divider();
98
- }
99
-
100
- h2 {
101
- .dark-heading();
102
- }
103
-
104
- table, tbody, tr {
105
- background: transparent !important;
106
- }
107
- }
108
-
109
- // thead
110
- .acf-thead {
111
- .dark-heading();
112
- .dark-border();
113
- }
114
- .acf-tfoot {
115
- .dark-postbox-block();
116
- }
117
-
118
- // table clear
119
- .acf-table.-clear,
120
- .acf-table.-clear tr {
121
- background: transparent !important;
122
- }
123
-
124
- // loading overlay
125
- .acf-loading-overlay {
126
- background: rgba(0,0,0,0.5);
127
- }
128
-
129
-
130
- /*---------------------------------------------------------------------------------------------
131
- *
132
- * Fields
133
- *
134
- *---------------------------------------------------------------------------------------------*/
135
-
136
- // fields
137
- .acf-fields {
138
-
139
- // field
140
- > .acf-field {
141
- .dark-divider();
142
- }
143
- }
144
-
145
- // fields (left)
146
- .acf-fields.-left {
147
-
148
- > .acf-field {
149
- &:before {
150
- background: rgba(0,0,0,0.1);
151
- .dark-divider();
152
- }
153
- }
154
- }
155
-
156
- // fields (border)
157
- .acf-fields.-border {
158
- .dark-postbox();
159
- }
160
-
161
- // width
162
- .acf-field[data-width] + .acf-field[data-width] {
163
- .dark-divider();
164
- }
165
-
166
- // text
167
- .acf-input-prepend,
168
- .acf-input-append {
169
- .dark-postbox();
170
- }
171
-
172
- // tab
173
- .acf-tab-wrap {
174
-
175
-
176
- }
177
-
178
- .acf-fields > .acf-tab-wrap {
179
- .dark-postbox();
180
-
181
- .acf-tab-group {
182
- .dark-postbox-block();
183
-
184
- li {
185
- a {
186
- .dark-postbox-block();
187
-
188
- &:hover {
189
- .dark-postbox-block();
190
- .dark-text();
191
- }
192
- }
193
-
194
- &.active a {
195
- .dark-postbox();
196
- }
197
- }
198
-
199
- }
200
- }
201
-
202
- // file
203
- .acf-file-uploader {
204
-
205
- .show-if-value {
206
- .dark-postbox();
207
-
208
- .file-icon {
209
- .dark-postbox-block();
210
- }
211
- }
212
- }
213
-
214
- // acf-oembed
215
- .acf-oembed {
216
- .dark-postbox-block();
217
-
218
- .title {
219
- .dark-input();
220
- }
221
- }
222
-
223
- // gallery
224
- .acf-gallery {
225
- .dark-postbox-block();
226
-
227
- .acf-gallery-main {
228
- .dark-background();
229
- }
230
-
231
- .acf-gallery-attachment {
232
- .margin {
233
- .dark-postbox-block();
234
- }
235
- }
236
-
237
- .acf-gallery-side {
238
- .dark-postbox-block();
239
-
240
- .acf-gallery-side-info {
241
- .dark-postbox-block();
242
- }
243
- }
244
-
245
- .acf-gallery-toolbar {
246
- .dark-postbox-block();
247
- }
248
- }
249
-
250
- // button group
251
- .acf-button-group {
252
-
253
- label:not(.selected) {
254
- .dark-postbox-block();
255
- }
256
- }
257
-
258
- // switch
259
- .acf-switch:not(.-on) {
260
- .dark-postbox-block();
261
- .acf-switch-slider {
262
- .dark-input();
263
- }
264
- }
265
-
266
- // link
267
- .acf-link .link-wrap {
268
- .dark-postbox-block();
269
- }
270
-
271
- // relationship
272
- .acf-relationship {
273
- .filters {
274
- .dark-postbox();
275
- }
276
- .selection {
277
- .dark-postbox-block();
278
- .choices,
279
- .choices-list,
280
- .values {
281
- .dark-postbox-block();
282
- }
283
- }
284
- }
285
-
286
- // checkbox
287
- .acf-taxonomy-field .categorychecklist-holder {
288
- .dark-postbox-block();
289
- }
290
-
291
- // google map
292
- .acf-google-map {
293
- .dark-postbox-block();
294
-
295
- .title {
296
- .dark-input();
297
- }
298
- }
299
-
300
- // accordion
301
- .acf-accordion {
302
- .dark-postbox();
303
- }
304
- .acf-field.acf-accordion .acf-accordion-content > .acf-fields {
305
- .dark-border();
306
- }
307
-
308
- // flexible content
309
- .acf-flexible-content {
310
- .layout {
311
- .dark-postbox();
312
-
313
- .acf-fc-layout-handle {
314
- .dark-postbox-block();
315
- }
316
- }
317
- }
318
-
319
- // repeater
320
- #wpbody .acf-repeater {
321
- > .acf-table {
322
- .dark-postbox-block();
323
-
324
- > tbody,
325
- > thead {
326
- > tr {
327
- background: transparent;
328
-
329
- > td,
330
- > th {
331
- .dark-border();
332
- }
333
- }
334
- }
335
- }
336
- }
337
-
338
- /*---------------------------------------------------------------------------------------------
339
- *
340
- * Field Group
341
- *
342
- *---------------------------------------------------------------------------------------------*/
343
-
344
- // fields
345
- #acf-field-group-fields {
346
-
347
- // field list
348
- .acf-field-list-wrap {
349
- .dark-postbox();
350
- }
351
-
352
- // field
353
- .acf-field-object {
354
- .dark-postbox();
355
- .dark-divider();
356
-
357
-
358
- table, tbody, tr, td, th {
359
- background: transparent;
360
- .dark-divider();
361
- }
362
-
363
- .acf-field {
364
- .acf-label {
365
- .dark-postbox-block();
366
- }
367
- }
368
-
369
- // sortable
370
- &.ui-sortable-helper {
371
- .dark-border();
372
- box-shadow: none;
373
- }
374
-
375
- &.ui-sortable-placeholder {
376
- .dark-postbox-block();
377
- box-shadow: none;
378
- }
379
- }
380
-
381
- .acf-field-object + .acf-field-object-tab::before,
382
- .acf-field-object + .acf-field-object-accordion::before {
383
- .dark-postbox-block();
384
- }
385
- }
386
-
387
-
388
- /*---------------------------------------------------------------------------------------------
389
- *
390
- * Admin: Tools
391
- *
392
- *---------------------------------------------------------------------------------------------*/
393
-
394
- // tools
395
- .acf-meta-box-wrap {
396
-
397
- .acf-fields {
398
- .dark-input();
399
- background: transparent;
400
- }
401
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/css/field-group.less DELETED
@@ -1,602 +0,0 @@
1
- @import '../css/vars.less';
2
-
3
-
4
- /*---------------------------------------------------------------------------------------------
5
- *
6
- * Global
7
- *
8
- *---------------------------------------------------------------------------------------------*/
9
-
10
- #adv-settings .show-field-keys label {
11
- padding: 0 5px;
12
- }
13
-
14
-
15
- #acf-field-group-fields > .inside,
16
- #acf-field-group-locations > .inside,
17
- #acf-field-group-options > .inside {
18
- padding: 0;
19
- margin: 0;
20
- }
21
-
22
- .acf-field {
23
-
24
- p.description {
25
- font-style: normal;
26
- font-size: 12px;
27
- color: #777777;
28
- }
29
-
30
- }
31
-
32
-
33
- /*---------------------------------------------------------------------------------------------
34
- *
35
- * Postbox: Publish
36
- *
37
- *---------------------------------------------------------------------------------------------*/
38
-
39
- #minor-publishing-actions,
40
- #misc-publishing-actions #visibility {
41
- display: none;
42
- }
43
-
44
- #minor-publishing {
45
- border-bottom: 0 none;
46
- }
47
-
48
- #misc-pub-section {
49
- border-bottom: 0 none;
50
- }
51
-
52
- #misc-publishing-actions .misc-pub-section {
53
- border-bottom-color: #F5F5F5;
54
- }
55
-
56
-
57
- /*---------------------------------------------------------------------------------------------
58
- *
59
- * Postbox: Fields
60
- *
61
- *---------------------------------------------------------------------------------------------*/
62
-
63
- #acf-field-group-fields {
64
- border: 0 none;
65
- box-shadow: none;
66
-
67
-
68
- /* metabox */
69
- > .handlediv,
70
- > .hndle {
71
- display: none;
72
- }
73
-
74
-
75
- /* links */
76
- a {
77
- text-decoration: none;
78
-
79
- &:active,
80
- &:focus {
81
- outline: none;
82
- box-shadow: none;
83
- }
84
- }
85
-
86
-
87
- /* table header */
88
- .li-field-order { width: 20%; }
89
- .li-field-label { width: 30%; }
90
- .li-field-name { width: 25%; }
91
- .li-field-type { width: 25%; }
92
- .li-field-key { display: none; }
93
-
94
-
95
- /* show keys */
96
- &.show-field-keys {
97
-
98
- .li-field-label,
99
- .li-field-name,
100
- .li-field-type,
101
- .li-field-key { width: 20%; }
102
- .li-field-key { display: block; }
103
- }
104
-
105
-
106
- /* fields */
107
- .acf-field-list-wrap {
108
- border: #DFDFDF solid 1px;
109
- }
110
-
111
- .acf-field-list {
112
- background: #F9F9F9;
113
- margin-top: -1px;
114
-
115
- /* no fields */
116
- .no-fields-message {
117
- padding: 15px 15px;
118
- background: #fff;
119
- display: none;
120
- }
121
-
122
- /* empty */
123
- &.-empty {
124
- .no-fields-message {
125
- display: block;
126
- }
127
- }
128
- }
129
-
130
- }
131
-
132
-
133
- /* field object */
134
- .acf-field-object {
135
- border-top: #F0F0F0 solid 1px;
136
- background: #fff;
137
-
138
- /* sortable */
139
- &.ui-sortable-helper {
140
- border-top-color: #fff;
141
- box-shadow: 0 0 0 1px #DFDFDF, 0 1px 4px rgba(0,0,0,0.1);
142
- }
143
-
144
- &.ui-sortable-placeholder {
145
- box-shadow: 0 -1px 0 0 #DFDFDF;
146
- visibility: visible !important;
147
- background: #F9F9F9;
148
- border-top-color: transparent;
149
- min-height: 54px;
150
-
151
- // hide tab field separator
152
- &:after, &:before {
153
- visibility: hidden;
154
- }
155
- }
156
-
157
-
158
- /* meta */
159
- > .meta {
160
- display: none;
161
- }
162
-
163
-
164
- /* handle */
165
- > .handle {
166
-
167
- a {
168
- -webkit-transition: none;
169
- -moz-transition: none;
170
- -o-transition: none;
171
- transition: none;
172
- }
173
-
174
- li {
175
- padding-top: 10px;
176
- padding-bottom: 10px;
177
- word-wrap: break-word;
178
- }
179
-
180
- .acf-icon {
181
- margin: 1px 0 0;
182
- cursor: move;
183
- background: transparent;
184
- float: left;
185
-
186
- height: 28px;
187
- line-height: 28px;
188
- width: 28px;
189
- font-size: 13px;
190
- color: #444;
191
- position: relative;
192
- z-index: 1;
193
- }
194
-
195
- strong {
196
- display: block;
197
- padding-bottom: 6px;
198
- font-size: 14px;
199
- line-height: 14px;
200
- min-height: 14px;
201
- }
202
-
203
- .row-options {
204
- visibility: hidden;
205
-
206
- a {
207
- margin-right: 4px;
208
- }
209
-
210
- a.delete-field {
211
- color: #a00;
212
-
213
- &:hover { color: #f00; }
214
- }
215
- }
216
-
217
- }
218
-
219
- /* open */
220
- &.open {
221
-
222
- + .acf-field-object {
223
- border-top-color: #E1E1E1;
224
- }
225
-
226
- > .handle {
227
- background: @acf_blue;
228
- border: darken(@acf_blue, 2%) solid 1px;
229
- text-shadow: #268FBB 0 1px 0;
230
- color: #fff;
231
- position: relative;
232
- margin: -1px -1px 0 -1px;
233
-
234
- a {
235
- color: #fff !important;
236
-
237
- &:hover {
238
- text-decoration: underline !important;
239
- }
240
- }
241
-
242
- .acf-icon {
243
- border-color: #fff;
244
- color: #fff;
245
- }
246
-
247
- .acf-required {
248
- color: #fff;
249
- }
250
- }
251
- }
252
-
253
-
254
- /*
255
- // debug
256
- &[data-save="meta"] {
257
- > .handle {
258
- border-left: #ffb700 solid 5px !important;
259
- }
260
- }
261
-
262
- &[data-save="settings"] {
263
- > .handle {
264
- border-left: #0ec563 solid 5px !important;
265
- }
266
- }
267
- */
268
-
269
-
270
- /* hover */
271
- &:hover, &.-hover {
272
-
273
- > .handle {
274
-
275
- .row-options {
276
- visibility: visible;
277
- }
278
-
279
- }
280
- }
281
-
282
-
283
- /* settings */
284
- > .settings {
285
- display: none;
286
- width: 100%;
287
-
288
- > .acf-table {
289
- border: none;
290
- }
291
- }
292
-
293
-
294
- /* conditional logic */
295
- .rule-groups {
296
- margin-top: 20px;
297
- }
298
-
299
- }
300
-
301
-
302
- /*---------------------------------------------------------------------------------------------
303
- *
304
- * Postbox: Locations
305
- *
306
- *---------------------------------------------------------------------------------------------*/
307
-
308
- .rule-groups {
309
-
310
- h4 {
311
- margin: 15px 0 5px;
312
- }
313
-
314
- .rule-group {
315
- margin: 0 0 5px;
316
-
317
- h4 {
318
- margin: 0 0 3px;
319
- }
320
-
321
- td.param {
322
- width: 35%;
323
- }
324
-
325
- td.operator {
326
- width: 20%;
327
- }
328
-
329
- td.add {
330
- width: 40px;
331
- }
332
-
333
- td.remove {
334
- width: 28px;
335
- vertical-align: middle;
336
-
337
- a {
338
- visibility: hidden;
339
- }
340
- }
341
-
342
- tr:hover td.remove a {
343
- visibility: visible;
344
- }
345
-
346
- /* Don't allow user to delete the first field group */
347
- &:first-child tr:first-child td.remove a {
348
- visibility: hidden !important;
349
- }
350
-
351
- // empty select
352
- select:empty {
353
- background: #f8f8f8;
354
- }
355
- }
356
- }
357
-
358
-
359
- /*---------------------------------------------------------------------------------------------
360
- *
361
- * Options
362
- *
363
- *---------------------------------------------------------------------------------------------*/
364
-
365
- #acf-field-group-options tr[data-name="hide_on_screen"] li {
366
- float: left;
367
- width: 33%;
368
- }
369
-
370
- @media (max-width: 1100px) {
371
-
372
- #acf-field-group-options tr[data-name="hide_on_screen"] li {
373
- width: 50%;
374
- }
375
-
376
- }
377
-
378
-
379
- /*---------------------------------------------------------------------------------------------
380
- *
381
- * Conditional Logic
382
- *
383
- *---------------------------------------------------------------------------------------------*/
384
-
385
- table.conditional-logic-rules {
386
- background: transparent;
387
- border: 0 none;
388
- border-radius: 0;
389
- }
390
-
391
- table.conditional-logic-rules tbody td {
392
- background: transparent;
393
- border: 0 none !important;
394
- padding: 5px 2px !important;
395
- }
396
-
397
-
398
- /*---------------------------------------------------------------------------------------------
399
- *
400
- * Field: Tab
401
- *
402
- *---------------------------------------------------------------------------------------------*/
403
-
404
- .acf-field-object-tab {
405
-
406
- // hide setting
407
- .acf-field-setting-name,
408
- .acf-field-setting-instructions,
409
- .acf-field-setting-required,
410
- .acf-field-setting-warning,
411
- .acf-field-setting-wrapper {
412
- display: none;
413
- }
414
-
415
- // hide name
416
- .li-field-name {
417
- visibility: hidden;
418
- }
419
-
420
- // add spacer
421
- .acf-field-object + & {
422
-
423
- &:before {
424
- display: block;
425
- content: "";
426
- height: 5px;
427
- width: 100%;
428
- background: #f9f9f9;
429
- border-bottom: #f0f0f0 solid 1px;
430
- }
431
- }
432
-
433
- p:first-child {
434
- margin: 0.5em 0;
435
- }
436
- }
437
-
438
-
439
- /*---------------------------------------------------------------------------------------------
440
- *
441
- * Field: Accordion
442
- *
443
- *---------------------------------------------------------------------------------------------*/
444
-
445
- .acf-field-object-accordion:extend( .acf-field-object-tab all ) {
446
-
447
- // show settings
448
- .acf-field-setting-instructions {
449
- display: table-row;
450
- }
451
-
452
- }
453
-
454
-
455
- /*---------------------------------------------------------------------------------------------
456
- *
457
- * Field: Message
458
- *
459
- *---------------------------------------------------------------------------------------------*/
460
-
461
- .acf-field-object-message tr[data-name="name"],
462
- .acf-field-object-message tr[data-name="instructions"],
463
- .acf-field-object-message tr[data-name="required"] {
464
- display: none !important;
465
- }
466
-
467
- .acf-field-object-message .li-field-name {
468
- visibility: hidden;
469
- }
470
-
471
- .acf-field-object-message textarea {
472
- height: 175px !important;
473
- }
474
-
475
-
476
- /*---------------------------------------------------------------------------------------------
477
- *
478
- * Field: Separator
479
- *
480
- *---------------------------------------------------------------------------------------------*/
481
-
482
- .acf-field-object-separator tr[data-name="name"],
483
- .acf-field-object-separator tr[data-name="instructions"],
484
- .acf-field-object-separator tr[data-name="required"] {
485
- display: none !important;
486
- }
487
-
488
-
489
- /*---------------------------------------------------------------------------------------------
490
- *
491
- * Field: Date Picker
492
- *
493
- *---------------------------------------------------------------------------------------------*/
494
-
495
- .acf-field-object-date-picker,
496
- .acf-field-object-time-picker,
497
- .acf-field-object-date-time-picker {
498
-
499
- .acf-radio-list {
500
-
501
- li {
502
- line-height: 25px;
503
- }
504
-
505
- span {
506
- display: inline-block;
507
- min-width: 10em;
508
- }
509
-
510
- input[type="text"] {
511
- width: 100px;
512
- }
513
- }
514
-
515
- }
516
-
517
- .acf-field-object-date-time-picker {
518
-
519
- .acf-radio-list {
520
-
521
- span {
522
- min-width: 15em;
523
- }
524
-
525
- input[type="text"] {
526
- width: 200px;
527
- }
528
- }
529
-
530
- }
531
-
532
-
533
- /*--------------------------------------------------------------------------------------------
534
- *
535
- * Slug
536
- *
537
- *--------------------------------------------------------------------------------------------*/
538
-
539
- #slugdiv {
540
-
541
- .inside {
542
- padding: 12px;
543
- margin: 0;
544
- }
545
-
546
- input[type="text"] {
547
- width: 100%;
548
- height: 28px;
549
- font-size: 14px;
550
- }
551
- }
552
-
553
-
554
- /*--------------------------------------------------------------------------------------------
555
- *
556
- * RTL
557
- *
558
- *--------------------------------------------------------------------------------------------*/
559
-
560
- html[dir="rtl"] .acf-field-object.open > .handle {
561
- margin: -1px -1px 0;
562
- }
563
-
564
- html[dir="rtl"] .acf-field-object.open > .handle .acf-icon {
565
- float: right;
566
- }
567
-
568
- html[dir="rtl"] .acf-field-object.open > .handle .li-field-order {
569
- padding-left: 0 !important;
570
- padding-right: 15px !important;
571
- }
572
-
573
-
574
- /*---------------------------------------------------------------------------------------------
575
- *
576
- * Device
577
- *
578
- *---------------------------------------------------------------------------------------------*/
579
-
580
- @media only screen and (max-width: 850px) {
581
-
582
- tr.acf-field,
583
- td.acf-label,
584
- td.acf-input {
585
- display: block !important;
586
- width: auto !important;
587
- border: 0 none !important;
588
- }
589
-
590
- tr.acf-field {
591
- border-top: #ededed solid 1px !important;
592
- margin-bottom: 0 !important;
593
- }
594
-
595
- td.acf-label {
596
- background: transparent !important;
597
- padding-bottom: 0 !important;
598
-
599
- }
600
-
601
- }
602
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/css/global.less DELETED
@@ -1,1815 +0,0 @@
1
- @import '../css/vars.less';
2
-
3
-
4
- /*--------------------------------------------------------------------------------------------
5
- *
6
- * General
7
- *
8
- *--------------------------------------------------------------------------------------------*/
9
-
10
- /* Horizontal List */
11
- .acf-hl { padding: 0; margin: 0; list-style: none; display: block; position: relative; }
12
- .acf-hl > li { float: left; display: block; margin: 0; padding: 0; }
13
- .acf-hl > li.acf-fr { float: right; }
14
-
15
-
16
- /* Horizontal List: Clearfix */
17
- .acf-hl:before, .acf-hl:after,
18
- .acf-bl:before, .acf-bl:after,
19
- .acf-cf:before, .acf-cf:after {
20
- content: "";
21
- display: block;
22
- line-height: 0;
23
- }
24
- .acf-hl:after,
25
- .acf-bl:after,
26
- .acf-cf:after {
27
- clear: both;
28
- }
29
-
30
-
31
- /* Block List */
32
- .acf-bl { padding: 0; margin: 0; list-style: none; display: block; position: relative; }
33
- .acf-bl > li { display: block; margin: 0; padding: 0; float: none; }
34
-
35
-
36
- /* Visibility */
37
- .acf-hidden {
38
- display: none !important;
39
- }
40
- .acf-empty {
41
- display: table-cell !important;
42
- * { display: none !important; }
43
- }
44
-
45
- /* Float */
46
- .acf-fl { float: left; }
47
- .acf-fr { float: right; }
48
- .acf-fn { float: none; }
49
-
50
-
51
- /* Align */
52
- .acf-al { text-align: left; }
53
- .acf-ar { text-align: right; }
54
- .acf-ac { text-align: center; }
55
-
56
-
57
- /* loading */
58
- .acf-loading,
59
- .acf-spinner {
60
- display: inline-block;
61
- height: 20px;
62
- width: 20px;
63
- vertical-align: text-top;
64
- background: transparent url(../images/spinner.gif) no-repeat 50% 50%;
65
- }
66
-
67
-
68
- /* spinner */
69
- .acf-spinner {
70
- display: none;
71
- }
72
-
73
- .acf-spinner.is-active {
74
- display: inline-block;
75
- }
76
-
77
-
78
- /* WP < 4.2 */
79
- .spinner.is-active {
80
- display: inline-block;
81
- }
82
-
83
-
84
- /* required */
85
- .acf-required {
86
- color: #f00;
87
- }
88
-
89
-
90
- /* show on hover */
91
- .acf-soh .acf-soh-target {
92
- -webkit-transition: opacity 0.25s 0s ease-in-out, visibility 0s linear 0.25s;
93
- -moz-transition: opacity 0.25s 0s ease-in-out, visibility 0s linear 0.25s;
94
- -o-transition: opacity 0.25s 0s ease-in-out, visibility 0s linear 0.25s;
95
- transition: opacity 0.25s 0s ease-in-out, visibility 0s linear 0.25s;
96
-
97
- visibility: hidden;
98
- opacity: 0;
99
- }
100
-
101
- .acf-soh:hover .acf-soh-target {
102
- -webkit-transition-delay:0s;
103
- -moz-transition-delay:0s;
104
- -o-transition-delay:0s;
105
- transition-delay:0s;
106
-
107
- visibility: visible;
108
- opacity: 1;
109
- }
110
-
111
-
112
- /* show if value */
113
- .show-if-value { display: none; }
114
- .hide-if-value { display: block; }
115
-
116
- .has-value .show-if-value { display: block; }
117
- .has-value .hide-if-value { display: none; }
118
-
119
-
120
- /* select2 WP animation fix */
121
- .select2-search-choice-close {
122
- -webkit-transition: none;
123
- -moz-transition: none;
124
- -o-transition: none;
125
- transition: none;
126
- }
127
-
128
-
129
- /*---------------------------------------------------------------------------------------------
130
- *
131
- * tooltip
132
- *
133
- *---------------------------------------------------------------------------------------------*/
134
-
135
- /* tooltip */
136
- .acf-tooltip {
137
- background: #2F353E;
138
- border-radius: 5px;
139
- color: #fff;
140
- padding: 5px 10px;
141
- position: absolute;
142
- font-size: 12px;
143
- line-height: 1.4em;
144
- z-index: 900000;
145
-
146
-
147
- /* tip */
148
- &:before {
149
- border: solid;
150
- border-color: transparent;
151
- border-width: 6px;
152
- content: "";
153
- position: absolute;
154
- }
155
-
156
-
157
- /* positions */
158
- &.top {
159
- margin-top: -8px;
160
-
161
- &:before {
162
- top: 100%;
163
- left: 50%;
164
- margin-left: -6px;
165
- border-top-color: #2F353E;
166
- border-bottom-width: 0;
167
- }
168
- }
169
-
170
- &.right {
171
- margin-right: -8px;
172
-
173
- &:before {
174
- top: 50%;
175
- margin-top: -6px;
176
- right: 100%;
177
- border-right-color: #2F353E;
178
- border-left-width: 0;
179
- }
180
- }
181
-
182
- &.bottom {
183
- margin-bottom: -8px;
184
-
185
- &:before {
186
- bottom: 100%;
187
- left: 50%;
188
- margin-left: -6px;
189
- border-bottom-color: #2F353E;
190
- border-top-width: 0;
191
- }
192
- }
193
-
194
- &.left {
195
- margin-left: -8px;
196
-
197
- &:before {
198
- top: 50%;
199
- margin-top: -6px;
200
- left: 100%;
201
- border-left-color: #2F353E;
202
- border-right-width: 0;
203
- }
204
- }
205
-
206
- .acf-overlay {
207
- z-index: -1;
208
- }
209
-
210
- }
211
-
212
-
213
- /* confirm */
214
- .acf-tooltip.-confirm {
215
- z-index: 900001; // +1 higher than .acf-tooltip
216
-
217
- a {
218
- text-decoration: none;
219
- color: #9ea3a8;
220
-
221
- &:hover {
222
- text-decoration: underline;
223
- }
224
-
225
- &[data-event="confirm"] {
226
- color: #F55E4F;
227
- }
228
- }
229
- }
230
-
231
- .acf-overlay {
232
- position: fixed;
233
- top: 0;
234
- bottom: 0;
235
- left: 0;
236
- right: 0;
237
- cursor: default;
238
- }
239
-
240
- .acf-tooltip-target {
241
- position: relative;
242
- z-index: 900002; // +1 higher than .acf-tooltip
243
- }
244
-
245
-
246
- /*---------------------------------------------------------------------------------------------
247
- *
248
- * loading
249
- *
250
- *---------------------------------------------------------------------------------------------*/
251
- .acf-loading-overlay {
252
- position: absolute;
253
- top: 0;
254
- bottom: 0;
255
- left: 0;
256
- right: 0;
257
- cursor: default;
258
- z-index: 99;
259
- background: rgba(249, 249, 249, 0.5);
260
-
261
- i {
262
- .centered;
263
- }
264
- }
265
-
266
-
267
- /*---------------------------------------------------------------------------------------------
268
- *
269
- * callout
270
- *
271
- *---------------------------------------------------------------------------------------------*/
272
-
273
- .acf-callout {
274
- margin: 20px 0;
275
- padding: 20px;
276
-
277
- background-color: #FCF8F2;
278
- border-left: 3px solid #F0AD4E;
279
- }
280
-
281
- .acf-callout h4 {
282
- color: #F0AD4E;
283
- margin: 0 !important;
284
- }
285
-
286
- .acf-callout p {
287
- margin-bottom: 0;
288
- }
289
-
290
- .acf-callout.danger {
291
- border-color: #D9534F;
292
- background-color: #FDF7F7;
293
- }
294
-
295
- .acf-callout.danger h4 {
296
- color: #D9534F;
297
- }
298
-
299
- .acf-callout.success {
300
- background-color: #f4faf6;
301
- border-color: #bcf1c5;
302
- }
303
-
304
- .acf-callout.success h4 {
305
- color: #3aad60;
306
- }
307
-
308
-
309
- /*--------------------------------------------------------------------------------------------
310
- *
311
- * acf-icon
312
- *
313
- *--------------------------------------------------------------------------------------------*/
314
-
315
- @font-face {
316
- font-family: 'acf';
317
- src: url('../font/acf.eot?57601716');
318
- src: url('../font/acf.eot?57601716#iefix') format('embedded-opentype'),
319
- url('../font/acf.woff2?57601716') format('woff2'),
320
- url('../font/acf.woff?57601716') format('woff'),
321
- url('../font/acf.ttf?57601716') format('truetype'),
322
- url('../font/acf.svg?57601716#acf') format('svg');
323
- font-weight: normal;
324
- font-style: normal;
325
- }
326
-
327
- .acf-icon:before {
328
- font-family: "acf";
329
- font-style: normal;
330
- font-weight: normal;
331
- speak: none;
332
-
333
- display: inline-block;
334
- text-decoration: inherit;
335
- width: 1em;
336
- // margin-right: .2em;
337
- text-align: center;
338
- /* opacity: .8; */
339
-
340
- /* For safety - reset parent styles, that can break glyph codes*/
341
- font-variant: normal;
342
- text-transform: none;
343
-
344
- /* fix buttons height, for twitter bootstrap */
345
- line-height: 1em;
346
-
347
- /* Font smoothing. That was taken from TWBS */
348
- -webkit-font-smoothing: antialiased;
349
- -moz-osx-font-smoothing: grayscale;
350
-
351
- /* more consistent vertical align */
352
- position: relative;
353
- }
354
-
355
- .acf-icon.-plus:before { content: '\e800'; } /* '' */
356
- .acf-icon.-minus:before { content: '\e801'; } /* '' */
357
- .acf-icon.-cancel:before { content: '\e802'; } /* '' */
358
- .acf-icon.-pencil:before { content: '\e803'; top: -1px; } /* '' */
359
- .acf-icon.-location:before { content: '\e804'; } /* '' */
360
- .acf-icon.-down:before { content: '\e805'; top: 1px; } /* '' */
361
- .acf-icon.-left:before { content: '\e806'; left: -1px; } /* '' */
362
- .acf-icon.-right:before { content: '\e807'; left: 1px; } /* '' */
363
- .acf-icon.-up:before { content: '\e808'; top: -1px; } /* '' */
364
- .acf-icon.-sync:before { content: '\e809'; } /* '' */
365
- .acf-icon.-globe:before { content: '\e80a'; } /* '' */
366
- .acf-icon.-picture:before { content: '\e80b'; } /* '' */
367
- .acf-icon.-check:before { content: '\e80c'; } /* '' */
368
- .acf-icon.-dot-3:before { content: '\e80d'; } /* '' */
369
- .acf-icon.-arrow-combo:before { content: '\e80e'; } /* '' */
370
- .acf-icon.-arrow-up:before { content: '\e810'; top: -1px; } /* '' */
371
- .acf-icon.-arrow-down:before { content: '\e80f'; top: 1px; } /* '' */
372
- .acf-icon.-search:before { content: '\e811'; } /* '' */
373
- .acf-icon.-link-ext:before { content: '\f08e'; } /* '' */
374
-
375
-
376
- /* collapse */
377
- .acf-icon.-collapse:before { content: '\e810'; top: -1px; } /* arrow-up */
378
- .-collapsed .acf-icon.-collapse:before { content: '\e80f'; top: 1px; } /* arrow-down */
379
-
380
-
381
- /* default */
382
- .acf-icon {
383
- display: inline-block;
384
- height: 26px;
385
- width: 26px;
386
- border: transparent solid 1px;
387
- border-radius: 100%;
388
-
389
- font-size: 16px;
390
- line-height: 26px;
391
- text-align: center;
392
- text-decoration: none;
393
- vertical-align: top;
394
- }
395
-
396
-
397
- /* elements */
398
- span.acf-icon {
399
- color: #999;
400
- border-color: #BBB;
401
- background-color: #fff;
402
- }
403
-
404
-
405
- /* icon */
406
- a.acf-icon {
407
- color: #999;
408
- border-color: #BBB;
409
- background-color: #fff;
410
-
411
- position: relative;
412
- overflow: hidden;
413
- transition: none;
414
-
415
-
416
- /* clear */
417
- &.-clear {
418
- color: #444;
419
- background: transparent;
420
- border: none;
421
- }
422
-
423
-
424
- /* light*/
425
- &.light {
426
- border: none;
427
- padding: 1px;
428
- background: #F5F5F5;
429
- color: #72777c;
430
- }
431
-
432
-
433
- /* states */
434
- &:hover {
435
- border-color: transparent;
436
- background: @acf_blue;
437
- color: #fff;
438
- }
439
-
440
- &:active {
441
- color: #fff;
442
- background-color: darken(@acf_blue, 5%);
443
- }
444
-
445
-
446
- /* remove WP outline box-shadow */
447
- &:active,
448
- &:focus {
449
- outline: none;
450
- box-shadow: none;
451
- }
452
-
453
-
454
- /* red */
455
- &.-minus,
456
- &.-cancel {
457
-
458
- &:hover {
459
- background-color: #F55E4F;
460
- }
461
-
462
- &:active {
463
- background-color: darken(#F55E4F, 5%);
464
- }
465
-
466
- }
467
-
468
- }
469
-
470
-
471
- /* minor tweaks */
472
- .acf-icon.-pencil {
473
- font-size: 15px;
474
- }
475
-
476
- .acf-icon.-location {
477
- font-size: 18px;
478
- }
479
-
480
-
481
- /* sizes */
482
- .acf-icon.small,
483
- .acf-icon.-small {
484
- width: 18px;
485
- height: 18px;
486
- line-height: 18px;
487
- font-size: 14px;
488
- }
489
-
490
-
491
- /* dark */
492
- .acf-icon.dark {
493
- border-color: transparent;
494
- background: #23282D;
495
- color: #eee;
496
- }
497
-
498
- a.acf-icon.dark:hover {
499
- border-color: transparent;
500
- background: #191E23;
501
- color: #00b9eb;
502
- }
503
-
504
- a.acf-icon.-minus.dark:hover,
505
- a.acf-icon.-cancel.dark:hover {
506
- color: #D54E21;
507
- }
508
-
509
-
510
- /* grey */
511
- .acf-icon.grey {
512
- border-color: transparent;
513
- background: #b4b9be;
514
- color: #fff;
515
- }
516
-
517
- a.acf-icon.grey:hover {
518
- border-color: transparent;
519
- background: #00A0D2;
520
- color: #fff;
521
- }
522
-
523
- a.acf-icon.-minus.grey:hover,
524
- a.acf-icon.-cancel.grey:hover {
525
- background: #32373C;
526
- }
527
-
528
-
529
- /* red */
530
- .acf-icon.red {
531
- border-color: transparent;
532
- background-color: #F55E4F;
533
- color: #fff;
534
- }
535
-
536
-
537
- /* yellow */
538
- .acf-icon.yellow {
539
- border-color: transparent;
540
- background-color: #FDBC40;
541
- color: #fff;
542
- }
543
-
544
-
545
- /* logo */
546
- .acf-icon.logo {
547
- width: 150px;
548
- height: 150px;
549
- background: #5EE8BF;
550
-
551
- border: 0 none;
552
- position: absolute;
553
- right: 0;
554
- top: 0;
555
- }
556
-
557
-
558
- /*--------------------------------------------------------------------------------------------
559
- *
560
- * Sprite
561
- *
562
- *--------------------------------------------------------------------------------------------*/
563
-
564
- [class^="acf-sprite-"] {
565
- display: inline-block;
566
- width: 16px;
567
- height: 16px;
568
- background: url(../images/sprite.png);
569
- }
570
-
571
- .acf-icon [class^="acf-sprite-"] {
572
- margin: 1px auto 0;
573
- }
574
-
575
- .acf-sprite-logo {
576
- background-position: 0 0;
577
- width: 100px;
578
- height: 46px;
579
- }
580
-
581
- .acf-icon .acf-sprite-logo {
582
- margin-top: 52px;
583
- }
584
-
585
-
586
- /*--------------------------------------------------------------------------------------------
587
- *
588
- * acf-box
589
- *
590
- *--------------------------------------------------------------------------------------------*/
591
-
592
- .acf-box {
593
- background: #FFFFFF;
594
- border: 1px solid #E5E5E5;
595
- position: relative;
596
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
597
-
598
- /* title */
599
- .title {
600
- border-bottom: 1px solid #EEEEEE;
601
- margin: 0;
602
- padding: 15px;
603
-
604
- h3 {
605
- font-size: 14px;
606
- line-height: 1em;
607
- margin: 0;
608
- padding: 0;
609
- }
610
- }
611
-
612
-
613
- .inner {
614
- padding: 15px;
615
- }
616
-
617
- h2 {
618
- color: #333333;
619
- font-size: 26px;
620
- line-height: 1.25em;
621
- margin: 0.25em 0 0.75em;
622
- padding: 0;
623
- }
624
-
625
- h3 {
626
- margin: 1.5em 0 0;
627
- }
628
-
629
- p {
630
- margin-top: 0.5em;
631
- }
632
-
633
- a {
634
- text-decoration: none;
635
- }
636
-
637
- i {
638
- &.dashicons-external {
639
- margin-top: -1px;
640
- }
641
- }
642
-
643
- /* footer */
644
- .footer {
645
- border-top: 1px solid #eee;
646
- padding: 12px;
647
- font-size: 13px;
648
- line-height: 1.5;
649
-
650
- p {
651
- margin: 0;
652
- }
653
- }
654
- }
655
-
656
- /*--------------------------------------------------------------------------------------------
657
- *
658
- * acf-notice
659
- *
660
- *--------------------------------------------------------------------------------------------*/
661
-
662
- .acf-notice {
663
- position: relative;
664
- display: block;
665
- color: #fff;
666
- margin: 5px 0 15px;
667
- padding: 3px 12px;
668
- background: @acf_notice;
669
- border-left: darken(@acf_notice, 8%) solid 4px;
670
-
671
- p {
672
- font-size: 13px;
673
- line-height: 1.5;
674
- margin: 0.5em 0;
675
- text-shadow: none;
676
- color: inherit;
677
- }
678
-
679
- a.acf-notice-dismiss {
680
- position: absolute;
681
- border-color: transparent;
682
- top: 9px;
683
- right: 12px;
684
- color: #fff;
685
- background: rgba(0,0,0,0.1);
686
-
687
- &:hover {
688
- background: rgba(0,0,0,0.2);
689
- }
690
- }
691
-
692
- // dismiss
693
- &.-dismiss {
694
- padding-right: 40px;
695
- }
696
-
697
- // error
698
- &.-error {
699
- background: @acf_error;
700
- border-color: darken(@acf_error, 8%);
701
- }
702
-
703
- // success
704
- &.-success {
705
- background: @acf_success;
706
- border-color: darken(@acf_success, 8%);
707
- }
708
-
709
- // warning
710
- &.-warning {
711
- background: @acf_warning;
712
- border-color: darken(@acf_warning, 8%);
713
- }
714
- }
715
-
716
-
717
- /*--------------------------------------------------------------------------------------------
718
- *
719
- * acf-table
720
- *
721
- *--------------------------------------------------------------------------------------------*/
722
-
723
- .acf-table {
724
- border: #DFDFDF solid 1px;
725
- background: #fff;
726
- border-spacing: 0;
727
- border-radius: 0;
728
- table-layout: auto;
729
- padding: 0;
730
- margin: 0;
731
- width: 100%;
732
- clear: both;
733
-
734
-
735
- /* defaults */
736
- > tbody > tr,
737
- > thead > tr {
738
-
739
- > th, > td {
740
- padding: 8px;
741
- vertical-align: top;
742
- background: #fff;
743
- text-align: left;
744
- border-style: solid;
745
- font-weight: normal;
746
- }
747
-
748
- > th {
749
- position: relative;
750
- color: #333333;
751
- }
752
-
753
- }
754
-
755
-
756
- /* thead */
757
- > thead {
758
-
759
- > tr {
760
-
761
- > th {
762
- border-color: #E1E1E1;
763
- border-width: 0 0 1px 1px;
764
-
765
- &:first-child {
766
- border-left-width: 0;
767
- }
768
- }
769
-
770
- }
771
-
772
- }
773
-
774
-
775
- /* tbody */
776
- > tbody {
777
-
778
- > tr {
779
- z-index: 1;
780
-
781
- > td {
782
- border-color: #EDEDED;
783
- border-width: 1px 0 0 1px;
784
-
785
- &:first-child {
786
- border-left-width: 0;
787
- }
788
- }
789
-
790
- &:first-child > td {
791
- border-top-width: 0;
792
- }
793
- }
794
-
795
- }
796
-
797
-
798
- /* -clear */
799
- &.-clear {
800
- border: 0 none;
801
-
802
- > tbody > tr,
803
- > thead > tr {
804
-
805
- > td, >th {
806
- border: 0 none;
807
- padding: 4px;
808
- }
809
- }
810
- }
811
- }
812
-
813
-
814
- /* remove tr */
815
- .acf-remove-element {
816
- -webkit-transition: all 0.25s ease-out;
817
- -moz-transition: all 0.25s ease-out;
818
- -o-transition: all 0.25s ease-out;
819
- transition: all 0.25s ease-out;
820
-
821
- transform: translate(50px, 0);
822
- opacity: 0;
823
- }
824
-
825
-
826
- /* fade-up */
827
- .acf-fade-up {
828
- -webkit-transition: all 0.25s ease-out;
829
- -moz-transition: all 0.25s ease-out;
830
- -o-transition: all 0.25s ease-out;
831
- transition: all 0.25s ease-out;
832
-
833
- transform: translate(0, -10px);
834
- opacity: 0;
835
- }
836
-
837
-
838
- /*---------------------------------------------------------------------------------------------
839
- *
840
- * wp-admin
841
- *
842
- *---------------------------------------------------------------------------------------------*/
843
-
844
- /* Menu */
845
- #adminmenu a[href="edit.php?post_type=acf-field-group&page=acf-settings-info"] {
846
- display: none;
847
- }
848
-
849
-
850
- /*---------------------------------------------------------------------------------------------
851
- *
852
- * Field Group List
853
- *
854
- *---------------------------------------------------------------------------------------------*/
855
-
856
- #icon-edit.icon32-posts-acf-field-group {
857
- background-position: -11px -5px;
858
- }
859
-
860
- #acf-field-group-wrap {
861
-
862
- .tablenav,
863
- p.search-box {
864
- display: none;
865
- }
866
-
867
- .wp-list-table {
868
-
869
- .column-acf-fg-description,
870
- .column-acf-fg-description:before {
871
- display: none !important; /* important needed to override mobile */
872
- }
873
-
874
- .column-acf-fg-count {
875
- width: 10%;
876
- }
877
-
878
- .column-acf-fg-status {
879
- width: 10%;
880
- }
881
-
882
- }
883
-
884
- .tablenav.bottom {
885
- display: block;
886
- }
887
-
888
- .acf-description {
889
- font-weight: normal;
890
- font-size: 13px;
891
- color: #999;
892
- margin-left: 7px;
893
- font-style: italic;
894
- }
895
-
896
- }
897
-
898
-
899
-
900
-
901
- /* subsubsub */
902
- #acf-field-group-wrap .subsubsub {
903
-
904
- /* WPML */
905
- margin-bottom: 3px;
906
-
907
- ul {
908
- margin: 0;
909
- }
910
-
911
- + .subsubsub {
912
- margin-top: 0;
913
- }
914
-
915
- /* search */
916
- a:focus {
917
- box-shadow: none;
918
- }
919
-
920
- }
921
-
922
-
923
-
924
- /* columns (replicate post edit layout) */
925
- .acf-columns-2 {
926
- margin-right: 300px;
927
- clear: both;
928
- .clearfix;
929
-
930
- /* rtl */
931
- html[dir="rtl"] & {
932
- margin-right: 0;
933
- margin-left: 300px;
934
- }
935
-
936
- .acf-column-1 {
937
- float: left;
938
- width: 100%;
939
-
940
- /* rtl */
941
- html[dir="rtl"] & {
942
- float: right;
943
- }
944
- }
945
-
946
- .acf-column-2 {
947
- float: right;
948
- margin-right: -300px;
949
- width: 280px;
950
-
951
- /* rtl */
952
- html[dir="rtl"] & {
953
- float: left;
954
- margin-right: 0;
955
- margin-left: -300px;
956
- }
957
- }
958
-
959
- }
960
-
961
-
962
- /* search */
963
- #acf-field-group-wrap .search-box {
964
-
965
- &:after {
966
- display: block;
967
- content: "";
968
- height: 5px;
969
- }
970
-
971
- }
972
-
973
- .acf-clear {
974
- clear: both;
975
- }
976
-
977
-
978
- /* mobile compatibilty */
979
- @media screen and (max-width: 782px) {
980
-
981
- #acf-field-group-wrap #the-list .acf-icon:after {
982
- content: attr(title);
983
- position: absolute;
984
- margin-left: 5px;
985
- font-size: 13px;
986
- line-height: 18px;
987
- font-style: normal;
988
- color: #444;
989
- }
990
-
991
- }
992
-
993
-
994
- /*---------------------------------------------------------------------------------------------
995
- *
996
- * Fake table
997
- *
998
- *---------------------------------------------------------------------------------------------*/
999
-
1000
- .acf-thead,
1001
- .acf-tbody,
1002
- .acf-tfoot {
1003
- width: 100%;
1004
- padding: 0;
1005
- margin: 0;
1006
- }
1007
-
1008
- .acf-thead > li,
1009
- .acf-tbody > li,
1010
- .acf-tfoot > li {
1011
- -webkit-box-sizing: border-box;
1012
- -moz-box-sizing: border-box;
1013
- box-sizing: border-box;
1014
-
1015
- padding: 8px 15px;
1016
- font-size: 12px;
1017
- line-height: 14px;
1018
- }
1019
-
1020
-
1021
- .acf-thead {
1022
- border-bottom: #E1E1E1 solid 1px;
1023
- color: #23282d;
1024
- }
1025
-
1026
- .acf-thead > li {
1027
- font-size: 14px;
1028
- line-height: 1.4em;
1029
- font-family: "Open Sans",sans-serif;
1030
- font-weight: bold;
1031
- }
1032
-
1033
- .acf-tfoot {
1034
- background: #f5f5f5;
1035
- border-top: #dddddd solid 1px;
1036
- }
1037
-
1038
- .acf-tfoot > li {
1039
- color: #7A9BBE;
1040
- font-size: 12px;
1041
- line-height: 27px;
1042
- }
1043
-
1044
- /*--------------------------------------------------------------------------------------------
1045
- *
1046
- * Settings
1047
- *
1048
- *--------------------------------------------------------------------------------------------*/
1049
-
1050
- .acf-settings-wrap {
1051
-
1052
- }
1053
-
1054
- .acf-settings-wrap .acf-box {
1055
- margin: 20px 0;
1056
- }
1057
-
1058
- .acf-settings-wrap table {
1059
- margin: 0;
1060
- }
1061
-
1062
- .acf-settings-wrap table .button {
1063
- vertical-align: middle;
1064
- }
1065
-
1066
-
1067
- /*--------------------------------------------------------------------------------------------
1068
- *
1069
- * Settings: Add-ons
1070
- *
1071
- *--------------------------------------------------------------------------------------------*/
1072
-
1073
- .add-ons-list {
1074
- margin: 20px 0 0 -18px;
1075
- max-width: 960px;
1076
- }
1077
-
1078
- .add-ons-list .add-on {
1079
- width: 220px;
1080
- margin: 0 0 20px 18px;
1081
- float: left;
1082
- }
1083
-
1084
- .add-ons-list .add-on .inner {
1085
- min-height: 90px;
1086
- }
1087
-
1088
- .add-ons-list .add-on-acf-pro {
1089
- width: 940px;
1090
- }
1091
-
1092
- .add-ons-list .add-on .thumbnail {
1093
-
1094
- }
1095
-
1096
- .add-ons-list .add-on .thumbnail img {
1097
- display: block;
1098
- }
1099
-
1100
- .add-ons-list .add-on h3 a {
1101
- color: inherit;
1102
- text-decoration: none;
1103
- }
1104
-
1105
- .add-ons-list .add-on h3 {
1106
- margin: 0.5em 0;
1107
- }
1108
-
1109
-
1110
- /*--------------------------------------------------------------------------------------------
1111
- *
1112
- * acf-popup
1113
- *
1114
- *--------------------------------------------------------------------------------------------*/
1115
-
1116
- #acf-popup {
1117
- position: fixed;
1118
- z-index: 900000;
1119
- top: 0;
1120
- left: 0;
1121
- right: 0;
1122
- bottom: 0;
1123
- text-align: center;
1124
-
1125
- // bg
1126
- .bg {
1127
- position: absolute;
1128
- top: 0;
1129
- left: 0;
1130
- right: 0;
1131
- bottom: 0;
1132
- z-index: 0;
1133
- background: rgba(0,0,0,0.25);
1134
- }
1135
-
1136
- &:before {
1137
- content: '';
1138
- display: inline-block;
1139
- height: 100%;
1140
- vertical-align: middle;
1141
- }
1142
-
1143
- // box
1144
- .acf-popup-box {
1145
- display: inline-block;
1146
- vertical-align: middle;
1147
- z-index: 1;
1148
- min-width: 300px;
1149
- min-height: 160px;
1150
- border-color: #aaaaaa;
1151
- box-shadow: 0 5px 30px -5px rgba(0, 0, 0, 0.25);
1152
- text-align: left;
1153
- .rtl;
1154
-
1155
- // title
1156
- .title {
1157
- min-height: 15px;
1158
- line-height: 15px;
1159
-
1160
- // icon
1161
- .acf-icon {
1162
- position: absolute;
1163
- top: 10px;
1164
- right: 10px;
1165
-
1166
- // rtl
1167
- html[dir="rtl"] & {
1168
- right: auto;
1169
- left: 10px;
1170
- }
1171
- }
1172
- }
1173
-
1174
- .inner {
1175
- min-height: 50px;
1176
-
1177
- // use margin instead of padding to allow inner elements marin to overlap and avoid large hitespace at top/bottom
1178
- padding: 0;
1179
- margin: 15px;
1180
- }
1181
-
1182
- // loading
1183
- .loading {
1184
- position: absolute;
1185
- top: 45px;
1186
- left: 0;
1187
- right: 0;
1188
- bottom: 0;
1189
- z-index: 2;
1190
- background: rgba(0,0,0,0.1);
1191
- display: none;
1192
-
1193
- i {
1194
- .centered;
1195
- }
1196
- }
1197
-
1198
- }
1199
- }
1200
-
1201
-
1202
- // acf-submit
1203
- .acf-submit {
1204
- margin-bottom: 0;
1205
- line-height: 28px; // .button height
1206
-
1207
- // message
1208
- span {
1209
- float: right;
1210
- color: #999;
1211
-
1212
- &.-error {
1213
- color: #dd4232;
1214
- }
1215
- }
1216
-
1217
- // button (allow margin between loading)
1218
- .button {
1219
- margin-right: 5px;
1220
- }
1221
- }
1222
-
1223
- /*--------------------------------------------------------------------------------------------
1224
- *
1225
- * upgrade notice
1226
- *
1227
- *--------------------------------------------------------------------------------------------*/
1228
-
1229
- #acf-upgrade-notice {
1230
- margin-left: -20px;
1231
- background: #fff;
1232
- border-bottom: #E5E5E5 solid 1px;
1233
- }
1234
-
1235
- #acf-upgrade-notice .inner {
1236
- padding: 20px;
1237
- }
1238
-
1239
- #acf-upgrade-notice .logo {
1240
- position: relative;
1241
- float: left;
1242
- }
1243
-
1244
- #acf-upgrade-notice .content {
1245
- margin-left: 170px;
1246
- max-width: 710px;
1247
- }
1248
-
1249
- #acf-upgrade-notice h2 {
1250
-
1251
- }
1252
-
1253
- #acf-upgrade-notice p {
1254
- font-size: 14px;
1255
- }
1256
-
1257
-
1258
- /*--------------------------------------------------------------------------------------------
1259
- *
1260
- * Welcome
1261
- *
1262
- *--------------------------------------------------------------------------------------------*/
1263
-
1264
- .acf-wrap {
1265
-
1266
- }
1267
-
1268
- .acf-wrap h1 {
1269
- margin-top: 0;
1270
- padding-top: 20px;
1271
- }
1272
-
1273
- .acf-wrap .about-text {
1274
- margin-top: 0.5em;
1275
- min-height: 50px;
1276
- }
1277
-
1278
- .acf-wrap .about-headline-callout {
1279
- font-size: 2.4em;
1280
- font-weight: 300;
1281
- line-height: 1.3;
1282
- margin: 1.1em 0 0.2em;
1283
- text-align: center;
1284
- }
1285
-
1286
- .acf-wrap .feature-section {
1287
- margin-top: 40px;
1288
- padding-bottom: 20px;
1289
- }
1290
-
1291
- .acf-three-col img {
1292
- border: #DDDDDD solid 1px;
1293
- margin: 0 0 20px;
1294
- }
1295
-
1296
- .acf-three-col {
1297
- position: relative;
1298
- overflow: hidden;
1299
- }
1300
-
1301
- .acf-three-col > div {
1302
- float: left;
1303
- margin: 0 0 15px 5%;
1304
- position: relative;
1305
- width: 30%;
1306
- }
1307
-
1308
- .acf-three-col > div:first-child,
1309
- .acf-three-col > br + div {
1310
- margin-left: 0;
1311
- clear: left;
1312
- }
1313
-
1314
- .acf-three-col > br {
1315
- display: none;
1316
- }
1317
-
1318
- .acf-wrap .acf-three-col h3,
1319
- .acf-wrap .acf-three-col h4 {
1320
- margin-top: 0;
1321
- }
1322
-
1323
- .acf-wrap .changelog {
1324
- list-style: disc;
1325
- padding-left: 15px;
1326
- }
1327
-
1328
- .acf-wrap .changelog li {
1329
- margin: 0 0 0.75em;
1330
- }
1331
-
1332
-
1333
- /*--------------------------------------------------------------------------------------------
1334
- *
1335
- * acf-hl cols
1336
- *
1337
- *--------------------------------------------------------------------------------------------*/
1338
-
1339
- .acf-hl[data-cols] {
1340
- margin-left: -10px;
1341
- margin-right: -10px;
1342
-
1343
- > li {
1344
- padding: 0 10px;
1345
-
1346
- -webkit-box-sizing: border-box;
1347
- -moz-box-sizing: border-box;
1348
- box-sizing: border-box;
1349
- }
1350
-
1351
- }
1352
-
1353
-
1354
- /* sizes */
1355
- .acf-hl[data-cols="2"] > li { width: 50%; }
1356
- .acf-hl[data-cols="3"] > li { width: 33.333%; }
1357
- .acf-hl[data-cols="4"] > li { width: 25%; }
1358
-
1359
-
1360
- /* mobile */
1361
- @media screen and (max-width: @sm) {
1362
-
1363
- .acf-hl[data-cols] {
1364
- margin-left: 0;
1365
- margin-right: 0;
1366
- margin-top: -10px;
1367
-
1368
- > li {
1369
- width: 100% !important;
1370
- padding: 10px 0 0;
1371
- }
1372
-
1373
- }
1374
-
1375
- }
1376
-
1377
-
1378
-
1379
- /*--------------------------------------------------------------------------------------------
1380
- *
1381
- * misc
1382
- *
1383
- *--------------------------------------------------------------------------------------------*/
1384
-
1385
- .acf-actions {
1386
- text-align: right;
1387
- z-index: 1;
1388
-
1389
- a {
1390
- margin-left: 4px;
1391
- }
1392
-
1393
-
1394
- /* hover */
1395
- &.-hover {
1396
- position: absolute;
1397
- display: none;
1398
- top: 0;
1399
- right: 0;
1400
- padding: 5px;
1401
- }
1402
-
1403
-
1404
- /* rtl */
1405
- html[dir="rtl"] & {
1406
-
1407
- a {
1408
- margin-left: 0;
1409
- margin-right: 4px;
1410
- }
1411
-
1412
- &.-hover {
1413
- right: auto;
1414
- left: 0;
1415
- }
1416
-
1417
- }
1418
- }
1419
-
1420
-
1421
- /* ul compatibility */
1422
- ul.acf-actions {
1423
- li { float: right; margin-left: 4px; }
1424
- }
1425
-
1426
-
1427
- /*--------------------------------------------------------------------------------------------
1428
- *
1429
- * Plugins
1430
- *
1431
- *--------------------------------------------------------------------------------------------*/
1432
-
1433
- .acf-plugin-upgrade-notice {
1434
- font-weight: normal;
1435
- color: #fff;
1436
- background: #d54d21;
1437
- padding: 1em;
1438
- margin: 9px 0;
1439
-
1440
- &:before {
1441
- content: "\f348";
1442
- display: inline-block;
1443
- font: 400 18px/1 dashicons;
1444
- speak: none;
1445
- margin: 0 8px 0 -2px;
1446
- -webkit-font-smoothing: antialiased;
1447
- -moz-osx-font-smoothing: grayscale;
1448
- vertical-align: top;
1449
- }
1450
-
1451
- h4 {
1452
- display: none;
1453
- }
1454
-
1455
- ul,
1456
- li {
1457
- display: inline;
1458
- color: inherit;
1459
- list-style: none;
1460
- }
1461
-
1462
- li:after {
1463
- content: '. ';
1464
- display: inline;
1465
- }
1466
-
1467
- }
1468
-
1469
-
1470
- /*--------------------------------------------------------------------------------------------
1471
- *
1472
- * RTL
1473
- *
1474
- *--------------------------------------------------------------------------------------------*/
1475
-
1476
- html[dir="rtl"] .acf-fl { float: right; }
1477
- html[dir="rtl"] .acf-fr { float: left; }
1478
-
1479
- html[dir="rtl"] .acf-hl > li {
1480
- float: right;
1481
- }
1482
-
1483
- html[dir="rtl"] .acf-hl > li.acf-fr {
1484
- float: left;
1485
- }
1486
-
1487
- html[dir="rtl"] .acf-icon.logo {
1488
- left: 0;
1489
- right: auto;
1490
- }
1491
-
1492
-
1493
- html[dir="rtl"] .acf-table thead th {
1494
- text-align: right;
1495
- border-right-width: 1px;
1496
- border-left-width: 0px;
1497
- }
1498
-
1499
- html[dir="rtl"] .acf-table > tbody > tr > td {
1500
- text-align: right;
1501
- border-right-width: 1px;
1502
- border-left-width: 0px;
1503
- }
1504
-
1505
- html[dir="rtl"] .acf-table > thead > tr > th:first-child,
1506
- html[dir="rtl"] .acf-table > tbody > tr > td:first-child {
1507
- border-right-width: 0;
1508
- }
1509
-
1510
- html[dir="rtl"] .acf-table > tbody > tr > td.order + td {
1511
- border-right-color: #e1e1e1;
1512
- }
1513
-
1514
-
1515
- /*---------------------------------------------------------------------------------------------
1516
- *
1517
- * acf-postbox-columns
1518
- *
1519
- *---------------------------------------------------------------------------------------------*/
1520
-
1521
- .acf-postbox-columns {
1522
- .clearfix;
1523
- position: relative;
1524
- margin-top: -11px;
1525
- margin-bottom: -11px;
1526
- margin-left: -12px;
1527
- margin-right: (280px - 12px);
1528
-
1529
- .acf-postbox-main,
1530
- .acf-postbox-side {
1531
- .border-box;
1532
- padding: 0 12px 12px;
1533
- }
1534
-
1535
- .acf-postbox-main {
1536
- float: left;
1537
- width: 100%;
1538
- }
1539
-
1540
- .acf-postbox-side {
1541
- float: right;
1542
- width: 280px;
1543
- margin-right: -280px;
1544
-
1545
- &:before {
1546
- content: "";
1547
- display: block;
1548
- position: absolute;
1549
- width: 1px;
1550
- height: 100%;
1551
- top: 0;
1552
- right: 0;
1553
- background: #ebebeb;
1554
- }
1555
- }
1556
- }
1557
-
1558
-
1559
- /* mobile */
1560
- @media only screen and (max-width: 850px) {
1561
-
1562
- .acf-postbox-columns {
1563
- margin: 0;
1564
-
1565
- .acf-postbox-main,
1566
- .acf-postbox-side {
1567
- float: none;
1568
- width: auto;
1569
- margin: 0;
1570
- padding: 0;
1571
- }
1572
-
1573
- .acf-postbox-side {
1574
- margin-top: 1em;
1575
-
1576
- &:before {
1577
- display: none;
1578
- }
1579
- }
1580
- }
1581
- }
1582
-
1583
-
1584
- /*---------------------------------------------------------------------------------------------
1585
- *
1586
- * acf-panel
1587
- *
1588
- *---------------------------------------------------------------------------------------------*/
1589
-
1590
- .acf-panel {
1591
- margin-top: -1px;
1592
- border-top: 1px solid #e2e4e7;
1593
- border-bottom: 1px solid #e2e4e7;
1594
-
1595
- .acf-panel-title {
1596
- margin: 0;
1597
- padding: 12px;
1598
- font-weight: bold;
1599
- cursor: pointer;
1600
- font-size: inherit;
1601
-
1602
- i {
1603
- float: right;
1604
- }
1605
- }
1606
-
1607
- .acf-panel-inside {
1608
- margin: 0;
1609
- padding: 0 12px 12px;
1610
- display: none;
1611
- }
1612
-
1613
- /* open */
1614
- &.-open {
1615
-
1616
- .acf-panel-inside {
1617
- display: block;
1618
- }
1619
-
1620
- }
1621
-
1622
-
1623
- /* inside postbox */
1624
- .postbox & {
1625
- margin-left: -12px;
1626
- margin-right: -12px;
1627
- }
1628
-
1629
-
1630
- /* fields */
1631
- .acf-field {
1632
- margin: 20px 0 0;
1633
-
1634
- .acf-label label {
1635
- color: #555d66;
1636
- font-weight: normal;
1637
- }
1638
-
1639
- &:first-child {
1640
- margin-top: 0;
1641
- }
1642
- }
1643
-
1644
- }
1645
-
1646
-
1647
- /*---------------------------------------------------------------------------------------------
1648
- *
1649
- * Admin Tools
1650
- *
1651
- *---------------------------------------------------------------------------------------------*/
1652
-
1653
- #acf-admin-tools {
1654
-
1655
- .notice {
1656
- margin-top: 10px;
1657
- }
1658
- }
1659
-
1660
- .acf-meta-box-wrap {
1661
- margin-top: 10px;
1662
-
1663
- .postbox {
1664
- .border-box;
1665
-
1666
- .inside {
1667
- margin-bottom: 0;
1668
- }
1669
-
1670
- .hndle {
1671
- font-size: 14px;
1672
- padding: 8px 12px;
1673
- margin: 0;
1674
- line-height: 1.4;
1675
- }
1676
-
1677
- .handlediv {
1678
- display: none;
1679
- }
1680
- }
1681
-
1682
-
1683
- /* acf-fields */
1684
- .acf-fields {
1685
- border: #ebebeb solid 1px;
1686
- background: #fafafa;
1687
- border-radius: 3px;
1688
- }
1689
- }
1690
-
1691
-
1692
- /* grid */
1693
- .acf-meta-box-wrap.-grid {
1694
- margin-left: 8px;
1695
- margin-right: 8px;
1696
-
1697
- .postbox {
1698
- float: left;
1699
- clear: left;
1700
- width: 50%;
1701
- margin: 0 0 16px;
1702
-
1703
- &:nth-child(odd) {
1704
- margin-left: -8px;
1705
- }
1706
-
1707
- &:nth-child(even) {
1708
- float: right;
1709
- clear: right;
1710
- margin-right: -8px;
1711
- }
1712
- }
1713
- }
1714
-
1715
-
1716
- /* mobile */
1717
- @media only screen and (max-width: 850px) {
1718
-
1719
- .acf-meta-box-wrap.-grid {
1720
- margin-left: 0;
1721
- margin-right: 0;
1722
-
1723
- .postbox {
1724
- margin-left: 0 !important;
1725
- margin-right: 0 !important;
1726
- width: 100%;
1727
- }
1728
- }
1729
- }
1730
-
1731
-
1732
- /* export tool */
1733
- #acf-admin-tool-export {
1734
-
1735
- p {
1736
- max-width: 800px;
1737
- }
1738
-
1739
- ul {
1740
- column-width: 200px;
1741
- }
1742
-
1743
- .acf-postbox-side .button {
1744
- margin: 0;
1745
- width: 100%;
1746
- }
1747
-
1748
- textarea {
1749
- display: block;
1750
- width: 100%;
1751
- min-height: 500px;
1752
-
1753
- background: #fafafa;
1754
- box-shadow: none;
1755
- padding: 7px;
1756
- border-radius: 3px;
1757
- }
1758
-
1759
- /* panel: selection */
1760
- .acf-panel-selection {
1761
- .acf-label {
1762
- display: none;
1763
- }
1764
- }
1765
- }
1766
-
1767
- /*---------------------------------------------------------------------------------------------
1768
- *
1769
- * Retina
1770
- *
1771
- *---------------------------------------------------------------------------------------------*/
1772
-
1773
- @media
1774
- only screen and (-webkit-min-device-pixel-ratio: 2),
1775
- only screen and ( min--moz-device-pixel-ratio: 2),
1776
- only screen and ( -o-min-device-pixel-ratio: 2/1),
1777
- only screen and ( min-device-pixel-ratio: 2),
1778
- only screen and ( min-resolution: 192dpi),
1779
- only screen and ( min-resolution: 2dppx) {
1780
-
1781
- [class^="acf-sprite-"],
1782
- [class*=" acf-sprite-"] {
1783
- background-image: url(../images/sprite@2x.png);
1784
- background-size: 250px 250px;
1785
- }
1786
-
1787
- .acf-loading,
1788
- .acf-spinner {
1789
- background-image: url(../images/spinner@2x.gif);
1790
- background-size: 20px 20px;
1791
- }
1792
-
1793
- }
1794
-
1795
-
1796
- /*---------------------------------------------------------------------------------------------
1797
- *
1798
- * Device
1799
- *
1800
- *---------------------------------------------------------------------------------------------*/
1801
-
1802
- @media only screen and (max-width: 850px) {
1803
-
1804
- .acf-columns-2 {
1805
- margin-right: 0;
1806
- }
1807
-
1808
- .acf-columns-2 .acf-column-1,
1809
- .acf-columns-2 .acf-column-2 {
1810
- float: none;
1811
- width: auto;
1812
- margin: 0;
1813
- }
1814
-
1815
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/css/input.less DELETED
@@ -1,3662 +0,0 @@
1
- @import '../css/vars.less';
2
-
3
-
4
- /*--------------------------------------------------------------------------------------------
5
- *
6
- * acf-field
7
- *
8
- *--------------------------------------------------------------------------------------------*/
9
-
10
- .acf-field,
11
- .acf-field .acf-label,
12
- .acf-field .acf-input {
13
- -webkit-box-sizing: border-box;
14
- -moz-box-sizing: border-box;
15
- box-sizing: border-box;
16
- position: relative;
17
- }
18
-
19
- .acf-field {
20
- margin: 15px 0;
21
-
22
- // clear is important as it will avoid any layout issues with floating fields
23
- // do not delete (you have tried this)
24
- clear: both;
25
-
26
- // description
27
- p.description {
28
- display: block;
29
- margin: 0;
30
- padding: 0;
31
- }
32
-
33
- // label
34
- .acf-label {
35
- vertical-align: top;
36
- margin: 0 0 10px;
37
-
38
- label {
39
- display: block;
40
- font-weight: bold;
41
- margin: 0 0 3px;
42
- padding: 0;
43
- }
44
-
45
- &:empty {
46
- margin-bottom: 0;
47
- }
48
- }
49
-
50
- // input
51
- .acf-input {
52
- vertical-align: top;
53
-
54
- > p.description {
55
- margin-top: 5px;
56
- }
57
- }
58
-
59
- // notice
60
- .acf-notice {
61
- margin: 0 0 15px;
62
- background: #edf2ff;
63
- color: #2183b9;
64
- border: none;
65
-
66
- .acf-notice-dismiss {
67
- background: transparent;
68
- color: inherit;
69
-
70
- &:hover {
71
- background: #fff;
72
- }
73
- }
74
-
75
- // dismiss
76
- &.-dismiss {
77
- padding-right: 40px;
78
- }
79
-
80
- // error
81
- &.-error {
82
- background: #ffe6e6;
83
- color: #d12626;
84
- }
85
-
86
- // success
87
- &.-success {
88
- background: #eefbe8;
89
- color: #32a23b;
90
- }
91
-
92
- // warning
93
- &.-warning {
94
- background: #fff3e6;
95
- color: #d16226;
96
- }
97
- }
98
-
99
- // table
100
- &td, &tr {
101
- margin: 0;
102
- }
103
- }
104
-
105
-
106
- // width
107
- .acf-field[data-width] {
108
- float: left;
109
- clear: none;
110
-
111
- // next
112
- + .acf-field[data-width] {
113
- border-left: 1px solid #eeeeee;
114
- }
115
-
116
- // rtl
117
- html[dir="rtl"] & {
118
- float: right;
119
-
120
- + .acf-field[data-width] {
121
- border-left: none;
122
- border-right: 1px solid #eeeeee;
123
- }
124
- }
125
-
126
- // table
127
- &td, &tr {
128
- float: none;
129
- }
130
-
131
- // mobile
132
- /*
133
- @media screen and (max-width: @sm) {
134
- float: none;
135
- width: auto;
136
- border-left-width: 0;
137
- border-right-width: 0;
138
- }
139
- */
140
- }
141
-
142
-
143
- // float helpers
144
- .acf-field.-c0 {
145
- clear: both;
146
- border-left-width: 0 !important;
147
-
148
- // rtl
149
- html[dir="rtl"] & {
150
- border-left-width: 1px !important;
151
- border-right-width: 0 !important;
152
- }
153
- }
154
-
155
- .acf-field.-r0 {
156
- border-top-width: 0 !important;
157
- }
158
-
159
-
160
- /*--------------------------------------------------------------------------------------------
161
- *
162
- * acf-fields
163
- *
164
- *--------------------------------------------------------------------------------------------*/
165
-
166
- .acf-fields {
167
- position: relative;
168
-
169
- // clearifx
170
- .clearfix;
171
-
172
- // border
173
- &.-border {
174
- border: #dfdfdf solid 1px;
175
- background: #fff;
176
- }
177
-
178
- // field
179
- > .acf-field {
180
- position: relative;
181
- margin: 0;
182
- padding: @field_padding;
183
- border-top: #EEEEEE solid 1px;
184
-
185
- // first
186
- &:first-child {
187
- border-top-width: 0;
188
- }
189
- }
190
-
191
- // table
192
- td& {
193
- padding: 0 !important;
194
- }
195
- }
196
-
197
-
198
-
199
- /*--------------------------------------------------------------------------------------------
200
- *
201
- * acf-fields (clear)
202
- *
203
- *--------------------------------------------------------------------------------------------*/
204
-
205
- .acf-fields.-clear > .acf-field {
206
- border: none;
207
- padding: 0;
208
- margin: 15px 0;
209
-
210
- // width
211
- &[data-width] {
212
- border: none !important;
213
- }
214
-
215
- // label
216
- > .acf-label {
217
- padding: 0;
218
- }
219
-
220
- // input
221
- > .acf-input {
222
- padding: 0;
223
- }
224
- }
225
-
226
-
227
- /*--------------------------------------------------------------------------------------------
228
- *
229
- * acf-fields (left)
230
- *
231
- *--------------------------------------------------------------------------------------------*/
232
-
233
- .acf-fields.-left > .acf-field {
234
- padding: @fy 0;
235
-
236
- // clearifx
237
- .clearfix;
238
-
239
- // sidebar
240
- &:before {
241
- content: "";
242
- display: block;
243
- position: absolute;
244
- z-index: 0;
245
- background: #F9F9F9;
246
- border-color: #E1E1E1;
247
- border-style: solid;
248
- border-width: 0 1px 0 0;
249
- top: 0;
250
- bottom: 0;
251
- left: 0;
252
- width: 20%;
253
- }
254
-
255
- // width
256
- &[data-width] {
257
- float: none;
258
- width: auto !important;
259
- border-left-width: 0 !important;
260
- border-right-width: 0 !important;
261
- }
262
-
263
- // label
264
- > .acf-label {
265
- float: left;
266
- width: 20%;
267
- margin: 0;
268
- padding: 0 @fx;
269
- }
270
-
271
- // input
272
- > .acf-input {
273
- float: left;
274
- width: 80%;
275
- margin: 0;
276
- padding: 0 @fx;
277
- }
278
-
279
- // rtl
280
- html[dir="rtl"] & {
281
-
282
- // sidebar
283
- &:before {
284
- border-width: 0 0 0 1px;
285
- left: auto;
286
- right: 0;
287
- }
288
-
289
- // label
290
- > .acf-label {
291
- float: right;
292
- }
293
-
294
- // input
295
- > .acf-input {
296
- float: right;
297
- }
298
- }
299
-
300
- // mobile
301
- @media screen and (max-width: @sm) {
302
-
303
- // sidebar
304
- &:before {
305
- display: none;
306
- }
307
-
308
- // label
309
- > .acf-label {
310
- width: 100%;
311
- margin-bottom: 10px;
312
- }
313
-
314
- // input
315
- > .acf-input {
316
- width: 100%;
317
- }
318
- }
319
- }
320
-
321
- /* clear + left */
322
- .acf-fields.-clear.-left > .acf-field {
323
- padding: 0;
324
- border: none;
325
-
326
- // sidebar
327
- &:before {
328
- display: none;
329
- }
330
-
331
- // label
332
- > .acf-label {
333
- padding: 0;
334
- }
335
-
336
- // input
337
- > .acf-input {
338
- padding: 0;
339
- }
340
- }
341
-
342
-
343
- /*--------------------------------------------------------------------------------------------
344
- *
345
- * acf-table
346
- *
347
- *--------------------------------------------------------------------------------------------*/
348
-
349
- .acf-table tr.acf-field {
350
-
351
- // label
352
- > td.acf-label {
353
- padding: @fp;
354
- margin: 0;
355
- background: #F9F9F9;
356
- width: 20%;
357
- }
358
-
359
- // input
360
- > td.acf-input {
361
- padding: @fp;
362
- margin: 0;
363
- border-left-color: #E1E1E1;
364
- }
365
- }
366
-
367
-
368
- /*--------------------------------------------------------------------------------------------
369
- *
370
- * acf-postbox
371
- *
372
- *--------------------------------------------------------------------------------------------*/
373
-
374
- .acf-postbox {
375
- position: relative;
376
-
377
- // position high
378
- #acf_after_title-sortables & {
379
- margin: 20px 0 0;
380
- }
381
-
382
- // inside
383
- > .inside {
384
- margin: 0 !important; /* override WP style - do not delete - you have tried this before */
385
- padding: 0 !important; /* override WP style - do not delete - you have tried this before */
386
- }
387
-
388
- // hndle
389
- > .hndle {
390
-
391
- /* edit field group */
392
- .acf-hndle-cog {
393
- color: #AAAAAA;
394
- font-size: 16px;
395
- line-height: 20px;
396
- padding: 0 2px;
397
- float: right;
398
- position: relative;
399
- display: none;
400
-
401
- &:hover {
402
- color: #777777;
403
- }
404
- }
405
- }
406
-
407
- // hover
408
- &:hover > .hndle .acf-hndle-cog {
409
- display: block;
410
- }
411
-
412
- // replace
413
- .acf-replace-with-fields {
414
- padding: 15px;
415
- text-align: center;
416
- }
417
- }
418
-
419
-
420
- /* seamless */
421
- .acf-postbox.seamless {
422
- border: 0 none;
423
- background: transparent;
424
- box-shadow: none;
425
-
426
-
427
- /* hide hndle */
428
- > .hndle,
429
- > .handlediv {
430
- display: none;
431
- }
432
-
433
-
434
- /* inside */
435
- > .inside {
436
- display: block !important; /* stop metabox from hiding when closed */
437
- margin-left: -@field_padding_x !important;
438
- margin-right: -@field_padding_x !important;
439
-
440
- > .acf-field {
441
- border-color: transparent;
442
- }
443
- }
444
- }
445
-
446
-
447
- /* seamless (left) */
448
- .acf-postbox.seamless > .acf-fields.-left {
449
-
450
- /* hide sidebar bg */
451
- > .acf-field:before {
452
- display: none;
453
- }
454
-
455
-
456
- /* mobile */
457
- @media screen and (max-width: 782px) {
458
-
459
- /* remove padding */
460
- & > .acf-field > .acf-label,
461
- & > .acf-field > .acf-input {
462
- padding: 0;
463
- }
464
- }
465
- }
466
-
467
-
468
- /* override WP CSS */
469
- .metabox-prefs label.acf-hidden {
470
- display: none;
471
- }
472
-
473
-
474
- /*---------------------------------------------------------------------------------------------
475
- *
476
- * Inputs
477
- *
478
- *---------------------------------------------------------------------------------------------*/
479
-
480
- .acf-field {
481
-
482
- // inputs
483
- input[type="text"],
484
- input[type="password"],
485
- input[type="number"],
486
- input[type="search"],
487
- input[type="email"],
488
- input[type="url"],
489
- textarea,
490
- select {
491
- width: 100%;
492
- padding: 3px 5px;
493
- resize: none;
494
- margin: 0;
495
- -webkit-box-sizing: border-box;
496
- -moz-box-sizing: border-box;
497
- box-sizing: border-box;
498
-
499
- font-size: 14px;
500
- line-height: 1.4;
501
-
502
- // disabled
503
- &:disabled {
504
- background: #f8f8f8;
505
- }
506
-
507
- // readonly
508
- &[readonly] {
509
- background: #f8f8f8;
510
- }
511
- }
512
-
513
- // textarea
514
- textarea {
515
- resize: vertical;
516
- }
517
-
518
- }
519
-
520
-
521
- /*---------------------------------------------------------------------------------------------
522
- *
523
- * Text
524
- *
525
- *---------------------------------------------------------------------------------------------*/
526
- .acf-input-prepend,
527
- .acf-input-append {
528
- font-size: 13px;
529
- line-height: 20px;
530
- height: 20px;
531
-
532
- padding: 3px 7px;
533
-
534
- background: #F4F4F4;
535
- border: #DFDFDF solid 1px;
536
- }
537
-
538
- .acf-input-prepend {
539
- float: left;
540
- border-right-width: 0;
541
- border-radius: 3px 0 0 3px;
542
- }
543
-
544
- .acf-input-append {
545
- float: right;
546
- border-left-width: 0;
547
- border-radius: 0 3px 3px 0;
548
- }
549
-
550
- .acf-input-wrap {
551
- position: relative;
552
- overflow: hidden;
553
- }
554
-
555
- .acf-input-wrap input {
556
- height: 28px;
557
- margin: 0;
558
- }
559
-
560
- input.acf-is-prepended {
561
- border-radius: 0 3px 3px 0 !important;
562
- }
563
-
564
- input.acf-is-appended {
565
- border-radius: 3px 0 0 3px !important;
566
- }
567
-
568
- input.acf-is-prepended.acf-is-appended {
569
- border-radius: 0 !important;
570
- }
571
-
572
-
573
- /* rtl */
574
- html[dir="rtl"] .acf-input-prepend {
575
- border-left-width: 0;
576
- border-right-width: 1px;
577
- border-radius: 0 3px 3px 0;
578
-
579
- float: right;
580
- }
581
-
582
- html[dir="rtl"] .acf-input-append {
583
- border-left-width: 1px;
584
- border-right-width: 0;
585
- border-radius: 3px 0 0 3px;
586
- float: left;
587
- }
588
-
589
- html[dir="rtl"] input.acf-is-prepended {
590
- border-radius: 3px 0 0 3px !important;
591
- }
592
-
593
- html[dir="rtl"] input.acf-is-appended {
594
- border-radius: 0 3px 3px 0 !important;
595
- }
596
-
597
- html[dir="rtl"] input.acf-is-prepended.acf-is-appended {
598
- border-radius: 0 !important;
599
- }
600
-
601
-
602
- /*---------------------------------------------------------------------------------------------
603
- *
604
- * Color Picker
605
- *
606
- *---------------------------------------------------------------------------------------------*/
607
-
608
- .acf-color-picker {
609
-
610
- .wp-picker-active {
611
- position: relative;
612
- z-index: 1;
613
- }
614
-
615
- }
616
-
617
-
618
- /*---------------------------------------------------------------------------------------------
619
- *
620
- * Url
621
- *
622
- *---------------------------------------------------------------------------------------------*/
623
-
624
- .acf-url {
625
-
626
- i {
627
- position: absolute;
628
- top: 4px;
629
- left: 4px;
630
- opacity: 0.5;
631
- color: #A9A9A9;
632
- }
633
-
634
- input[type="url"] {
635
- padding-left: 25px;
636
- }
637
-
638
- &.-valid i {
639
- opacity: 1;
640
- }
641
-
642
- }
643
-
644
-
645
- /*---------------------------------------------------------------------------------------------
646
- *
647
- * Select
648
- *
649
- *---------------------------------------------------------------------------------------------*/
650
-
651
- .acf-field select {
652
- padding: 2px;
653
- }
654
-
655
- .acf-field select optgroup {
656
- padding: 5px;
657
- background: #fff;
658
- }
659
-
660
- .acf-field select option {
661
- padding: 3px;
662
- }
663
-
664
- .acf-field select optgroup option {
665
- padding-left: 5px;
666
- }
667
-
668
- .acf-field select optgroup:nth-child(2n) {
669
- background: #F9F9F9;
670
- }
671
-
672
- .acf-field .select2-input {
673
- max-width: 200px;
674
- }
675
-
676
-
677
- /*---------------------------------------------------------------------------------------------
678
- *
679
- * Select2 (v3)
680
- *
681
- *---------------------------------------------------------------------------------------------*/
682
-
683
- .select2-container.-acf {
684
-
685
- .select2-choices {
686
- background: #fff;
687
- border-color: #ddd;
688
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07) inset;
689
- min-height: 31px;
690
-
691
- .select2-search-choice {
692
- margin: 5px 0 5px 5px;
693
- padding: 3px 5px 3px 18px;
694
- border-color: #bbb;
695
- background: #f9f9f9;
696
- box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25) inset;
697
-
698
- /* sortable item*/
699
- &.ui-sortable-helper {
700
- background: #5897fb;
701
- border-color: darken(#5897fb, 5%);
702
- color: #fff;
703
- box-shadow: 0 0 3px rgba(0,0,0,0.1);
704
-
705
- a {
706
- visibility: hidden;
707
- }
708
- }
709
-
710
-
711
- /* sortable shadow */
712
- &.ui-sortable-placeholder {
713
- background-color: #f7f7f7;
714
- border-color: #f7f7f7;
715
- visibility: visible !important;
716
- }
717
- }
718
-
719
- .select2-search-choice-focus {
720
- border-color: #999;
721
- }
722
-
723
- .select2-search-field input {
724
- height: 31px;
725
- line-height: 22px;
726
- margin: 0;
727
- padding: 5px 5px 5px 7px;
728
- }
729
- }
730
-
731
- .select2-choice {
732
- border-color: #BBBBBB;
733
-
734
- .select2-arrow {
735
- background: transparent;
736
- border-left-color: #DFDFDF;
737
- padding-left: 1px;
738
- }
739
-
740
- .select2-result-description {
741
- display: none;
742
- }
743
- }
744
-
745
-
746
-
747
- /* open */
748
- &.select2-container-active .select2-choices,
749
- &.select2-dropdown-open .select2-choices {
750
- border-color: #5B9DD9;
751
- border-radius: 3px 3px 0 0;
752
- }
753
-
754
-
755
- /* single open */
756
- &.select2-dropdown-open .select2-choice {
757
- background: #fff;
758
- border-color: #5B9DD9;
759
- }
760
-
761
- }
762
-
763
- /* rtl */
764
- html[dir="rtl"] .select2-container.-acf {
765
-
766
- .select2-search-choice-close {
767
- left: 24px;
768
- }
769
-
770
- .select2-choice > .select2-chosen {
771
- margin-left: 42px;
772
- }
773
-
774
- .select2-choice .select2-arrow {
775
- padding-left: 0;
776
- padding-right: 1px;
777
- }
778
- }
779
-
780
-
781
- /* description */
782
- .select2-drop {
783
-
784
- /* search*/
785
- .select2-search {
786
- padding: 4px 4px 0;
787
- }
788
-
789
-
790
- /* result */
791
- .select2-result {
792
-
793
- .select2-result-description {
794
- color: #999;
795
- font-size: 12px;
796
- margin-left: 5px;
797
- }
798
-
799
-
800
- /* hover*/
801
- &.select2-highlighted {
802
-
803
- .select2-result-description {
804
- color: #fff;
805
- opacity: 0.75;
806
- }
807
-
808
- }
809
-
810
- }
811
-
812
- }
813
-
814
-
815
-
816
- /*---------------------------------------------------------------------------------------------
817
- *
818
- * Select2 (v4)
819
- *
820
- *---------------------------------------------------------------------------------------------*/
821
-
822
- .select2-container.-acf {
823
-
824
- li{
825
- margin-bottom: 0;
826
- }
827
-
828
- }
829
-
830
- .select2-container--default.-acf {
831
-
832
- .select2-selection--multiple {
833
-
834
- .select2-search--inline:first-child {
835
- float: none;
836
- input { width: 100% !important; }
837
- }
838
-
839
- /* multiple choice item */
840
- .select2-selection__choice {
841
- background-color: #f7f7f7;
842
- border-color: #cccccc;
843
-
844
-
845
- /* sortable item*/
846
- &.ui-sortable-helper {
847
- background: #5897fb;
848
- border-color: darken(#5897fb, 5%);
849
- color: #fff;
850
- box-shadow: 0 0 3px rgba(0,0,0,0.1);
851
-
852
- span {
853
- visibility: hidden;
854
- }
855
- }
856
-
857
-
858
- /* sortable shadow */
859
- &.ui-sortable-placeholder {
860
- background-color: #f7f7f7;
861
- border-color: #f7f7f7;
862
- visibility: visible !important;
863
- }
864
- }
865
-
866
- }
867
-
868
- }
869
-
870
- .select2-container {
871
-
872
- .select2-dropdown {
873
- z-index: 900000;
874
- }
875
-
876
- }
877
-
878
-
879
-
880
-
881
- /*---------------------------------------------------------------------------------------------
882
- *
883
- * Link
884
- *
885
- *---------------------------------------------------------------------------------------------*/
886
-
887
- .link-wrap {
888
- border: #dddddd solid 1px;
889
- border-radius: 3px;
890
- padding: 5px;
891
- line-height: 26px;
892
- background: #fff;
893
-
894
- word-wrap: break-word;
895
- word-break: break-all;
896
-
897
- .link-title {
898
- padding: 0 5px;
899
- }
900
-
901
- }
902
-
903
- .acf-link {
904
-
905
- .link-wrap,
906
- .acf-icon.-link-ext { display: none; }
907
-
908
- /* value */
909
- &.-value {
910
-
911
- .button { display: none; }
912
- .link-wrap { display: inline-block; }
913
-
914
- }
915
-
916
-
917
- /* external */
918
- &.-external {
919
-
920
- .acf-icon.-link-ext { display: inline-block; }
921
-
922
- }
923
-
924
- }
925
-
926
- #wp-link-backdrop { z-index: 900000 !important; }
927
- #wp-link-wrap { z-index: 900001 !important; }
928
-
929
-
930
-
931
- /*---------------------------------------------------------------------------------------------
932
- *
933
- * Radio
934
- *
935
- *---------------------------------------------------------------------------------------------*/
936
-
937
- ul.acf-radio-list,
938
- ul.acf-checkbox-list {
939
- background: transparent;
940
- position: relative;
941
- padding: 1px;
942
- margin: 0;
943
-
944
- li {
945
- font-size: 13px;
946
- line-height: 22px;
947
- margin: 0;
948
- position: relative;
949
- word-wrap: break-word;
950
-
951
- label {
952
- display: inline;
953
- }
954
-
955
- input[type="checkbox"],
956
- input[type="radio"] {
957
- margin: -1px 4px 0 0;
958
- vertical-align: middle;
959
- }
960
-
961
- input[type="text"] {
962
- width: auto;
963
- vertical-align: middle;
964
- margin: 2px 0;
965
- }
966
-
967
-
968
- /* attachment sidebar fix*/
969
- span {
970
- float: none;
971
- }
972
-
973
- i {
974
- vertical-align: middle;
975
- }
976
- }
977
-
978
-
979
- /* hl */
980
- &.acf-hl {
981
-
982
- li {
983
- margin-right: 20px;
984
- clear: none;
985
- }
986
- }
987
-
988
-
989
- /* rtl */
990
- html[dir="rtl"] & {
991
-
992
- input[type="checkbox"],
993
- input[type="radio"] {
994
- margin-left: 4px;
995
- margin-right: 0;
996
- }
997
- }
998
-
999
-
1000
-
1001
-
1002
- }
1003
-
1004
-
1005
- /*---------------------------------------------------------------------------------------------
1006
- *
1007
- * Button Group
1008
- *
1009
- *---------------------------------------------------------------------------------------------*/
1010
-
1011
- .acf-button-group {
1012
- display: inline-block;
1013
-
1014
- label {
1015
- display: inline-block;
1016
- border: #ccc solid 1px;
1017
- position: relative;
1018
- z-index: 1;
1019
- padding: 5px 10px;
1020
- background: #fff;
1021
-
1022
- &:hover {
1023
- border-color: darken(#ccc, 20%);
1024
- z-index: 2;
1025
- }
1026
-
1027
- &.selected {
1028
- border-color: darken(#309cf3, 1%);
1029
- background: #309cf3;
1030
- color: #fff;
1031
- z-index: 2;
1032
-
1033
- &:hover {
1034
- background: lighten(#309cf3, 5%);
1035
- }
1036
- }
1037
- }
1038
-
1039
- input {
1040
- display: none !important;
1041
- }
1042
-
1043
-
1044
- /* default (horizontal) */
1045
- & {
1046
- padding-left: 1px;
1047
- display: inline-flex;
1048
- flex-direction: row;
1049
- flex-wrap: nowrap;
1050
-
1051
- label {
1052
- margin: 0 0 0 -1px;
1053
- flex: 1;
1054
- text-align: center;
1055
- white-space: nowrap;
1056
-
1057
- // corners
1058
- &:first-child {
1059
- border-radius: 3px 0 0 3px;
1060
- html[dir="rtl"] & { border-radius: 0 3px 3px 0; }
1061
- }
1062
- &:last-child {
1063
- border-radius: 0 3px 3px 0;
1064
- html[dir="rtl"] & { border-radius: 3px 0 0 3px; }
1065
- }
1066
- &:only-child { border-radius: 3px; }
1067
- }
1068
- }
1069
-
1070
-
1071
- /* vertical */
1072
- &.-vertical {
1073
- padding-left: 0;
1074
- padding-top: 1px;
1075
- flex-direction: column;
1076
-
1077
- label {
1078
- margin: -1px 0 0 0;
1079
-
1080
- // corners
1081
- &:first-child { border-radius: 3px 3px 0 0; }
1082
- &:last-child { border-radius: 0 0 3px 3px; }
1083
- &:only-child { border-radius: 3px; }
1084
-
1085
- }
1086
- }
1087
-
1088
-
1089
- }
1090
-
1091
-
1092
-
1093
- /*---------------------------------------------------------------------------------------------
1094
- *
1095
- * Checkbox
1096
- *
1097
- *---------------------------------------------------------------------------------------------*/
1098
-
1099
- .acf-checkbox-list {
1100
-
1101
- .button {
1102
- margin: 10px 0 0;
1103
- }
1104
-
1105
- }
1106
-
1107
-
1108
-
1109
- /*---------------------------------------------------------------------------------------------
1110
- *
1111
- * True / False
1112
- *
1113
- *---------------------------------------------------------------------------------------------*/
1114
-
1115
- .acf-switch {
1116
- display: inline-block;
1117
- border-radius: 5px;
1118
- cursor: pointer;
1119
- position: relative;
1120
- background: #f8f8f8;
1121
- height: 30px;
1122
- vertical-align: middle;
1123
- //box-shadow: inset 0 0 1px rgba(0,0,0,0.2);
1124
- border: #ccc solid 1px;
1125
-
1126
- -webkit-transition: background 0.25s ease;
1127
- -moz-transition: background 0.25s ease;
1128
- -o-transition: background 0.25s ease;
1129
- transition: background 0.25s ease;
1130
-
1131
- span {
1132
- display: inline-block;
1133
- float: left;
1134
- text-align: center;
1135
-
1136
- font-size: 13px;
1137
- line-height: 22px;
1138
-
1139
- padding: 4px 10px;
1140
- min-width: 15px;
1141
-
1142
- i {
1143
- vertical-align: middle;
1144
- }
1145
- }
1146
-
1147
- .acf-switch-on {
1148
- color: #fff;
1149
- text-shadow: darken(@acf_blue, 10%) 0 1px 0;
1150
- }
1151
-
1152
- .acf-switch-off {
1153
-
1154
- }
1155
-
1156
- .acf-switch-slider {
1157
- position: absolute;
1158
- top: 2px;
1159
- left: 2px;
1160
- bottom: 2px;
1161
- right: 50%;
1162
- z-index: 1;
1163
- background: #fff;
1164
- border-radius: 3px;
1165
- border: #ccc solid 1px;
1166
-
1167
- -webkit-transition: all 0.25s ease;
1168
- -moz-transition: all 0.25s ease;
1169
- -o-transition: all 0.25s ease;
1170
- transition: all 0.25s ease;
1171
-
1172
- transition-property: left, right;
1173
- }
1174
-
1175
-
1176
- /* hover */
1177
- &:hover {
1178
- .acf-switch-slider{
1179
- border-color: darken(#ccc, 10%);
1180
- }
1181
- }
1182
-
1183
-
1184
- /* active */
1185
- &.-on {
1186
- background: #309cf3;
1187
- border-color: darken(#309cf3, 1%);
1188
-
1189
- .acf-switch-slider {
1190
- left: 50%;
1191
- right: 2px;
1192
- border-color: darken(#309cf3, 10%);
1193
- }
1194
-
1195
- /* hover */
1196
- &:hover {
1197
- background: lighten(#309cf3, 5%);
1198
- }
1199
- }
1200
-
1201
-
1202
- /* focus */
1203
- &.-focus {
1204
-
1205
- .acf-switch-slider {
1206
- border-color: #5b9dd9;
1207
- box-shadow: 0 0 2px rgba(30, 140, 190, 0.5);
1208
- }
1209
-
1210
-
1211
- &.-on {
1212
-
1213
- .acf-switch-slider {
1214
- border-color: darken(@acf_blue, 20%);
1215
- box-shadow: 0 0 2px darken(@acf_blue, 10%);
1216
- }
1217
- }
1218
-
1219
- }
1220
-
1221
-
1222
- /* message */
1223
- + span {
1224
- margin-left: 6px;
1225
- }
1226
-
1227
- }
1228
-
1229
-
1230
- /* checkbox */
1231
- .acf-switch-input {
1232
- opacity: 0;
1233
- position: absolute;
1234
- margin: 0;
1235
- }
1236
-
1237
-
1238
- /* in media modal */
1239
- .compat-item .acf-true-false {
1240
-
1241
- .message {
1242
- float: none;
1243
- padding: 0;
1244
- vertical-align: middle;
1245
- }
1246
-
1247
- }
1248
-
1249
-
1250
- /*--------------------------------------------------------------------------
1251
- *
1252
- * Google Map
1253
- *
1254
- *-------------------------------------------------------------------------*/
1255
-
1256
- .acf-google-map {
1257
- position: relative;
1258
- border: #DFDFDF solid 1px;
1259
- background: #fff;
1260
-
1261
- .title {
1262
- position: relative;
1263
- border-bottom: #DFDFDF solid 1px;
1264
-
1265
- .search {
1266
- margin: 0;
1267
- font-size: 14px;
1268
- line-height: 30px;
1269
- height: 40px;
1270
- padding: 5px 10px;
1271
- border: 0 none;
1272
- box-shadow: none;
1273
- border-radius: 0;
1274
- font-family: inherit;
1275
- cursor: text;
1276
- }
1277
-
1278
- .acf-actions {
1279
-
1280
- }
1281
-
1282
- .acf-loading {
1283
- position: absolute;
1284
- top: 10px;
1285
- right: 11px;
1286
- display: none;
1287
- }
1288
-
1289
- &:hover {
1290
- .acf-actions { display: block; }
1291
- }
1292
- }
1293
-
1294
- .canvas {
1295
- height: 400px;
1296
- }
1297
-
1298
-
1299
- /* default is focused */
1300
- .title {
1301
- .acf-icon.-location {
1302
- display: inline-block;
1303
- }
1304
- .acf-icon.-cancel {
1305
- display: none;
1306
- }
1307
- .acf-icon.-search {
1308
- display: none;
1309
- }
1310
- }
1311
-
1312
-
1313
- /* -search */
1314
- &.-search .title {
1315
- .acf-icon.-location {
1316
- display: none;
1317
- }
1318
- .acf-icon.-cancel {
1319
- display: inline-block;
1320
- }
1321
- .acf-icon.-search {
1322
- display: inline-block;
1323
- }
1324
- }
1325
-
1326
-
1327
-
1328
- /* -value */
1329
- &.-value .title {
1330
- .search {
1331
- font-weight: bold;
1332
- }
1333
- .acf-icon.-location {
1334
- display: none;
1335
- }
1336
- .acf-icon.-cancel {
1337
- display: inline-block;
1338
- }
1339
- .acf-icon.-search {
1340
- display: none;
1341
- }
1342
- }
1343
-
1344
-
1345
- /* -loading */
1346
- &.-loading .title {
1347
- a {
1348
- display: none !important;
1349
- }
1350
- i {
1351
- display: inline-block;
1352
- }
1353
- }
1354
-
1355
- }
1356
-
1357
-
1358
-
1359
- /* autocomplete */
1360
- .pac-container {
1361
- border-width: 1px 0;
1362
- box-shadow: none;
1363
- }
1364
-
1365
- .pac-container:after {
1366
- display: none;
1367
- }
1368
-
1369
- .pac-container .pac-item:first-child {
1370
- border-top: 0 none;
1371
- }
1372
- .pac-container .pac-item {
1373
- padding: 5px 10px;
1374
- cursor: pointer;
1375
- }
1376
-
1377
-
1378
- html[dir="rtl"] .pac-container .pac-item {
1379
- text-align: right;
1380
- }
1381
-
1382
-
1383
- /*--------------------------------------------------------------------------
1384
- *
1385
- * Relationship
1386
- *
1387
- *-------------------------------------------------------------------------*/
1388
-
1389
- .acf-relationship {
1390
- background: #fff;
1391
-
1392
- /* filters (top) */
1393
- .filters {
1394
- .clearfix;
1395
- border: #DFDFDF solid 1px;
1396
- background: #fff;
1397
-
1398
-
1399
- .filter {
1400
- margin: 0;
1401
- padding: 0;
1402
- float: left;
1403
- width: 100%;
1404
-
1405
-
1406
- /* inner padding */
1407
- span {
1408
- display: block;
1409
- padding: 7px 7px 7px 0;
1410
- }
1411
-
1412
- &:first-child span {
1413
- padding-left: 7px;
1414
- }
1415
-
1416
-
1417
- // inputs
1418
- input, select {
1419
- height: 28px;
1420
- line-height: 28px;
1421
- padding: 2px;
1422
- width: 100%;
1423
- margin: 0;
1424
- float: none; /* potential fix for media popup? */
1425
-
1426
- &:focus,
1427
- &:active {
1428
- outline: none;
1429
- box-shadow: none;
1430
- }
1431
- }
1432
-
1433
- input {
1434
- border-color: transparent;
1435
- box-shadow: none;
1436
- }
1437
-
1438
- }
1439
-
1440
-
1441
- /* widths */
1442
- &.-f2 {
1443
- .filter { width: 50%; }
1444
- }
1445
- &.-f3 {
1446
- .filter { width: 25%; }
1447
- .filter.-search { width: 50%; }
1448
- }
1449
-
1450
- }
1451
-
1452
-
1453
- /* list */
1454
- .list {
1455
- margin: 0;
1456
- padding: 5px;
1457
- height: 160px;
1458
- overflow: auto;
1459
-
1460
- .acf-rel-label,
1461
- .acf-rel-item,
1462
- p {
1463
- padding: 5px 7px;
1464
- margin: 0;
1465
- display: block;
1466
- position: relative;
1467
- min-height: 18px;
1468
- }
1469
-
1470
- .acf-rel-label {
1471
- font-weight: bold;
1472
- }
1473
-
1474
- .acf-rel-item {
1475
- cursor: pointer;
1476
-
1477
- b {
1478
- text-decoration: underline;
1479
- font-weight: normal;
1480
- }
1481
-
1482
- .thumbnail {
1483
- background: darken(#f9f9f9, 10%);
1484
- width: 22px;
1485
- height: 22px;
1486
- float: left;
1487
- margin: -2px 5px 0 0;
1488
-
1489
- img {
1490
- max-width: 22px;
1491
- max-height: 22px;
1492
- margin: 0 auto;
1493
- display: block;
1494
- }
1495
-
1496
- &.-icon {
1497
- background: #fff;
1498
-
1499
- img {
1500
- max-height: 20px;
1501
- margin-top: 1px;
1502
- }
1503
- }
1504
- }
1505
-
1506
- /* hover */
1507
- &:hover {
1508
- background: #3875D7;
1509
- color: #fff;
1510
-
1511
- .thumbnail {
1512
- background: lighten(#3875D7, 25%);
1513
-
1514
- &.-icon {
1515
- background: #fff;
1516
- }
1517
- }
1518
- }
1519
-
1520
-
1521
- /* disabled */
1522
- &.disabled {
1523
- opacity: 0.5;
1524
-
1525
- &:hover {
1526
- background: transparent;
1527
- color: #333;
1528
- cursor: default;
1529
-
1530
- .thumbnail {
1531
- background: darken(#f9f9f9, 10%);
1532
-
1533
- &.-icon {
1534
- background: #fff;
1535
- }
1536
- }
1537
- }
1538
- }
1539
- }
1540
-
1541
- ul {
1542
- padding-bottom: 5px;
1543
-
1544
- .acf-rel-label,
1545
- .acf-rel-item,
1546
- p {
1547
- padding-left: 20px;
1548
- }
1549
-
1550
- }
1551
-
1552
- }
1553
-
1554
-
1555
- /* selection (bottom) */
1556
- .selection {
1557
- .clearfix;
1558
- border: #DFDFDF solid 1px;
1559
- position: relative;
1560
- margin-top: -1px;
1561
-
1562
- .values,
1563
- .choices {
1564
- width: 50%;
1565
- background: #fff;
1566
- float: left
1567
- }
1568
-
1569
- /* choices */
1570
- .choices {
1571
- background: #F9F9F9;
1572
-
1573
- .list {
1574
- border-right: #DFDFDF solid 1px;
1575
- }
1576
-
1577
- }
1578
-
1579
-
1580
- /* values */
1581
- .values {
1582
-
1583
- .acf-icon {
1584
- position: absolute;
1585
- top: 4px;
1586
- right: 7px;
1587
- display: none;
1588
-
1589
- /* rtl */
1590
- html[dir="rtl"] & {
1591
- right: auto;
1592
- left: 7px;
1593
- }
1594
-
1595
- }
1596
-
1597
- .acf-rel-item:hover .acf-icon {
1598
- display: block;
1599
- }
1600
-
1601
- .acf-rel-item {
1602
- cursor: move;
1603
-
1604
- b {
1605
- text-decoration: none;
1606
- }
1607
-
1608
- }
1609
-
1610
- }
1611
-
1612
- }
1613
-
1614
-
1615
- }
1616
-
1617
- /* menu item fix */
1618
- .menu-item {
1619
-
1620
- .acf-relationship {
1621
-
1622
- ul {
1623
- width: auto;
1624
- }
1625
-
1626
- li {
1627
- display: block;
1628
- }
1629
- }
1630
- }
1631
-
1632
-
1633
- /*--------------------------------------------------------------------------
1634
- *
1635
- * WYSIWYG
1636
- *
1637
- *-------------------------------------------------------------------------*/
1638
-
1639
- .acf-editor-wrap {
1640
-
1641
- /* delay */
1642
- &.delay {
1643
-
1644
- .acf-editor-toolbar {
1645
- content: "";
1646
- display: block;
1647
- background: #f5f5f5;
1648
- border-bottom: #dddddd solid 1px;
1649
- color: #555d66;
1650
- padding: 10px;
1651
- }
1652
-
1653
- textarea {
1654
- padding: 10px;
1655
- }
1656
-
1657
- }
1658
- }
1659
-
1660
- .acf-editor-wrap iframe{
1661
- min-height: 200px;
1662
- }
1663
-
1664
- .acf-editor-wrap .wp-editor-container{
1665
- border: 1px solid #E5E5E5;
1666
- box-shadow: none;
1667
- }
1668
-
1669
- #mce_fullscreen_container {
1670
- z-index: 900000 !important;
1671
- }
1672
-
1673
-
1674
- /* WP < 4.1 */
1675
- .acf-editor-wrap .wp-switch-editor {
1676
- float: left;
1677
- -moz-box-sizing: content-box;
1678
- -webkit-box-sizing: content-box;
1679
- box-sizing: content-box;
1680
- }
1681
-
1682
- .acf-editor-wrap.tmce-active .wp-editor-area {
1683
- color: #333 !important;
1684
- }
1685
-
1686
-
1687
- /*---------------------------------------------------------------------------------------------
1688
- *
1689
- * Tab
1690
- *
1691
- *---------------------------------------------------------------------------------------------*/
1692
-
1693
- .acf-field-tab {
1694
- display: none !important;
1695
- }
1696
-
1697
- // class to hide fields
1698
- .hidden-by-tab {
1699
- display: none !important;
1700
- }
1701
-
1702
- // ensure floating fields do not disturb tab wrap
1703
- .acf-tab-wrap {
1704
- clear: both;
1705
- z-index: 1;
1706
- }
1707
-
1708
- // tab group
1709
- .acf-tab-group {
1710
- border-bottom: #ccc solid 1px;
1711
- padding: 10px 10px 0;
1712
-
1713
- li {
1714
- margin: 0 0.5em 0 0;
1715
-
1716
- a {
1717
- padding: 5px 10px;
1718
- display: block;
1719
-
1720
- color: #555;
1721
- font-size: 14px;
1722
- font-weight: 600;
1723
- line-height: 24px;
1724
-
1725
- border: #ccc solid 1px;
1726
- border-bottom: 0 none;
1727
- text-decoration: none;
1728
- background: #e5e5e5;
1729
- transition: none;
1730
-
1731
- &:hover {
1732
- background: #FFF;
1733
- }
1734
-
1735
- &:focus {
1736
- outline: none;
1737
- box-shadow: none;
1738
- }
1739
-
1740
- &:empty {
1741
- display: none;
1742
- }
1743
-
1744
- }
1745
-
1746
-
1747
- // rtl
1748
- html[dir="rtl"] & {
1749
- margin: 0 0 0 0.5em;
1750
- }
1751
-
1752
-
1753
- // active
1754
- &.active a {
1755
- background: #F1F1F1;
1756
- color: #000;
1757
- padding-bottom: 6px;
1758
- margin-bottom: -1px;
1759
- position: relative;
1760
- z-index: 1;
1761
- }
1762
- }
1763
- }
1764
-
1765
-
1766
- // inside acf-fields
1767
- .acf-fields > .acf-tab-wrap {
1768
- background: #F9F9F9;
1769
-
1770
- // group
1771
- .acf-tab-group {
1772
- position: relative;
1773
- z-index: 1;
1774
- margin-bottom: -1px;
1775
- border-top: #DFDFDF solid 1px;
1776
- border-bottom: #DFDFDF solid 1px;
1777
-
1778
- li a {
1779
- background: #f1f1f1;
1780
-
1781
- &:hover {
1782
- background: #FFF;
1783
- }
1784
- }
1785
-
1786
- li.active a {
1787
- background: #FFFFFF;
1788
- }
1789
- }
1790
-
1791
- // first child
1792
- // fixes issue causing double border-top due to WP postbox .handlediv
1793
- &:first-child .acf-tab-group {
1794
- border-top: none;
1795
- }
1796
-
1797
- }
1798
-
1799
-
1800
- // inside acf-fields.-left
1801
- .acf-fields.-left > .acf-tab-wrap {
1802
-
1803
- // group
1804
- .acf-tab-group {
1805
- padding-left: 20%;
1806
-
1807
- /* mobile */
1808
- @media screen and (max-width: @sm) {
1809
- padding-left: 10px;
1810
- }
1811
-
1812
-
1813
- /* rtl */
1814
- html[dir="rtl"] & {
1815
- padding-left: 0;
1816
- padding-right: 20%;
1817
-
1818
- /* mobile */
1819
- @media screen and (max-width: 850px) {
1820
- padding-right: 10px;
1821
- }
1822
- }
1823
- }
1824
- }
1825
-
1826
-
1827
- // left
1828
- .acf-tab-wrap.-left {
1829
-
1830
- // group
1831
- .acf-tab-group {
1832
- position: absolute;
1833
- left: 0;
1834
- width: 20%;
1835
- border: 0 none;
1836
- padding: 0 !important; /* important overrides 'left aligned labels' */
1837
- margin: 1px 0 0;
1838
-
1839
- // li
1840
- li {
1841
- float: none;
1842
- margin: -1px 0 0;
1843
-
1844
- a {
1845
- border: 1px solid #ededed;
1846
- font-size: 13px;
1847
- line-height: 18px;
1848
- color: #0073aa;
1849
- padding: 10px;
1850
- margin: 0;
1851
- font-weight: normal;
1852
- border-width: 1px 0;
1853
- border-radius: 0;
1854
- background: transparent;
1855
-
1856
- &:hover {
1857
- color: #00a0d2;
1858
- }
1859
- }
1860
-
1861
- &.active a {
1862
- border-color:#DFDFDF;
1863
- color: #000;
1864
- margin-right: -1px;
1865
- background: #fff;
1866
- }
1867
- }
1868
-
1869
- // rtl
1870
- html[dir="rtl"] & {
1871
- left: auto;
1872
- right: 0;
1873
-
1874
- li.active a {
1875
- margin-right: 0;
1876
- margin-left: -1px;
1877
- }
1878
- }
1879
- }
1880
-
1881
- // space before field
1882
- .acf-field + &:before {
1883
- content: "";
1884
- display: block;
1885
- position: relative;
1886
- z-index: 1;
1887
- height: 10px;
1888
- border-top: #DFDFDF solid 1px;
1889
- border-bottom: #DFDFDF solid 1px;
1890
- margin-bottom: -1px;
1891
- }
1892
-
1893
-
1894
- // first child has negative margin issues
1895
- &:first-child {
1896
-
1897
- .acf-tab-group {
1898
-
1899
- li:first-child a {
1900
- border-top: none;
1901
- }
1902
- }
1903
- }
1904
- }
1905
-
1906
-
1907
- /* sidebar */
1908
- .acf-fields.-sidebar {
1909
- padding: 0 0 0 20% !important;
1910
- position: relative;
1911
-
1912
- /* before */
1913
- &:before {
1914
- content: "";
1915
- display: block;
1916
- position: absolute;
1917
- top: 0;
1918
- left: 0;
1919
- width: 20%;
1920
- bottom: 0;
1921
- border-right: #DFDFDF solid 1px;
1922
- background: #F9F9F9;
1923
- z-index: 1;
1924
- }
1925
-
1926
-
1927
- /* rtl */
1928
- html[dir="rtl"] & {
1929
- padding: 0 20% 0 0 !important;
1930
-
1931
- &:before {
1932
- border-left: #DFDFDF solid 1px;
1933
- border-right-width: 0;
1934
- left: auto;
1935
- right: 0;
1936
- }
1937
- }
1938
-
1939
-
1940
- // left
1941
- &.-left {
1942
- padding: 0 0 0 180px !important;
1943
-
1944
- /* rtl */
1945
- html[dir="rtl"] & {
1946
- padding: 0 180px 0 0 !important;
1947
- }
1948
-
1949
- &:before {
1950
- background: #F1F1F1;
1951
- border-color: #dfdfdf;
1952
- width: 180px;
1953
- }
1954
-
1955
- > .acf-tab-wrap.-left .acf-tab-group {
1956
- width: 180px;
1957
-
1958
- li a {
1959
- border-color: #e4e4e4;
1960
- }
1961
-
1962
- li.active a {
1963
- background: #F9F9F9;
1964
- }
1965
-
1966
- }
1967
- }
1968
-
1969
- // fix double border
1970
- > .acf-field-tab + .acf-field {
1971
- border-top: none;
1972
- }
1973
- }
1974
-
1975
-
1976
- // clear
1977
- .acf-fields.-clear > .acf-tab-wrap {
1978
- background: transparent;
1979
-
1980
- // group
1981
- .acf-tab-group {
1982
- margin-top: 0;
1983
- border-top: none;
1984
- padding-left: 0;
1985
- padding-right: 0;
1986
-
1987
- li a {
1988
- background: #e5e5e5;
1989
-
1990
- &:hover {
1991
- background: #fff;
1992
- }
1993
- }
1994
-
1995
- li.active a {
1996
- background: #f1f1f1;
1997
- }
1998
- }
1999
- }
2000
-
2001
-
2002
- /* seamless */
2003
- .acf-postbox.seamless {
2004
-
2005
- // sidebar
2006
- > .acf-fields.-sidebar {
2007
- margin-left: 0 !important;
2008
-
2009
- &:before {
2010
- background: transparent;
2011
- }
2012
- }
2013
-
2014
- // default
2015
- > .acf-fields > .acf-tab-wrap {
2016
- background: transparent;
2017
- margin-bottom: 10px;
2018
- padding-left: @fx;
2019
- padding-right: @fx;
2020
-
2021
- .acf-tab-group {
2022
- border-top: 0 none;
2023
-
2024
- li a {
2025
- background: #e5e5e5;
2026
-
2027
- &:hover {
2028
- background: #fff;
2029
- }
2030
- }
2031
-
2032
- li.active a {
2033
- background: #f1f1f1;
2034
- }
2035
- }
2036
- }
2037
-
2038
- // left tabs
2039
- > .acf-fields > .acf-tab-wrap.-left {
2040
-
2041
- &:before {
2042
- border-top: none;
2043
- height: auto;
2044
- }
2045
-
2046
- .acf-tab-group {
2047
- margin-bottom: 0;
2048
-
2049
- li a {
2050
- border-width: 1px 0 1px 1px !important;
2051
- border-color: #cccccc;
2052
- background: #e5e5e5;
2053
- }
2054
-
2055
- li.active a {
2056
- background: #f1f1f1;
2057
- }
2058
- }
2059
-
2060
- }
2061
- }
2062
-
2063
-
2064
- // menu
2065
- .menu-edit,
2066
- .widget {
2067
- .acf-fields.-clear > .acf-tab-wrap .acf-tab-group li {
2068
- a { background: #f1f1f1; }
2069
- a:hover, &.active a { background: #fff; }
2070
- }
2071
- }
2072
-
2073
- .compat-item .acf-tab-wrap td {
2074
- display: block;
2075
- }
2076
-
2077
-
2078
-
2079
- /* within gallery sidebar */
2080
- .acf-gallery-side .acf-tab-wrap {
2081
- border-top: 0 none !important;
2082
- }
2083
-
2084
- .acf-gallery-side .acf-tab-wrap .acf-tab-group {
2085
- margin: 10px 0 !important;
2086
- padding: 0 !important;
2087
- }
2088
-
2089
- .acf-gallery-side .acf-tab-group li.active a {
2090
- background: #F9F9F9 !important;
2091
- }
2092
-
2093
-
2094
-
2095
- /* withing widget */
2096
- .widget .acf-tab-group {
2097
- border-bottom-color: #e8e8e8;
2098
- }
2099
-
2100
- .widget .acf-tab-group li a {
2101
- background: #F1F1F1;
2102
- }
2103
-
2104
- .widget .acf-tab-group li.active a {
2105
- background: #fff;
2106
- }
2107
-
2108
-
2109
- /* media popup (edit image) */
2110
- .media-modal.acf-expanded .compat-attachment-fields > tbody > tr.acf-tab-wrap .acf-tab-group {
2111
- padding-left: 23%;
2112
- border-bottom-color: #DDDDDD;
2113
- }
2114
-
2115
-
2116
- /* table */
2117
-
2118
-
2119
- .form-table > tbody > tr.acf-tab-wrap .acf-tab-group {
2120
- padding: 0 5px 0 210px;
2121
- }
2122
-
2123
- /* rtl */
2124
- html[dir="rtl"] .form-table > tbody > tr.acf-tab-wrap .acf-tab-group {
2125
- padding: 0 210px 0 5px;
2126
- }
2127
-
2128
-
2129
- /*--------------------------------------------------------------------------------------------
2130
- *
2131
- * oembed
2132
- *
2133
- *--------------------------------------------------------------------------------------------*/
2134
-
2135
- .acf-oembed {
2136
- position: relative;
2137
- border: #DFDFDF solid 1px;
2138
- background: #fff;
2139
-
2140
- .title {
2141
- position: relative;
2142
- border-bottom: #DFDFDF solid 1px;
2143
- padding: 5px 10px;
2144
-
2145
- .input-search {
2146
- margin: 0;
2147
- font-size: 14px;
2148
- line-height: 30px;
2149
- height: 30px;
2150
- padding: 0;
2151
- border: 0 none;
2152
- box-shadow: none;
2153
- border-radius: 0;
2154
- font-family: inherit;
2155
- cursor: text;
2156
- }
2157
-
2158
- .acf-actions {
2159
- padding: 6px;
2160
- }
2161
- }
2162
-
2163
- .canvas {
2164
- position: relative;
2165
- min-height: 250px;
2166
- background: #F9F9F9;
2167
-
2168
- .canvas-media {
2169
- position: relative;
2170
- z-index: 1;
2171
- }
2172
-
2173
- iframe {
2174
- display: block;
2175
- margin: 0;
2176
- padding: 0;
2177
- width: 100%;
2178
- }
2179
-
2180
- .acf-icon.-picture {
2181
- .centered;
2182
- z-index: 0;
2183
-
2184
- height: 42px;
2185
- width: 42px;
2186
- font-size: 42px;
2187
- color: #999;
2188
- }
2189
-
2190
- .acf-loading-overlay {
2191
- background: rgba(255,255,255,0.9);
2192
- }
2193
-
2194
- .canvas-error {
2195
- position: absolute;
2196
- top: 50%;
2197
- left: 0%;
2198
- right: 0%;
2199
- margin: -9px 0 0 0;
2200
- text-align: center;
2201
- display: none;
2202
-
2203
- p {
2204
- padding: 8px;
2205
- margin: 0;
2206
- display: inline;
2207
- }
2208
- }
2209
- }
2210
-
2211
- // has value
2212
- &.has-value {
2213
- .canvas {
2214
- min-height: 50;
2215
- }
2216
-
2217
- .input-search {
2218
- font-weight: bold;
2219
- }
2220
-
2221
- .title:hover .acf-actions {
2222
- display: block;
2223
- }
2224
- }
2225
-
2226
- }
2227
-
2228
- /*--------------------------------------------------------------------------------------------
2229
- *
2230
- * Image
2231
- *
2232
- *--------------------------------------------------------------------------------------------*/
2233
-
2234
- .acf-image-uploader {
2235
- .clearfix;
2236
- position: relative;
2237
-
2238
-
2239
- p {
2240
- margin: 0;
2241
- }
2242
-
2243
-
2244
- /* image wrap*/
2245
- .image-wrap {
2246
- position: relative;
2247
- float: left;
2248
-
2249
- img {
2250
- max-width: 100%;
2251
- width: auto;
2252
- height: auto;
2253
- display: block;
2254
- min-width: 30px;
2255
- min-height: 30px;
2256
- background: #f1f1f1;
2257
- margin: 0;
2258
- padding: 0;
2259
-
2260
-
2261
- /* svg */
2262
- &[src$=".svg"] {
2263
- min-height: 100px;
2264
- min-width: 100px;
2265
- }
2266
- }
2267
-
2268
-
2269
- /* hover */
2270
- &:hover .acf-actions {
2271
- display: block;
2272
- }
2273
- }
2274
-
2275
-
2276
- /* input */
2277
- input.button {
2278
- width: auto;
2279
- }
2280
-
2281
-
2282
- /* rtl */
2283
- html[dir="rtl"] & {
2284
-
2285
- .image-wrap {
2286
- float: right;
2287
- }
2288
-
2289
- }
2290
-
2291
- }
2292
-
2293
-
2294
- /*--------------------------------------------------------------------------------------------
2295
- *
2296
- * File
2297
- *
2298
- *--------------------------------------------------------------------------------------------*/
2299
-
2300
- .acf-file-uploader {
2301
- position: relative;
2302
-
2303
- p {
2304
- margin: 0;
2305
- }
2306
-
2307
- .file-wrap {
2308
- border: #DFDFDF solid 1px;
2309
- min-height: 84px;
2310
- position: relative;
2311
- background: #fff;
2312
- }
2313
-
2314
- .file-icon {
2315
- position: absolute;
2316
- top: 0;
2317
- left: 0;
2318
- bottom: 0;
2319
- padding: 10px;
2320
- background: #F1F1F1;
2321
- border-right: #E5E5E5 solid 1px;
2322
-
2323
- img {
2324
- display: block;
2325
- padding: 0;
2326
- margin: 0;
2327
- max-width: 48px;
2328
- }
2329
- }
2330
-
2331
- .file-info {
2332
- padding: 10px;
2333
- margin-left: 69px;
2334
-
2335
- p {
2336
- margin: 0 0 2px;
2337
- font-size: 13px;
2338
- line-height: 1.4em;
2339
- word-break: break-all;
2340
- }
2341
-
2342
- a {
2343
- text-decoration: none;
2344
- }
2345
- }
2346
-
2347
- /* hover */
2348
- &:hover .acf-actions {
2349
- display: block;
2350
- }
2351
-
2352
-
2353
- /* rtl */
2354
- html[dir="rtl"] & {
2355
-
2356
- .file-icon {
2357
- left: auto;
2358
- right: 0;
2359
- border-left: #E5E5E5 solid 1px;
2360
- border-right: none;
2361
- }
2362
-
2363
- .file-info {
2364
- margin-right: 69px;
2365
- margin-left: 0;
2366
- }
2367
- }
2368
-
2369
- }
2370
-
2371
-
2372
- /*---------------------------------------------------------------------------------------------
2373
- *
2374
- * Date Picker
2375
- *
2376
- *---------------------------------------------------------------------------------------------*/
2377
-
2378
- .acf-ui-datepicker .ui-datepicker {
2379
- z-index: 900000 !important;
2380
-
2381
- .ui-widget-header a {
2382
- cursor: pointer;
2383
- transition: none;
2384
- }
2385
- }
2386
-
2387
-
2388
- /* fix highlight state overriding hover / active */
2389
- .acf-ui-datepicker .ui-state-highlight.ui-state-hover {
2390
- border: 1px solid #98b7e8 !important;
2391
- background: #98b7e8 !important;
2392
- font-weight: normal !important;
2393
- color: #ffffff !important;
2394
- }
2395
-
2396
- .acf-ui-datepicker .ui-state-highlight.ui-state-active {
2397
- border: 1px solid #3875d7 !important;
2398
- background: #3875d7 !important;
2399
- font-weight: normal !important;
2400
- color: #ffffff !important;
2401
- }
2402
-
2403
-
2404
- /*---------------------------------------------------------------------------------------------
2405
- *
2406
- * Separator field
2407
- *
2408
- *---------------------------------------------------------------------------------------------*/
2409
-
2410
- .acf-field-separator {
2411
-
2412
- .acf-label {
2413
- margin-bottom: 0;
2414
-
2415
- label {
2416
- font-weight: normal;
2417
- }
2418
- }
2419
-
2420
- .acf-input {
2421
- display: none;
2422
- }
2423
-
2424
-
2425
- /* fields */
2426
- .acf-fields > & {
2427
- background: #f9f9f9;
2428
- border-bottom: 1px solid #dfdfdf;
2429
- border-top: 1px solid #dfdfdf;
2430
- margin-bottom: -1px;
2431
- z-index: 2;
2432
- }
2433
-
2434
- }
2435
-
2436
-
2437
- /*---------------------------------------------------------------------------------------------
2438
- *
2439
- * Taxonomy
2440
- *
2441
- *---------------------------------------------------------------------------------------------*/
2442
-
2443
- .acf-taxonomy-field {
2444
- position: relative;
2445
-
2446
- .categorychecklist-holder {
2447
- border: #DFDFDF solid 1px;
2448
- border-radius: 3px;
2449
- max-height: 200px;
2450
- overflow: auto;
2451
- }
2452
-
2453
- .acf-checkbox-list {
2454
- margin: 0;
2455
- padding: 10px;
2456
-
2457
- ul.children {
2458
- padding-left: 18px;
2459
- }
2460
- }
2461
-
2462
-
2463
- /* hover */
2464
- &:hover {
2465
- .acf-actions {
2466
- display: block;
2467
- }
2468
- }
2469
-
2470
-
2471
- /* select */
2472
- &[data-ftype="select"] {
2473
- .acf-actions {
2474
- padding: 0;
2475
- margin: -9px;
2476
- }
2477
- }
2478
-
2479
- }
2480
-
2481
-
2482
- /*---------------------------------------------------------------------------------------------
2483
- *
2484
- * Range
2485
- *
2486
- *---------------------------------------------------------------------------------------------*/
2487
-
2488
- .acf-range-wrap {
2489
-
2490
- .acf-append,
2491
- .acf-prepend {
2492
- display: inline-block;
2493
- vertical-align: middle;
2494
- line-height: 28px;
2495
- margin: 0 7px 0 0;
2496
- }
2497
-
2498
- .acf-append {
2499
- margin: 0 0 0 7px;
2500
- }
2501
-
2502
- input[type="range"] {
2503
- display: inline-block;
2504
- padding: 0;
2505
- margin: 0;
2506
- vertical-align: middle;
2507
- height: 28px;
2508
-
2509
- &:focus {
2510
- outline: none;
2511
- }
2512
-
2513
- }
2514
-
2515
- input[type="number"] {
2516
- display: inline-block;
2517
- min-width: 3em;
2518
- margin-left: 10px;
2519
- vertical-align: middle;
2520
- }
2521
-
2522
-
2523
- /* rtl */
2524
- html[dir="rtl"] & {
2525
-
2526
- input[type="number"] {
2527
- margin-right: 10px;
2528
- margin-left: 0;
2529
- }
2530
-
2531
- .acf-append { margin: 0 7px 0 0; }
2532
- .acf-prepend { margin: 0 0 0 7px; }
2533
-
2534
- }
2535
-
2536
- }
2537
-
2538
-
2539
- /*---------------------------------------------------------------------------------------------
2540
- *
2541
- * acf-accordion
2542
- *
2543
- *---------------------------------------------------------------------------------------------*/
2544
-
2545
- .acf-accordion {
2546
- margin: 0;
2547
- padding: 0;
2548
- background: #fff;
2549
-
2550
- /* title */
2551
- .acf-accordion-title {
2552
- margin: 0;
2553
- padding: 12px;
2554
- font-weight: bold;
2555
- cursor: pointer;
2556
- font-size: inherit;
2557
- font-size: 13px;
2558
- line-height: 1.4em;
2559
-
2560
- label {
2561
- margin: 0;
2562
- padding: 0;
2563
- font-size: 13px;
2564
- line-height: 1.4em;
2565
- }
2566
-
2567
- p {
2568
- font-weight: normal;
2569
- }
2570
-
2571
- .acf-accordion-icon {
2572
- float: right;
2573
- }
2574
- }
2575
-
2576
- .acf-accordion-content {
2577
- margin: 0;
2578
- padding: 0 12px 12px;
2579
- display: none;
2580
- }
2581
-
2582
-
2583
- /* open */
2584
- &.-open {
2585
-
2586
- > .acf-accordion-content {
2587
- display: block;
2588
- }
2589
-
2590
- }
2591
- }
2592
-
2593
-
2594
- /* field specific */
2595
- .acf-field.acf-accordion {
2596
- padding: 0;
2597
- border-color: #dfdfdf;
2598
-
2599
- .acf-accordion-title {
2600
- padding: 12px !important;
2601
- width: auto !important;
2602
- float: none !important;
2603
- width: auto !important;
2604
- }
2605
-
2606
- .acf-accordion-content {
2607
- padding: 0;
2608
- float: none !important;
2609
- width: auto !important;
2610
-
2611
- > .acf-fields {
2612
- border-top: #EEEEEE solid 1px;
2613
-
2614
- &.-clear {
2615
- padding: 0 @fx @fy;
2616
- }
2617
- }
2618
- }
2619
- }
2620
-
2621
-
2622
- /* field specific (left) */
2623
- .acf-fields.-left > .acf-field.acf-accordion {
2624
- padding: 0 !important;
2625
-
2626
- &:before {
2627
- display: none;
2628
- }
2629
-
2630
- .acf-accordion-title {
2631
- width: auto;
2632
- margin: 0 !important;
2633
- padding: 12px;
2634
- float: none !important;
2635
- }
2636
-
2637
- .acf-accordion-content {
2638
- padding: 0 !important;
2639
- }
2640
- }
2641
-
2642
-
2643
- /* field specific (clear) */
2644
- .acf-fields.-clear > .acf-field.acf-accordion {
2645
- border: #cccccc solid 1px;
2646
- background: transparent;
2647
-
2648
- + .acf-field.acf-accordion {
2649
- margin-top: -16px;
2650
- }
2651
- }
2652
-
2653
-
2654
- /* table */
2655
- tr.acf-field.acf-accordion {
2656
- background: transparent;
2657
-
2658
- > .acf-input {
2659
- padding: 0 !important;
2660
- border: #cccccc solid 1px;
2661
- }
2662
-
2663
- .acf-accordion-content {
2664
- padding: 0 12px 12px;
2665
- }
2666
- }
2667
-
2668
-
2669
- /* #addtag */
2670
- #addtag div.acf-field.error {
2671
- border: 0 none;
2672
- padding: 8px 0;
2673
- }
2674
-
2675
-
2676
- #addtag > .acf-field.acf-accordion {
2677
- padding-right: 0;
2678
- margin-right: 5%;
2679
-
2680
- + p.submit {
2681
- margin-top: 0;
2682
- }
2683
- }
2684
-
2685
-
2686
-
2687
- /* border */
2688
- tr.acf-accordion {
2689
- margin: 15px 0 !important;
2690
-
2691
- + tr.acf-accordion {
2692
- margin-top: -16px !important;
2693
- }
2694
- }
2695
-
2696
-
2697
- /* seamless */
2698
- .acf-postbox.seamless > .acf-fields > .acf-accordion {
2699
- margin-left: @field_padding_x !important;
2700
- margin-right: @field_padding_x !important;
2701
- }
2702
-
2703
-
2704
- /* rtl */
2705
- html[dir="rtl"] .acf-accordion {
2706
-
2707
- }
2708
-
2709
-
2710
- /* menu item */
2711
- /*
2712
- .menu-item-settings > .field-acf > .acf-field.acf-accordion {
2713
- border: #dfdfdf solid 1px;
2714
- margin: 10px -13px 10px -11px;
2715
-
2716
- + .acf-field.acf-accordion {
2717
- margin-top: -11px;
2718
- }
2719
- }
2720
- */
2721
-
2722
-
2723
- /* widget */
2724
- .widget .widget-content > .acf-field.acf-accordion {
2725
- border: #dfdfdf solid 1px;
2726
- margin-bottom: 10px;
2727
-
2728
- .acf-accordion-title {
2729
- margin-bottom: 0;
2730
- }
2731
-
2732
- + .acf-field.acf-accordion {
2733
- margin-top: -11px;
2734
- }
2735
- }
2736
-
2737
-
2738
- // seamless
2739
- .acf-postbox.seamless > .acf-fields > .acf-field.acf-accordion {
2740
- border: #e5e5e5 solid 1px;
2741
-
2742
- // siblings
2743
- + .acf-field.acf-accordion {
2744
- margin-top: -1px;
2745
- }
2746
- }
2747
-
2748
-
2749
- // media modal
2750
- .media-modal .compat-attachment-fields .acf-field.acf-accordion {
2751
-
2752
- // siblings
2753
- + .acf-field.acf-accordion {
2754
- margin-top: -1px;
2755
- }
2756
-
2757
- // input
2758
- > .acf-input {
2759
- width: 100%;
2760
- }
2761
-
2762
- // table
2763
- .compat-attachment-fields > tbody > tr > td {
2764
- padding-bottom: 5px;
2765
- }
2766
- }
2767
-
2768
-
2769
-
2770
- /*---------------------------------------------------------------------------------------------
2771
- *
2772
- * Attachment Form (single page)
2773
- *
2774
- *---------------------------------------------------------------------------------------------*/
2775
-
2776
- #post .compat-attachment-fields {
2777
-
2778
- .compat-field-acf-form-data {
2779
- display: none;
2780
- }
2781
-
2782
- &,
2783
- > tbody,
2784
- > tbody > tr,
2785
- > tbody > tr > th,
2786
- > tbody > tr > td {
2787
- display: block;
2788
- }
2789
-
2790
- > tbody > .acf-field {
2791
- margin: 15px 0;
2792
-
2793
- > .acf-label {
2794
- margin: 0;
2795
-
2796
- label {
2797
- margin: 0;
2798
- padding: 0;
2799
-
2800
- p {
2801
- margin: 0 0 3px !important;
2802
- }
2803
- }
2804
- }
2805
-
2806
- > .acf-input {
2807
- margin: 0;
2808
- }
2809
- }
2810
- }
2811
-
2812
-
2813
- /*---------------------------------------------------------------------------------------------
2814
- *
2815
- * Media Model
2816
- *
2817
- *---------------------------------------------------------------------------------------------*/
2818
-
2819
- /* WP sets tables to act as divs. ACF uses tables, so these muct be reset */
2820
- .media-modal .compat-attachment-fields td.acf-input {
2821
-
2822
- table {
2823
- display: table;
2824
- table-layout: auto;
2825
-
2826
- tbody {
2827
- display: table-row-group;
2828
- }
2829
-
2830
- tr {
2831
- display: table-row;
2832
- }
2833
-
2834
- td, th {
2835
- display: table-cell;
2836
- }
2837
-
2838
- }
2839
-
2840
- }
2841
-
2842
-
2843
- /* field widths floats */
2844
- .media-modal .compat-attachment-fields > tbody > .acf-field {
2845
- margin: 5px 0;
2846
-
2847
- > .acf-label {
2848
- min-width: 30%;
2849
- margin: 0;
2850
- padding: 0;
2851
- float: left;
2852
- text-align: right;
2853
- display: block;
2854
- float: left;
2855
-
2856
- > label {
2857
- padding-top: 6px;
2858
- margin: 0;
2859
- color: #666666;
2860
- font-weight: 400;
2861
- line-height: 16px;
2862
- }
2863
- }
2864
-
2865
- > .acf-input {
2866
- width: 65%;
2867
- margin: 0;
2868
- padding: 0;
2869
- float: right;
2870
- display: block;
2871
- }
2872
-
2873
- p.description {
2874
- margin: 0;
2875
- }
2876
- }
2877
-
2878
-
2879
- /* restricted selection (copy of WP .upload-errors)*/
2880
- .acf-selection-error {
2881
- background: #ffebe8;
2882
- border: 1px solid #c00;
2883
- border-radius: 3px;
2884
- padding: 8px;
2885
- margin: 20px 0 0;
2886
-
2887
- .selection-error-label {
2888
- background: #CC0000;
2889
- border-radius: 3px;
2890
- color: #fff;
2891
- font-weight: bold;
2892
- margin-right: 8px;
2893
- padding: 2px 4px;
2894
- }
2895
-
2896
- .selection-error-message {
2897
- color: #b44;
2898
- display: block;
2899
- padding-top: 8px;
2900
- word-wrap: break-word;
2901
- white-space: pre-wrap;
2902
- }
2903
- }
2904
-
2905
-
2906
- /* disabled attachment */
2907
- .media-modal .attachment.acf-disabled {
2908
-
2909
- .thumbnail {
2910
- opacity: 0.25 !important;
2911
- }
2912
-
2913
- .attachment-preview:before {
2914
- background: rgba(0,0,0,0.15);
2915
- z-index: 1;
2916
- position: relative;
2917
- }
2918
-
2919
- }
2920
-
2921
-
2922
- /* misc */
2923
- .media-modal {
2924
-
2925
- /* compat-item */
2926
- .compat-field-acf-form-data,
2927
- .compat-field-acf-blank {
2928
- display: none !important;
2929
- }
2930
-
2931
-
2932
- /* allow line breaks in upload error */
2933
- .upload-error-message {
2934
- white-space: pre-wrap;
2935
- }
2936
-
2937
-
2938
- /* fix required span */
2939
- .acf-required {
2940
- padding: 0 !important;
2941
- margin: 0 !important;
2942
- float: none !important;
2943
- color: #f00 !important;
2944
- }
2945
-
2946
-
2947
- /* sidebar */
2948
- .media-sidebar {
2949
-
2950
- .compat-item{
2951
- padding-bottom: 20px;
2952
- }
2953
-
2954
- }
2955
-
2956
-
2957
- /* mobile md */
2958
- @media (max-width: 900px) {
2959
-
2960
- /* label */
2961
- .setting span,
2962
- .compat-attachment-fields > tbody > .acf-field > .acf-label {
2963
- width: 98%;
2964
- float: none;
2965
- text-align: left;
2966
- min-height: 0;
2967
- padding: 0;
2968
- }
2969
-
2970
-
2971
- /* field */
2972
- .setting input,
2973
- .setting textarea,
2974
- .compat-attachment-fields > tbody > .acf-field > .acf-input {
2975
- float: none;
2976
- height: auto;
2977
- max-width: none;
2978
- width: 98%;
2979
- }
2980
-
2981
- }
2982
-
2983
-
2984
- }
2985
-
2986
-
2987
-
2988
- /*---------------------------------------------------------------------------------------------
2989
- *
2990
- * Media Model (expand details)
2991
- *
2992
- *---------------------------------------------------------------------------------------------*/
2993
-
2994
- .media-modal .acf-expand-details {
2995
- float: right;
2996
- padding: 1px 10px;
2997
- margin-right: 6px;
2998
- height: 18px;
2999
- line-height: 18px;
3000
- color: #AAAAAA;
3001
- font-size: 12px;
3002
-
3003
- &:focus, &:active {
3004
- outline: 0 none;
3005
- box-shadow: none;
3006
- color: #AAAAAA;
3007
- }
3008
-
3009
- &:hover {
3010
- color: #666666 !important;
3011
- }
3012
-
3013
- span {
3014
- display: block;
3015
- float: left;
3016
- }
3017
-
3018
- .acf-icon {
3019
- margin: 0 4px 0 0;
3020
- }
3021
-
3022
- &:hover .acf-icon {
3023
- border-color: #AAAAAA;
3024
- }
3025
-
3026
- .is-open { display: none; }
3027
- .is-closed { display: block; }
3028
-
3029
-
3030
- /* mobile sm */
3031
- @media (max-width: @sm) {
3032
- display: none;
3033
- }
3034
- }
3035
-
3036
-
3037
- /* expanded */
3038
- .media-modal.acf-expanded {
3039
-
3040
- /* toggle */
3041
- .acf-expand-details {
3042
-
3043
- .is-open { display: block; }
3044
- .is-closed { display: none; }
3045
-
3046
- }
3047
-
3048
-
3049
- /* resize */
3050
- .attachments-browser .media-toolbar,
3051
- .attachments-browser .attachments { right: 740px; }
3052
- .media-sidebar { width: 708px; }
3053
-
3054
-
3055
- /* label & fields */
3056
- .media-sidebar {
3057
-
3058
- /* label */
3059
- .attachment-info .thumbnail,
3060
- .setting span,
3061
- .compat-attachment-fields > tbody > .acf-field > .acf-label {
3062
- min-width: 20%;
3063
- }
3064
-
3065
-
3066
- /* field */
3067
- .attachment-info .details,
3068
- .setting input,
3069
- .setting textarea,
3070
- .compat-attachment-fields > tbody > .acf-field > .acf-input {
3071
- min-width: 77%;
3072
- }
3073
-
3074
- .setting span {
3075
- margin-right: 2%;
3076
- }
3077
-
3078
-
3079
- /* larger thumbnail */
3080
- .attachment-info {
3081
-
3082
- .thumbnail {
3083
- max-height: none;
3084
-
3085
- img {
3086
- max-width: 100%;
3087
- max-height: 200px;
3088
- }
3089
-
3090
- }
3091
-
3092
- .details {
3093
- float: right;
3094
-
3095
- }
3096
-
3097
- }
3098
-
3099
- }
3100
-
3101
-
3102
- /* mobile md */
3103
- @media (max-width: 900px) {
3104
-
3105
- /* resize */
3106
- .attachments-browser .media-toolbar { display: none; }
3107
- .attachments { display: none; }
3108
- .media-sidebar { width: auto; max-width: none !important; }
3109
-
3110
-
3111
- .media-sidebar {
3112
-
3113
- .attachment-info {
3114
-
3115
- .thumbnail {
3116
- min-width: 30%;
3117
- margin: 0;
3118
- }
3119
-
3120
- .details {
3121
- min-width: 67%;
3122
- }
3123
-
3124
- }
3125
-
3126
- }
3127
-
3128
- }
3129
-
3130
- }
3131
-
3132
-
3133
-
3134
- /*---------------------------------------------------------------------------------------------
3135
- *
3136
- * ACF Media Model
3137
- *
3138
- *---------------------------------------------------------------------------------------------*/
3139
-
3140
- .acf-media-modal {
3141
-
3142
- /* hide embed settings */
3143
- .media-embed {
3144
-
3145
- .setting.align,
3146
- .setting.link-to {
3147
- display: none;
3148
- }
3149
-
3150
- }
3151
-
3152
- // only allow for devices larger than mobile
3153
- @media screen and (min-width: 1024px) {
3154
-
3155
- // - requires long selector to override WP core
3156
- .media-modal-content .media-frame .media-toolbar-secondary {
3157
- max-width: none;
3158
-
3159
- select.attachment-filters {
3160
- width: auto;
3161
- min-width: 150px;
3162
- max-width: none;
3163
- margin: 11px 6px 0 0;
3164
- vertical-align: middle;
3165
- }
3166
- }
3167
- }
3168
- }
3169
-
3170
-
3171
- /*---------------------------------------------------------------------------------------------
3172
- *
3173
- * ACF Media Model (Select Mode)
3174
- *
3175
- *---------------------------------------------------------------------------------------------*/
3176
-
3177
- .acf-media-modal.-select {
3178
-
3179
-
3180
-
3181
- }
3182
-
3183
-
3184
- /*---------------------------------------------------------------------------------------------
3185
- *
3186
- * ACF Media Model (Edit Mode)
3187
- *
3188
- *---------------------------------------------------------------------------------------------*/
3189
-
3190
- .acf-media-modal.-edit {
3191
-
3192
- /* resize modal */
3193
- left: 15%;
3194
- right: 15%;
3195
- top: 100px;
3196
- bottom: 100px;
3197
-
3198
-
3199
- /* hide elements */
3200
- .media-frame-menu,
3201
- .media-frame-router,
3202
- .media-frame-content .attachments,
3203
- .media-frame-content .media-toolbar {
3204
- display: none;
3205
- }
3206
-
3207
-
3208
- /* full width */
3209
- .media-frame-title,
3210
- .media-frame-content,
3211
- .media-frame-toolbar,
3212
- .media-sidebar {
3213
- width: auto;
3214
- left: 0;
3215
- right: 0;
3216
- }
3217
-
3218
-
3219
- /* tidy up incorrect distance */
3220
- .media-frame-content {
3221
- top: 50px;
3222
- }
3223
-
3224
-
3225
- /* title box shadow (to match media grid) */
3226
- .media-frame-title {
3227
- border-bottom: 1px solid #DFDFDF;
3228
- box-shadow: 0 4px 4px -4px rgba(0, 0, 0, 0.1);
3229
- }
3230
-
3231
-
3232
- /* sidebar */
3233
- .media-sidebar {
3234
-
3235
- padding: 0 16px;
3236
-
3237
- /* WP details */
3238
- .attachment-details {
3239
-
3240
- overflow: visible;
3241
-
3242
- /* hide 'Attachment Details' heading */
3243
- > h3, > h2 {
3244
- display: none;
3245
- }
3246
-
3247
-
3248
- /* remove overflow */
3249
- .attachment-info {
3250
- background: #fff;
3251
- border-bottom: #dddddd solid 1px;
3252
- padding: 16px;
3253
- margin: 0 -16px 16px;
3254
- }
3255
-
3256
- /* move thumbnail */
3257
- .thumbnail {
3258
- margin: 0 16px 0 0;
3259
- }
3260
-
3261
- .setting {
3262
- display: block;
3263
- overflow: hidden;
3264
- float: none;
3265
- width: auto;
3266
- margin: 0 0 5px;
3267
-
3268
- span {
3269
- margin: 0;
3270
- }
3271
- }
3272
-
3273
- }
3274
-
3275
-
3276
- /* ACF fields */
3277
- .compat-attachment-fields {
3278
-
3279
- > tbody > .acf-field {
3280
- margin: 0 0 5px;
3281
-
3282
- p.description {
3283
- margin-top: 3px;
3284
- }
3285
- }
3286
-
3287
- }
3288
-
3289
-
3290
- /* WP required message */
3291
- .media-types-required-info { display: none; }
3292
-
3293
- }
3294
-
3295
-
3296
- /* mobile md */
3297
- @media (max-width: 900px) {
3298
-
3299
- & {
3300
- top: 30px;
3301
- right: 30px;
3302
- bottom: 30px;
3303
- left: 30px;
3304
- }
3305
-
3306
- }
3307
-
3308
-
3309
- /* mobile sm */
3310
- @media (max-width: 640px) {
3311
-
3312
- & {
3313
- top: 0;
3314
- right: 0;
3315
- bottom: 0;
3316
- left: 0;
3317
- }
3318
-
3319
- .media-sidebar {
3320
- bottom: 0 !important;
3321
- }
3322
-
3323
- }
3324
-
3325
- }
3326
-
3327
-
3328
- /*--------------------------------------------------------------------------------------------
3329
- *
3330
- * User
3331
- *
3332
- *--------------------------------------------------------------------------------------------*/
3333
-
3334
- .form-table > tbody {
3335
-
3336
- /* field */
3337
- > .acf-field {
3338
-
3339
- /* label */
3340
- > .acf-label {
3341
- padding: 20px 10px 20px 0;
3342
- width: 210px;
3343
-
3344
- /* rtl */
3345
- html[dir="rtl"] & {
3346
- padding: 20px 0 20px 10px;
3347
- }
3348
-
3349
- label {
3350
- font-size: 14px;
3351
- color: #23282d;
3352
- }
3353
-
3354
- }
3355
-
3356
-
3357
- /* input */
3358
- > .acf-input {
3359
- padding: 15px 10px;
3360
-
3361
- /* rtl */
3362
- html[dir="rtl"] & {
3363
- padding: 15px 10px 15px 5%;
3364
- }
3365
- }
3366
-
3367
- }
3368
-
3369
-
3370
- /* tab wrap */
3371
- > .acf-tab-wrap td {
3372
- padding: 15px 5% 15px 0;
3373
-
3374
- /* rtl */
3375
- html[dir="rtl"] & {
3376
- padding: 15px 0 15px 5%;
3377
- }
3378
-
3379
- }
3380
-
3381
-
3382
- /* misc */
3383
- .form-table th.acf-th {
3384
- width: auto;
3385
- }
3386
-
3387
- }
3388
-
3389
- #your-profile,
3390
- #createuser {
3391
-
3392
- /* override for user css */
3393
- .acf-field input[type="text"],
3394
- .acf-field input[type="password"],
3395
- .acf-field input[type="number"],
3396
- .acf-field input[type="search"],
3397
- .acf-field input[type="email"],
3398
- .acf-field input[type="url"],
3399
- .acf-field select {
3400
- max-width: 25em;
3401
- }
3402
-
3403
- .acf-field textarea {
3404
- max-width: 500px;
3405
- }
3406
-
3407
-
3408
- /* allow sub fields to display correctly */
3409
- .acf-field .acf-field input[type="text"],
3410
- .acf-field .acf-field input[type="password"],
3411
- .acf-field .acf-field input[type="number"],
3412
- .acf-field .acf-field input[type="search"],
3413
- .acf-field .acf-field input[type="email"],
3414
- .acf-field .acf-field input[type="url"],
3415
- .acf-field .acf-field textarea,
3416
- .acf-field .acf-field select {
3417
- max-width: none;
3418
- }
3419
- }
3420
-
3421
- #registerform {
3422
-
3423
- h2 {
3424
- margin: 1em 0;
3425
- }
3426
-
3427
- .acf-field .acf-label {
3428
- margin-bottom: 0;
3429
-
3430
- label {
3431
- font-weight: normal;
3432
- font-size: 14px;
3433
- }
3434
- }
3435
-
3436
- p.submit {
3437
- text-align: right;
3438
- }
3439
-
3440
- }
3441
-
3442
- /*--------------------------------------------------------------------------------------------
3443
- *
3444
- * Term
3445
- *
3446
- *--------------------------------------------------------------------------------------------*/
3447
-
3448
- // add term
3449
- #acf-term-fields {
3450
- padding-right: 5%;
3451
-
3452
- > .acf-field {
3453
-
3454
- > .acf-label {
3455
- margin: 0;
3456
-
3457
- label {
3458
- font-size: 12px;
3459
- font-weight: normal;
3460
- }
3461
- }
3462
- }
3463
-
3464
- }
3465
-
3466
- p.submit .spinner,
3467
- p.submit .acf-spinner {
3468
- vertical-align: top;
3469
- float: none;
3470
- margin: 4px 4px 0;
3471
- }
3472
-
3473
-
3474
- // edit term
3475
- #edittag .acf-fields.-left {
3476
-
3477
- > .acf-field {
3478
- padding-left: 220px;
3479
-
3480
- &:before {
3481
- width: 209px;
3482
- }
3483
-
3484
- > .acf-label {
3485
- width: 220px;
3486
- margin-left: -220px;
3487
- padding: 0 10px;
3488
- }
3489
-
3490
- > .acf-input {
3491
- padding: 0;
3492
- }
3493
- }
3494
- }
3495
-
3496
- #edittag > .acf-fields.-left {
3497
- width: 96%;
3498
-
3499
- > .acf-field {
3500
-
3501
- > .acf-label {
3502
- padding-left: 0;
3503
- }
3504
- }
3505
- }
3506
-
3507
-
3508
- /*--------------------------------------------------------------------------------------------
3509
- *
3510
- * Comment
3511
- *
3512
- *--------------------------------------------------------------------------------------------*/
3513
-
3514
- .editcomment td:first-child {
3515
- white-space: nowrap;
3516
- width: 131px;
3517
- }
3518
-
3519
-
3520
- /*--------------------------------------------------------------------------------------------
3521
- *
3522
- * Widget
3523
- *
3524
- *--------------------------------------------------------------------------------------------*/
3525
-
3526
- #widgets-right .widget .acf-field .description {
3527
- padding-left: 0;
3528
- padding-right: 0;
3529
- }
3530
-
3531
- .acf-widget-fields {
3532
-
3533
- > .acf-field {
3534
-
3535
- .acf-label {
3536
- margin-bottom: 5px;
3537
-
3538
- label {
3539
- font-weight: normal;
3540
- margin: 0;
3541
- }
3542
- }
3543
- }
3544
- }
3545
-
3546
- /*--------------------------------------------------------------------------------------------
3547
- *
3548
- * Nav Menu
3549
- *
3550
- *--------------------------------------------------------------------------------------------*/
3551
-
3552
- .acf-menu-settings {
3553
- border-top: 1px solid #eee;
3554
- margin-top: 2em;
3555
-
3556
- // seamless
3557
- &.-seamless {
3558
- border-top: none;
3559
- margin-top: 15px;
3560
-
3561
- > h2 { display: none; }
3562
- }
3563
- }
3564
-
3565
- .acf-menu-item-fields {
3566
- margin-right: 10px;
3567
- float: left;
3568
- }
3569
-
3570
-
3571
- /*--------------------------------------------------------------------------------------------
3572
- *
3573
- * Confirm remove
3574
- *
3575
- *--------------------------------------------------------------------------------------------*/
3576
-
3577
- .acf-temp-remove {
3578
- position: relative;
3579
- opacity: 1;
3580
- -webkit-transition: all 0.25s ease;
3581
- -moz-transition: all 0.25s ease;
3582
- -o-transition: all 0.25s ease;
3583
- transition: all 0.25s ease;
3584
- overflow: hidden;
3585
-
3586
- /* overlay prevents hover */
3587
- &:after {
3588
- display: block;
3589
- content: "";
3590
- position: absolute;
3591
- top: 0;
3592
- left: 0;
3593
- right: 0;
3594
- bottom: 0;
3595
- z-index: 99;
3596
- }
3597
- }
3598
-
3599
-
3600
- /*--------------------------------------------------------------------------
3601
- *
3602
- * Conditional Logic
3603
- *
3604
- *-------------------------------------------------------------------------*/
3605
-
3606
- /* Hide */
3607
- .hidden-by-conditional-logic {
3608
- display: none !important;
3609
- }
3610
-
3611
-
3612
- /* Hide (appear empty) */
3613
- .hidden-by-conditional-logic.appear-empty {
3614
- display: table-cell !important;
3615
- }
3616
-
3617
- .hidden-by-conditional-logic.appear-empty .acf-input {
3618
- display: none !important;
3619
- }
3620
-
3621
-
3622
- /*--------------------------------------------------------------------------
3623
- *
3624
- * 3rd Party
3625
- *
3626
- *-------------------------------------------------------------------------*/
3627
-
3628
- /* Tabify shows hidden postboxes */
3629
- .acf-postbox.acf-hidden {
3630
- display: none !important;
3631
- }
3632
-
3633
-
3634
- /*--------------------------------------------------------------------------------------------
3635
- *
3636
- * Gutenberg
3637
- *
3638
- *--------------------------------------------------------------------------------------------*/
3639
-
3640
- /*
3641
- #editor {
3642
-
3643
- .edit-post-layout__metaboxes {
3644
- //border-top: none;
3645
- }
3646
-
3647
- .edit-post-meta-boxes-area {
3648
- max-width: 80%;
3649
-
3650
- .postbox {
3651
- border: #e2e4e7 solid 1px;
3652
- border-bottom: none;
3653
- margin: 20px 0;
3654
- }
3655
-
3656
- input {
3657
- max-width: none;
3658
- }
3659
- }
3660
-
3661
- }
3662
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/css/vars.less DELETED
@@ -1,68 +0,0 @@
1
- /*--------------------------------------------------------------------------------------------
2
- *
3
- * Vars
4
- *
5
- *--------------------------------------------------------------------------------------------*/
6
-
7
- /* colors */
8
- @acf_blue: #2a9bd9;
9
- @acf_notice: #2a9bd9;
10
- @acf_error: #F55E4F;
11
- @acf_success: #46b450;
12
- @acf_warning: #fd8d3b;
13
-
14
- /* acf-field */
15
- @field_padding: 15px 12px;
16
- @field_padding_x: 12px;
17
- @field_padding_y: 15px;
18
- @fp: 15px 12px;
19
- @fy: 15px;
20
- @fx: 12px;
21
-
22
-
23
- /* responsive */
24
- @md: 880px;
25
- @sm: 640px;
26
-
27
-
28
- /*--------------------------------------------------------------------------------------------
29
- *
30
- * Mixins
31
- *
32
- *--------------------------------------------------------------------------------------------*/
33
-
34
- .clearfix() {
35
-
36
- &:after {
37
- clear: both;
38
- content: "";
39
- display: table;
40
- }
41
-
42
- }
43
-
44
- .border-box() {
45
- -webkit-box-sizing: border-box;
46
- -moz-box-sizing: border-box;
47
- box-sizing: border-box;
48
- }
49
-
50
- .centered() {
51
- position: absolute;
52
- top: 50%;
53
- left: 50%;
54
- transform: translate(-50%, -50%);
55
- }
56
-
57
- .animate() {
58
- -webkit-transition: all 0.3s ease; /* Safari 3.2+, Chrome */
59
- -moz-transition: all 0.3s ease; /* Firefox 4-15 */
60
- -o-transition: all 0.3s ease; /* Opera 10.5–12.00 */
61
- transition: all 0.3s ease; /* Firefox 16+, Opera 12.50+ */
62
- }
63
-
64
- .rtl() {
65
- html[dir="rtl"] & {
66
- text-align: right;
67
- }
68
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/images/sprite.psd DELETED
Binary file
assets/_build/images/sprite@2x.psd DELETED
Binary file
assets/_build/js/acf-compatibility.js DELETED
@@ -1,754 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * acf.newCompatibility
5
- *
6
- * Inserts a new __proto__ object compatibility layer
7
- *
8
- * @date 15/2/18
9
- * @since 5.6.9
10
- *
11
- * @param object instance The object to modify.
12
- * @param object compatibilty Optional. The compatibilty layer.
13
- * @return object compatibilty
14
- */
15
-
16
- acf.newCompatibility = function( instance, compatibilty ){
17
-
18
- // defaults
19
- compatibilty = compatibilty || {};
20
-
21
- // inherit __proto_-
22
- compatibilty.__proto__ = instance.__proto__;
23
-
24
- // inject
25
- instance.__proto__ = compatibilty;
26
-
27
- // reference
28
- instance.compatibility = compatibilty;
29
-
30
- // return
31
- return compatibilty;
32
- };
33
-
34
- /**
35
- * acf.getCompatibility
36
- *
37
- * Returns the compatibility layer for a given instance
38
- *
39
- * @date 13/3/18
40
- * @since 5.6.9
41
- *
42
- * @param object instance The object to look in.
43
- * @return object|null compatibility The compatibility object or null on failure.
44
- */
45
-
46
- acf.getCompatibility = function( instance ) {
47
- return instance.compatibility || null;
48
- };
49
-
50
- /**
51
- * acf (compatibility)
52
- *
53
- * Compatibility layer for the acf object
54
- *
55
- * @date 15/2/18
56
- * @since 5.6.9
57
- *
58
- * @param void
59
- * @return void
60
- */
61
-
62
- var _acf = acf.newCompatibility(acf, {
63
-
64
- // storage
65
- l10n: {},
66
- o: {},
67
- fields: {},
68
-
69
- // changed function names
70
- update: acf.set,
71
- add_action: acf.addAction,
72
- remove_action: acf.removeAction,
73
- do_action: acf.doAction,
74
- add_filter: acf.addFilter,
75
- remove_filter: acf.removeFilter,
76
- apply_filters: acf.applyFilters,
77
- parse_args: acf.parseArgs,
78
- disable_el: acf.disable,
79
- disable_form: acf.disable,
80
- enable_el: acf.enable,
81
- enable_form: acf.enable,
82
- update_user_setting: acf.updateUserSetting,
83
- prepare_for_ajax: acf.prepareForAjax,
84
- is_ajax_success: acf.isAjaxSuccess,
85
- remove_el: acf.remove,
86
- remove_tr: acf.remove,
87
- str_replace: acf.strReplace,
88
- render_select: acf.renderSelect,
89
- get_uniqid: acf.uniqid,
90
- serialize_form: acf.serialize,
91
- esc_html: acf.strEscape,
92
- str_sanitize: acf.strSanitize,
93
-
94
- });
95
-
96
- _acf._e = function( k1, k2 ){
97
-
98
- // defaults
99
- k1 = k1 || '';
100
- k2 = k2 || '';
101
-
102
- // compability
103
- var compatKey = k2 ? k1 + '.' + k2 : k1;
104
- var compats = {
105
- 'image.select': 'Select Image',
106
- 'image.edit': 'Edit Image',
107
- 'image.update': 'Update Image'
108
- };
109
- if( compats[compatKey] ) {
110
- return acf.__(compats[compatKey]);
111
- }
112
-
113
- // try k1
114
- var string = this.l10n[ k1 ] || '';
115
-
116
- // try k2
117
- if( k2 ) {
118
- string = string[ k2 ] || '';
119
- }
120
-
121
- // return
122
- return string;
123
- };
124
-
125
- _acf.get_selector = function( s ) {
126
-
127
- // vars
128
- var selector = '.acf-field';
129
-
130
- // bail early if no search
131
- if( !s ) {
132
- return selector;
133
- }
134
-
135
- // compatibility with object
136
- if( $.isPlainObject(s) ) {
137
- if( $.isEmptyObject(s) ) {
138
- return selector;
139
- } else {
140
- for( var k in s ) { s = s[k]; break; }
141
- }
142
- }
143
-
144
- // append
145
- selector += '-' + s;
146
-
147
- // replace underscores (split/join replaces all and is faster than regex!)
148
- selector = acf.strReplace('_', '-', selector);
149
-
150
- // remove potential double up
151
- selector = acf.strReplace('field-field-', 'field-', selector);
152
-
153
- // return
154
- return selector;
155
- };
156
-
157
- _acf.get_fields = function( s, $el, all ){
158
-
159
- // args
160
- var args = {
161
- is: s || '',
162
- parent: $el || false,
163
- suppressFilters: all || false,
164
- };
165
-
166
- // change 'field_123' to '.acf-field-123'
167
- if( args.is ) {
168
- args.is = this.get_selector( args.is );
169
- }
170
-
171
- // return
172
- return acf.findFields(args);
173
- };
174
-
175
- _acf.get_field = function( s, $el ){
176
-
177
- // get fields
178
- var $fields = this.get_fields.apply(this, arguments);
179
-
180
- // return
181
- if( $fields.length ) {
182
- return $fields.first();
183
- } else {
184
- return false;
185
- }
186
- };
187
-
188
- _acf.get_closest_field = function( $el, s ){
189
- return $el.closest( this.get_selector(s) );
190
- };
191
-
192
- _acf.get_field_wrap = function( $el ){
193
- return $el.closest( this.get_selector() );
194
- };
195
-
196
- _acf.get_field_key = function( $field ){
197
- return $field.data('key');
198
- };
199
-
200
- _acf.get_field_type = function( $field ){
201
- return $field.data('type');
202
- };
203
-
204
- _acf.get_data = function( $el, defaults ){
205
- return acf.parseArgs( $el.data(), defaults );
206
- };
207
-
208
- _acf.maybe_get = function( obj, key, value ){
209
-
210
- // default
211
- if( value === undefined ) {
212
- value = null;
213
- }
214
-
215
- // get keys
216
- keys = String(key).split('.');
217
-
218
- // acf.isget
219
- for( var i = 0; i < keys.length; i++ ) {
220
- if( !obj.hasOwnProperty(keys[i]) ) {
221
- return value;
222
- }
223
- obj = obj[ keys[i] ];
224
- }
225
- return obj;
226
- };
227
-
228
-
229
- /**
230
- * hooks
231
- *
232
- * Modify add_action and add_filter functions to add compatibility with changed $field parameter
233
- * Using the acf.add_action() or acf.add_filter() functions will interpret new field parameters as jQuery $field
234
- *
235
- * @date 12/5/18
236
- * @since 5.6.9
237
- *
238
- * @param void
239
- * @return void
240
- */
241
-
242
- var compatibleArgument = function( arg ){
243
- return ( arg instanceof acf.Field ) ? arg.$el : arg;
244
- };
245
-
246
- var compatibleArguments = function( args ){
247
- return acf.arrayArgs( args ).map( compatibleArgument );
248
- }
249
-
250
- var compatibleCallback = function( origCallback ){
251
- return function(){
252
-
253
- // convert to compatible arguments
254
- if( arguments.length ) {
255
- var args = compatibleArguments(arguments);
256
-
257
- // add default argument for 'ready', 'append' and 'load' events
258
- } else {
259
- var args = [ $(document) ];
260
- }
261
-
262
- // return
263
- return origCallback.apply(this, args);
264
- }
265
- }
266
-
267
- _acf.add_action = function( action, callback, priority, context ){
268
-
269
- // handle multiple actions
270
- var actions = action.split(' ');
271
- var length = actions.length;
272
- if( length > 1 ) {
273
- for( var i = 0; i < length; i++) {
274
- action = actions[i];
275
- _acf.add_action.apply(this, arguments);
276
- }
277
- return this;
278
- }
279
-
280
- // single
281
- var callback = compatibleCallback(callback);
282
- return acf.addAction.apply(this, arguments);
283
- };
284
-
285
- _acf.add_filter = function( action, callback, priority, context ){
286
- var callback = compatibleCallback(callback);
287
- return acf.addFilter.apply(this, arguments);
288
- };
289
-
290
- /*
291
- * acf.model
292
- *
293
- * This model acts as a scafold for action.event driven modules
294
- *
295
- * @type object
296
- * @date 8/09/2014
297
- * @since 5.0.0
298
- *
299
- * @param (object)
300
- * @return (object)
301
- */
302
-
303
- _acf.model = {
304
- actions: {},
305
- filters: {},
306
- events: {},
307
- extend: function( args ){
308
-
309
- // extend
310
- var model = $.extend( {}, this, args );
311
-
312
- // setup actions
313
- $.each(model.actions, function( name, callback ){
314
- model._add_action( name, callback );
315
- });
316
-
317
- // setup filters
318
- $.each(model.filters, function( name, callback ){
319
- model._add_filter( name, callback );
320
- });
321
-
322
- // setup events
323
- $.each(model.events, function( name, callback ){
324
- model._add_event( name, callback );
325
- });
326
-
327
- // return
328
- return model;
329
- },
330
-
331
- _add_action: function( name, callback ) {
332
-
333
- // split
334
- var model = this,
335
- data = name.split(' ');
336
-
337
- // add missing priority
338
- var name = data[0] || '',
339
- priority = data[1] || 10;
340
-
341
- // add action
342
- acf.add_action(name, model[ callback ], priority, model);
343
-
344
- },
345
-
346
- _add_filter: function( name, callback ) {
347
-
348
- // split
349
- var model = this,
350
- data = name.split(' ');
351
-
352
- // add missing priority
353
- var name = data[0] || '',
354
- priority = data[1] || 10;
355
-
356
- // add action
357
- acf.add_filter(name, model[ callback ], priority, model);
358
- },
359
-
360
- _add_event: function( name, callback ) {
361
-
362
- // vars
363
- var model = this,
364
- i = name.indexOf(' '),
365
- event = (i > 0) ? name.substr(0,i) : name,
366
- selector = (i > 0) ? name.substr(i+1) : '';
367
-
368
- // event
369
- var fn = function( e ){
370
-
371
- // append $el to event object
372
- e.$el = $(this);
373
-
374
- // append $field to event object (used in field group)
375
- if( acf.field_group ) {
376
- e.$field = e.$el.closest('.acf-field-object');
377
- }
378
-
379
- // event
380
- if( typeof model.event === 'function' ) {
381
- e = model.event( e );
382
- }
383
-
384
- // callback
385
- model[ callback ].apply(model, arguments);
386
-
387
- };
388
-
389
- // add event
390
- if( selector ) {
391
- $(document).on(event, selector, fn);
392
- } else {
393
- $(document).on(event, fn);
394
- }
395
- },
396
-
397
- get: function( name, value ){
398
-
399
- // defaults
400
- value = value || null;
401
-
402
- // get
403
- if( typeof this[ name ] !== 'undefined' ) {
404
- value = this[ name ];
405
- }
406
-
407
- // return
408
- return value;
409
- },
410
-
411
- set: function( name, value ){
412
-
413
- // set
414
- this[ name ] = value;
415
-
416
- // function for 3rd party
417
- if( typeof this[ '_set_' + name ] === 'function' ) {
418
- this[ '_set_' + name ].apply(this);
419
- }
420
-
421
- // return for chaining
422
- return this;
423
- }
424
- };
425
-
426
- /*
427
- * field
428
- *
429
- * This model sets up many of the field's interactions
430
- *
431
- * @type function
432
- * @date 21/02/2014
433
- * @since 3.5.1
434
- *
435
- * @param n/a
436
- * @return n/a
437
- */
438
-
439
- _acf.field = acf.model.extend({
440
- type: '',
441
- o: {},
442
- $field: null,
443
- _add_action: function( name, callback ) {
444
-
445
- // vars
446
- var model = this;
447
-
448
- // update name
449
- name = name + '_field/type=' + model.type;
450
-
451
- // add action
452
- acf.add_action(name, function( $field ){
453
-
454
- // focus
455
- model.set('$field', $field);
456
-
457
- // callback
458
- model[ callback ].apply(model, arguments);
459
- });
460
- },
461
-
462
- _add_filter: function( name, callback ) {
463
-
464
- // vars
465
- var model = this;
466
-
467
- // update name
468
- name = name + '_field/type=' + model.type;
469
-
470
- // add action
471
- acf.add_filter(name, function( $field ){
472
-
473
- // focus
474
- model.set('$field', $field);
475
-
476
- // callback
477
- model[ callback ].apply(model, arguments);
478
- });
479
- },
480
-
481
- _add_event: function( name, callback ) {
482
-
483
- // vars
484
- var model = this,
485
- event = name.substr(0,name.indexOf(' ')),
486
- selector = name.substr(name.indexOf(' ')+1),
487
- context = acf.get_selector(model.type);
488
-
489
- // add event
490
- $(document).on(event, context + ' ' + selector, function( e ){
491
-
492
- // vars
493
- var $el = $(this);
494
- var $field = acf.get_closest_field( $el, model.type );
495
-
496
- // bail early if no field
497
- if( !$field.length ) return;
498
-
499
- // focus
500
- if( !$field.is(model.$field) ) {
501
- model.set('$field', $field);
502
- }
503
-
504
- // append to event
505
- e.$el = $el;
506
- e.$field = $field;
507
-
508
- // callback
509
- model[ callback ].apply(model, [e]);
510
- });
511
- },
512
-
513
- _set_$field: function(){
514
-
515
- // callback
516
- if( typeof this.focus === 'function' ) {
517
- this.focus();
518
- }
519
- },
520
-
521
- // depreciated
522
- doFocus: function( $field ){
523
- return this.set('$field', $field);
524
- }
525
- });
526
-
527
-
528
- /**
529
- * validation
530
- *
531
- * description
532
- *
533
- * @date 15/2/18
534
- * @since 5.6.9
535
- *
536
- * @param type $var Description. Default.
537
- * @return type Description.
538
- */
539
-
540
- var _validation = acf.newCompatibility(acf.validation, {
541
- remove_error: function( $field ){
542
- acf.getField( $field ).removeError();
543
- },
544
- add_warning: function( $field, message ){
545
- acf.getField( $field ).showNotice({
546
- text: message,
547
- type: 'warning',
548
- timeout: 1000
549
- });
550
- }
551
- });
552
-
553
-
554
- /**
555
- * tooltip
556
- *
557
- * description
558
- *
559
- * @date 15/2/18
560
- * @since 5.6.9
561
- *
562
- * @param type $var Description. Default.
563
- * @return type Description.
564
- */
565
-
566
- _acf.tooltip = {
567
-
568
- tooltip: function( text, $el ){
569
-
570
- var tooltip = acf.newTooltip({
571
- text: text,
572
- target: $el
573
- });
574
-
575
- // return
576
- return tooltip.$el;
577
- },
578
-
579
- temp: function( text, $el ){
580
-
581
- var tooltip = acf.newTooltip({
582
- text: text,
583
- target: $el,
584
- timeout: 250
585
- });
586
- },
587
-
588
- confirm: function( $el, callback, text, button_y, button_n ){
589
-
590
- var tooltip = acf.newTooltip({
591
- confirm: true,
592
- text: text,
593
- target: $el,
594
- confirm: function(){
595
- callback(true);
596
- },
597
- cancel: function(){
598
- callback(false);
599
- }
600
- });
601
- },
602
-
603
- confirm_remove: function( $el, callback ){
604
-
605
- var tooltip = acf.newTooltip({
606
- confirmRemove: true,
607
- target: $el,
608
- confirm: function(){
609
- callback(true);
610
- },
611
- cancel: function(){
612
- callback(false);
613
- }
614
- });
615
- },
616
- };
617
-
618
- /**
619
- * tooltip
620
- *
621
- * description
622
- *
623
- * @date 15/2/18
624
- * @since 5.6.9
625
- *
626
- * @param type $var Description. Default.
627
- * @return type Description.
628
- */
629
-
630
- _acf.media = new acf.Model({
631
- activeFrame: false,
632
- actions: {
633
- 'new_media_popup': 'onNewMediaPopup'
634
- },
635
-
636
- frame: function(){
637
- return this.activeFrame;
638
- },
639
-
640
- onNewMediaPopup: function( popup ){
641
- this.activeFrame = popup.frame;
642
- },
643
-
644
- popup: function( props ){
645
-
646
- // update props
647
- if( props.mime_types ) {
648
- props.allowedTypes = props.mime_types;
649
- }
650
- if( props.id ) {
651
- props.attachment = props.id;
652
- }
653
-
654
- // new
655
- var popup = acf.newMediaPopup( props );
656
-
657
- // append
658
- /*
659
- if( props.selected ) {
660
- popup.selected = props.selected;
661
- }
662
- */
663
-
664
- // return
665
- return popup.frame;
666
- }
667
- });
668
-
669
-
670
- /**
671
- * Select2
672
- *
673
- * description
674
- *
675
- * @date 11/6/18
676
- * @since 5.6.9
677
- *
678
- * @param type $var Description. Default.
679
- * @return type Description.
680
- */
681
-
682
- _acf.select2 = {
683
- init: function( $select, args, $field ){
684
-
685
- // compatible args
686
- if( args.allow_null ) {
687
- args.allowNull = args.allow_null;
688
- }
689
- if( args.ajax_action ) {
690
- args.ajaxAction = args.ajax_action;
691
- }
692
- if( $field ) {
693
- args.field = acf.getField($field);
694
- }
695
-
696
- // return
697
- return acf.newSelect2( $select, args );
698
- },
699
-
700
- destroy: function( $select ){
701
- return acf.getInstance( $select ).destroy();
702
-
703
- },
704
- };
705
-
706
- /**
707
- * postbox
708
- *
709
- * description
710
- *
711
- * @date 11/6/18
712
- * @since 5.6.9
713
- *
714
- * @param type $var Description. Default.
715
- * @return type Description.
716
- */
717
-
718
- _acf.postbox = {
719
- render: function( args ){
720
-
721
- // compatible args
722
- if( args.edit_url ) {
723
- args.editLink = args.edit_url;
724
- }
725
- if( args.edit_title ) {
726
- args.editTitle = args.edit_title;
727
- }
728
-
729
- // return
730
- return acf.newPostbox( args );
731
- }
732
- };
733
-
734
- /**
735
- * acf.screen
736
- *
737
- * description
738
- *
739
- * @date 11/6/18
740
- * @since 5.6.9
741
- *
742
- * @param type $var Description. Default.
743
- * @return type Description.
744
- */
745
-
746
- acf.newCompatibility(acf.screen, {
747
- update: function(){
748
- return this.set.apply(this, arguments);
749
- },
750
- fetch: acf.screen.check
751
- });
752
- _acf.ajax = acf.screen;
753
-
754
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-condition-types.js DELETED
@@ -1,447 +0,0 @@
1
- (function($, undefined){
2
-
3
- var __ = acf.__;
4
-
5
- var parseString = function( val ){
6
- return val ? '' + val : '';
7
- };
8
-
9
- var isEqualTo = function( v1, v2 ){
10
- return ( parseString(v1).toLowerCase() === parseString(v2).toLowerCase() );
11
- };
12
-
13
- var isEqualToNumber = function( v1, v2 ){
14
- return ( parseFloat(v1) === parseFloat(v2) );
15
- };
16
-
17
- var isGreaterThan = function( v1, v2 ){
18
- return ( parseFloat(v1) > parseFloat(v2) );
19
- };
20
-
21
- var isLessThan = function( v1, v2 ){
22
- return ( parseFloat(v1) < parseFloat(v2) );
23
- };
24
-
25
- var inArray = function( v1, array ){
26
-
27
- // cast all values as string
28
- array = array.map(function(v2){
29
- return parseString(v2);
30
- });
31
-
32
- return (array.indexOf( v1 ) > -1);
33
- }
34
-
35
- var containsString = function( haystack, needle ){
36
- return ( parseString(haystack).indexOf( parseString(needle) ) > -1 );
37
- };
38
-
39
- var matchesPattern = function( v1, pattern ){
40
- var regexp = new RegExp(parseString(pattern), 'gi');
41
- return parseString(v1).match( regexp );
42
- };
43
-
44
- /**
45
- * hasValue
46
- *
47
- * description
48
- *
49
- * @date 1/2/18
50
- * @since 5.6.5
51
- *
52
- * @param void
53
- * @return void
54
- */
55
-
56
- var HasValue = acf.Condition.extend({
57
- type: 'hasValue',
58
- operator: '!=empty',
59
- label: __('Has any value'),
60
- fieldTypes: [ 'text', 'textarea', 'number', 'range', 'email', 'url', 'password', 'image', 'file', 'wysiwyg', 'oembed', 'select', 'checkbox', 'radio', 'button_group', 'link', 'post_object', 'page_link', 'relationship', 'taxonomy', 'user', 'google_map', 'date_picker', 'date_time_picker', 'time_picker', 'color_picker' ],
61
- match: function( rule, field ){
62
- return (field.val() ? true : false);
63
- },
64
- choices: function( fieldObject ){
65
- return '<input type="text" disabled="" />';
66
- }
67
- });
68
-
69
- acf.registerConditionType( HasValue );
70
-
71
- /**
72
- * hasValue
73
- *
74
- * description
75
- *
76
- * @date 1/2/18
77
- * @since 5.6.5
78
- *
79
- * @param void
80
- * @return void
81
- */
82
-
83
- var HasNoValue = HasValue.extend({
84
- type: 'hasNoValue',
85
- operator: '==empty',
86
- label: __('Has no value'),
87
- match: function( rule, field ){
88
- return !HasValue.prototype.match.apply(this, arguments);
89
- }
90
- });
91
-
92
- acf.registerConditionType( HasNoValue );
93
-
94
-
95
-
96
- /**
97
- * EqualTo
98
- *
99
- * description
100
- *
101
- * @date 1/2/18
102
- * @since 5.6.5
103
- *
104
- * @param void
105
- * @return void
106
- */
107
-
108
- var EqualTo = acf.Condition.extend({
109
- type: 'equalTo',
110
- operator: '==',
111
- label: __('Value is equal to'),
112
- fieldTypes: [ 'text', 'textarea', 'number', 'range', 'email', 'url', 'password' ],
113
- match: function( rule, field ){
114
- if( $.isNumeric(rule.value) ) {
115
- return isEqualToNumber( rule.value, field.val() );
116
- } else {
117
- return isEqualTo( rule.value, field.val() );
118
- }
119
- },
120
- choices: function( fieldObject ){
121
- return '<input type="text" />';
122
- }
123
- });
124
-
125
- acf.registerConditionType( EqualTo );
126
-
127
- /**
128
- * NotEqualTo
129
- *
130
- * description
131
- *
132
- * @date 1/2/18
133
- * @since 5.6.5
134
- *
135
- * @param void
136
- * @return void
137
- */
138
-
139
- var NotEqualTo = EqualTo.extend({
140
- type: 'notEqualTo',
141
- operator: '!=',
142
- label: __('Value is not equal to'),
143
- match: function( rule, field ){
144
- return !EqualTo.prototype.match.apply(this, arguments);
145
- }
146
- });
147
-
148
- acf.registerConditionType( NotEqualTo );
149
-
150
- /**
151
- * PatternMatch
152
- *
153
- * description
154
- *
155
- * @date 1/2/18
156
- * @since 5.6.5
157
- *
158
- * @param void
159
- * @return void
160
- */
161
-
162
- var PatternMatch = acf.Condition.extend({
163
- type: 'patternMatch',
164
- operator: '==pattern',
165
- label: __('Value matches pattern'),
166
- fieldTypes: [ 'text', 'textarea', 'email', 'url', 'password', 'wysiwyg' ],
167
- match: function( rule, field ){
168
- return matchesPattern( field.val(), rule.value );
169
- },
170
- choices: function( fieldObject ){
171
- return '<input type="text" placeholder="[a-z0-9]" />';
172
- }
173
- });
174
-
175
- acf.registerConditionType( PatternMatch );
176
-
177
- /**
178
- * Contains
179
- *
180
- * description
181
- *
182
- * @date 1/2/18
183
- * @since 5.6.5
184
- *
185
- * @param void
186
- * @return void
187
- */
188
-
189
- var Contains = acf.Condition.extend({
190
- type: 'contains',
191
- operator: '==contains',
192
- label: __('Value contains'),
193
- fieldTypes: [ 'text', 'textarea', 'number', 'email', 'url', 'password', 'wysiwyg', 'oembed', 'select' ],
194
- match: function( rule, field ){
195
- return containsString( field.val(), rule.value );
196
- },
197
- choices: function( fieldObject ){
198
- return '<input type="text" />';
199
- }
200
- });
201
-
202
- acf.registerConditionType( Contains );
203
-
204
- /**
205
- * TrueFalseEqualTo
206
- *
207
- * description
208
- *
209
- * @date 1/2/18
210
- * @since 5.6.5
211
- *
212
- * @param void
213
- * @return void
214
- */
215
-
216
- var TrueFalseEqualTo = EqualTo.extend({
217
- type: 'trueFalseEqualTo',
218
- choiceType: 'select',
219
- fieldTypes: [ 'true_false' ],
220
- choices: function( field ){
221
- return [
222
- {
223
- id: 1,
224
- text: __('Checked')
225
- }
226
- ];
227
- },
228
- });
229
-
230
- acf.registerConditionType( TrueFalseEqualTo );
231
-
232
- /**
233
- * TrueFalseNotEqualTo
234
- *
235
- * description
236
- *
237
- * @date 1/2/18
238
- * @since 5.6.5
239
- *
240
- * @param void
241
- * @return void
242
- */
243
-
244
- var TrueFalseNotEqualTo = NotEqualTo.extend({
245
- type: 'trueFalseNotEqualTo',
246
- choiceType: 'select',
247
- fieldTypes: [ 'true_false' ],
248
- choices: function( field ){
249
- return [
250
- {
251
- id: 1,
252
- text: __('Checked')
253
- }
254
- ];
255
- },
256
- });
257
-
258
- acf.registerConditionType( TrueFalseNotEqualTo );
259
-
260
- /**
261
- * SelectEqualTo
262
- *
263
- * description
264
- *
265
- * @date 1/2/18
266
- * @since 5.6.5
267
- *
268
- * @param void
269
- * @return void
270
- */
271
-
272
- var SelectEqualTo = acf.Condition.extend({
273
- type: 'selectEqualTo',
274
- operator: '==',
275
- label: __('Value is equal to'),
276
- fieldTypes: [ 'select', 'checkbox', 'radio', 'button_group' ],
277
- match: function( rule, field ){
278
- var val = field.val();
279
- if( val instanceof Array ) {
280
- return inArray( rule.value, val );
281
- } else {
282
- return isEqualTo( rule.value, val );
283
- }
284
- },
285
- choices: function( fieldObject ){
286
-
287
- // vars
288
- var choices = [];
289
- var lines = fieldObject.$setting('choices textarea').val().split("\n");
290
-
291
- // allow null
292
- if( fieldObject.$input('allow_null').prop('checked') ) {
293
- choices.push({
294
- id: '',
295
- text: __('Null')
296
- });
297
- }
298
-
299
- // loop
300
- lines.map(function( line ){
301
-
302
- // split
303
- line = line.split(':');
304
-
305
- // default label to value
306
- line[1] = line[1] || line[0];
307
-
308
- // append
309
- choices.push({
310
- id: $.trim( line[0] ),
311
- text: $.trim( line[1] )
312
- });
313
- });
314
-
315
- // return
316
- return choices;
317
- },
318
- });
319
-
320
- acf.registerConditionType( SelectEqualTo );
321
-
322
- /**
323
- * SelectNotEqualTo
324
- *
325
- * description
326
- *
327
- * @date 1/2/18
328
- * @since 5.6.5
329
- *
330
- * @param void
331
- * @return void
332
- */
333
-
334
- var SelectNotEqualTo = SelectEqualTo.extend({
335
- type: 'selectNotEqualTo',
336
- operator: '!=',
337
- label: __('Value is not equal to'),
338
- match: function( rule, field ){
339
- return !SelectEqualTo.prototype.match.apply(this, arguments);
340
- }
341
- });
342
-
343
- acf.registerConditionType( SelectNotEqualTo );
344
-
345
- /**
346
- * GreaterThan
347
- *
348
- * description
349
- *
350
- * @date 1/2/18
351
- * @since 5.6.5
352
- *
353
- * @param void
354
- * @return void
355
- */
356
-
357
- var GreaterThan = acf.Condition.extend({
358
- type: 'greaterThan',
359
- operator: '>',
360
- label: __('Value is greater than'),
361
- fieldTypes: [ 'number', 'range' ],
362
- match: function( rule, field ){
363
- var val = field.val();
364
- if( val instanceof Array ) {
365
- val = val.length;
366
- }
367
- return isGreaterThan( val, rule.value );
368
- },
369
- choices: function( fieldObject ){
370
- return '<input type="number" />';
371
- }
372
- });
373
-
374
- acf.registerConditionType( GreaterThan );
375
-
376
-
377
- /**
378
- * LessThan
379
- *
380
- * description
381
- *
382
- * @date 1/2/18
383
- * @since 5.6.5
384
- *
385
- * @param void
386
- * @return void
387
- */
388
-
389
- var LessThan = GreaterThan.extend({
390
- type: 'lessThan',
391
- operator: '<',
392
- label: __('Value is less than'),
393
- match: function( rule, field ){
394
- var val = field.val();
395
- if( val instanceof Array ) {
396
- val = val.length;
397
- }
398
- return isLessThan( val, rule.value );
399
- },
400
- choices: function( fieldObject ){
401
- return '<input type="number" />';
402
- }
403
- });
404
-
405
- acf.registerConditionType( LessThan );
406
-
407
- /**
408
- * SelectedGreaterThan
409
- *
410
- * description
411
- *
412
- * @date 1/2/18
413
- * @since 5.6.5
414
- *
415
- * @param void
416
- * @return void
417
- */
418
-
419
- var SelectionGreaterThan = GreaterThan.extend({
420
- type: 'selectionGreaterThan',
421
- label: __('Selection is greater than'),
422
- fieldTypes: [ 'checkbox', 'select', 'post_object', 'page_link', 'relationship', 'taxonomy', 'user' ],
423
- });
424
-
425
- acf.registerConditionType( SelectionGreaterThan );
426
-
427
- /**
428
- * SelectedGreaterThan
429
- *
430
- * description
431
- *
432
- * @date 1/2/18
433
- * @since 5.6.5
434
- *
435
- * @param void
436
- * @return void
437
- */
438
-
439
- var SelectionLessThan = LessThan.extend({
440
- type: 'selectionLessThan',
441
- label: __('Selection is less than'),
442
- fieldTypes: [ 'checkbox', 'select', 'post_object', 'page_link', 'relationship', 'taxonomy', 'user' ],
443
- });
444
-
445
- acf.registerConditionType( SelectionLessThan );
446
-
447
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-condition.js DELETED
@@ -1,249 +0,0 @@
1
- (function($, undefined){
2
-
3
- // vars
4
- var storage = [];
5
-
6
- /**
7
- * acf.Condition
8
- *
9
- * description
10
- *
11
- * @date 23/3/18
12
- * @since 5.6.9
13
- *
14
- * @param type $var Description. Default.
15
- * @return type Description.
16
- */
17
-
18
- acf.Condition = acf.Model.extend({
19
-
20
- type: '', // used for model name
21
- operator: '==', // rule operator
22
- label: '', // label shown when editing fields
23
- choiceType: 'input', // input, select
24
- fieldTypes: [], // auto connect this conditions with these field types
25
-
26
- data: {
27
- conditions: false, // the parent instance
28
- field: false, // the field which we query against
29
- rule: {} // the rule [field, operator, value]
30
- },
31
-
32
- events: {
33
- 'change': 'change',
34
- 'keyup': 'change',
35
- 'enableField': 'change',
36
- 'disableField': 'change'
37
- },
38
-
39
- setup: function( props ){
40
- $.extend(this.data, props);
41
- },
42
-
43
- getEventTarget: function( $el, event ){
44
- return $el || this.get('field').$el;
45
- },
46
-
47
- change: function( e, $el ){
48
- this.get('conditions').change( e );
49
- },
50
-
51
- match: function( rule, field ){
52
- return false;
53
- },
54
-
55
- calculate: function(){
56
- return this.match( this.get('rule'), this.get('field') );
57
- },
58
-
59
- choices: function( field ){
60
- return '<intput type="text" />';
61
- }
62
- });
63
-
64
- /**
65
- * acf.newCondition
66
- *
67
- * description
68
- *
69
- * @date 1/2/18
70
- * @since 5.6.5
71
- *
72
- * @param type $var Description. Default.
73
- * @return type Description.
74
- */
75
-
76
- acf.newCondition = function( rule, conditions ){
77
-
78
- // currently setting up conditions for fieldX, this field is the 'target'
79
- var target = conditions.get('field');
80
-
81
- // use the 'target' to find the 'trigger' field.
82
- // - this field is used to setup the conditional logic events
83
- var field = target.getField( rule.field );
84
-
85
- // bail ealry if no target or no field (possible if field doesn't exist due to HTML error)
86
- if( !target || !field ) {
87
- return false;
88
- }
89
-
90
- // vars
91
- var args = {
92
- rule: rule,
93
- target: target,
94
- conditions: conditions,
95
- field: field
96
- };
97
-
98
- // vars
99
- var fieldType = field.get('type');
100
- var operator = rule.operator;
101
-
102
- // get avaibale conditions
103
- var conditionTypes = acf.getConditionTypes({
104
- fieldType: fieldType,
105
- operator: operator,
106
- });
107
-
108
- // instantiate
109
- var model = conditionTypes[0] || acf.Condition;
110
-
111
- // instantiate
112
- var condition = new model( args );
113
-
114
- // return
115
- return condition;
116
- };
117
-
118
- /**
119
- * mid
120
- *
121
- * Calculates the model ID for a field type
122
- *
123
- * @date 15/12/17
124
- * @since 5.6.5
125
- *
126
- * @param string type
127
- * @return string
128
- */
129
-
130
- var modelId = function( type ) {
131
- return acf.strPascalCase( type || '' ) + 'Condition';
132
- };
133
-
134
- /**
135
- * acf.registerConditionType
136
- *
137
- * description
138
- *
139
- * @date 1/2/18
140
- * @since 5.6.5
141
- *
142
- * @param type $var Description. Default.
143
- * @return type Description.
144
- */
145
-
146
- acf.registerConditionType = function( model ){
147
-
148
- // vars
149
- var proto = model.prototype;
150
- var type = proto.type;
151
- var mid = modelId( type );
152
-
153
- // store model
154
- acf.models[ mid ] = model;
155
-
156
- // store reference
157
- storage.push( type );
158
- };
159
-
160
- /**
161
- * acf.getConditionType
162
- *
163
- * description
164
- *
165
- * @date 1/2/18
166
- * @since 5.6.5
167
- *
168
- * @param type $var Description. Default.
169
- * @return type Description.
170
- */
171
-
172
- acf.getConditionType = function( type ){
173
- var mid = modelId( type );
174
- return acf.models[ mid ] || false;
175
- }
176
-
177
- /**
178
- * acf.registerConditionForFieldType
179
- *
180
- * description
181
- *
182
- * @date 1/2/18
183
- * @since 5.6.5
184
- *
185
- * @param type $var Description. Default.
186
- * @return type Description.
187
- */
188
-
189
- acf.registerConditionForFieldType = function( conditionType, fieldType ){
190
-
191
- // get model
192
- var model = acf.getConditionType( conditionType );
193
-
194
- // append
195
- if( model ) {
196
- model.prototype.fieldTypes.push( fieldType );
197
- }
198
- };
199
-
200
- /**
201
- * acf.getConditionTypes
202
- *
203
- * description
204
- *
205
- * @date 1/2/18
206
- * @since 5.6.5
207
- *
208
- * @param type $var Description. Default.
209
- * @return type Description.
210
- */
211
-
212
- acf.getConditionTypes = function( args ){
213
-
214
- // defaults
215
- args = acf.parseArgs(args, {
216
- fieldType: '',
217
- operator: ''
218
- });
219
-
220
- // clonse available types
221
- var types = [];
222
-
223
- // loop
224
- storage.map(function( type ){
225
-
226
- // vars
227
- var model = acf.getConditionType(type);
228
- var ProtoFieldTypes = model.prototype.fieldTypes;
229
- var ProtoOperator = model.prototype.operator;
230
-
231
- // check fieldType
232
- if( args.fieldType && ProtoFieldTypes.indexOf( args.fieldType ) === -1 ) {
233
- return;
234
- }
235
-
236
- // check operator
237
- if( args.operator && ProtoOperator !== args.operator ) {
238
- return;
239
- }
240
-
241
- // append
242
- types.push( model );
243
- });
244
-
245
- // return
246
- return types;
247
- };
248
-
249
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-conditions.js DELETED
@@ -1,306 +0,0 @@
1
- (function($, undefined){
2
-
3
- // vars
4
- var CONTEXT = 'conditional_logic';
5
-
6
- /**
7
- * conditionsManager
8
- *
9
- * description
10
- *
11
- * @date 1/2/18
12
- * @since 5.6.5
13
- *
14
- * @param type $var Description. Default.
15
- * @return type Description.
16
- */
17
-
18
- var conditionsManager = new acf.Model({
19
-
20
- id: 'conditionsManager',
21
-
22
- priority: 20, // run actions later
23
-
24
- actions: {
25
- 'new_field': 'onNewField',
26
- },
27
-
28
- onNewField: function( field ){
29
- if( field.has('conditions') ) {
30
- field.getConditions().render();
31
- }
32
- },
33
- });
34
-
35
- /**
36
- * acf.Field.prototype.getField
37
- *
38
- * Finds a field that is related to another field
39
- *
40
- * @date 1/2/18
41
- * @since 5.6.5
42
- *
43
- * @param type $var Description. Default.
44
- * @return type Description.
45
- */
46
-
47
- var getSiblingField = function( field, key ){
48
-
49
- // find sibling (very fast)
50
- var fields = acf.getFields({
51
- key: key,
52
- sibling: field.$el,
53
- suppressFilters: true,
54
- });
55
-
56
- // find sibling-children (fast)
57
- // needed for group fields, accordions, etc
58
- if( !fields.length ) {
59
- fields = acf.getFields({
60
- key: key,
61
- parent: field.$el.parent(),
62
- suppressFilters: true,
63
- });
64
- }
65
-
66
- // return
67
- if( fields.length ) {
68
- return fields[0];
69
- }
70
- return false;
71
- };
72
-
73
- acf.Field.prototype.getField = function( key ){
74
-
75
- // get sibling field
76
- var field = getSiblingField( this, key );
77
-
78
- // return early
79
- if( field ) {
80
- return field;
81
- }
82
-
83
- // move up through each parent and try again
84
- var parents = this.parents();
85
- for( var i = 0; i < parents.length; i++ ) {
86
-
87
- // get sibling field
88
- field = getSiblingField( parents[i], key );
89
-
90
- // return early
91
- if( field ) {
92
- return field;
93
- }
94
- }
95
-
96
- // return
97
- return false;
98
- };
99
-
100
-
101
- /**
102
- * acf.Field.prototype.getConditions
103
- *
104
- * Returns the field's conditions instance
105
- *
106
- * @date 1/2/18
107
- * @since 5.6.5
108
- *
109
- * @param type $var Description. Default.
110
- * @return type Description.
111
- */
112
-
113
- acf.Field.prototype.getConditions = function(){
114
-
115
- // instantiate
116
- if( !this.conditions ) {
117
- this.conditions = new Conditions( this );
118
- }
119
-
120
- // return
121
- return this.conditions;
122
- };
123
-
124
-
125
- /**
126
- * Conditions
127
- *
128
- * description
129
- *
130
- * @date 1/2/18
131
- * @since 5.6.5
132
- *
133
- * @param type $var Description. Default.
134
- * @return type Description.
135
- */
136
- var timeout = false;
137
- var Conditions = acf.Model.extend({
138
-
139
- id: 'Conditions',
140
-
141
- data: {
142
- field: false, // The field with "data-conditions" (target).
143
- timeStamp: false, // Reference used during "change" event.
144
- groups: [], // The groups of condition instances.
145
- },
146
-
147
- setup: function( field ){
148
-
149
- // data
150
- this.data.field = field;
151
-
152
- // vars
153
- var conditions = field.get('conditions');
154
-
155
- // detect groups
156
- if( conditions instanceof Array ) {
157
-
158
- // detect groups
159
- if( conditions[0] instanceof Array ) {
160
-
161
- // loop
162
- conditions.map(function(rules, i){
163
- this.addRules( rules, i );
164
- }, this);
165
-
166
- // detect rules
167
- } else {
168
- this.addRules( conditions );
169
- }
170
-
171
- // detect rule
172
- } else {
173
- this.addRule( conditions );
174
- }
175
- },
176
-
177
- change: function( e ){
178
-
179
- // this function may be triggered multiple times per event due to multiple condition classes
180
- // compare timestamp to allow only 1 trigger per event
181
- if( this.get('timeStamp') === e.timeStamp ) {
182
- return false;
183
- } else {
184
- this.set('timeStamp', e.timeStamp, true);
185
- }
186
-
187
- // render condition and store result
188
- var changed = this.render();
189
- },
190
-
191
- render: function(){
192
- return this.calculate() ? this.show() : this.hide();
193
- },
194
-
195
- show: function(){
196
- return this.get('field').showEnable(this.cid, CONTEXT);
197
- },
198
-
199
- hide: function(){
200
- return this.get('field').hideDisable(this.cid, CONTEXT);
201
- },
202
-
203
- calculate: function(){
204
-
205
- // vars
206
- var pass = false;
207
-
208
- // loop
209
- this.getGroups().map(function( group ){
210
-
211
- // igrnore this group if another group passed
212
- if( pass ) return;
213
-
214
- // find passed
215
- var passed = group.filter(function(condition){
216
- return condition.calculate();
217
- });
218
-
219
- // if all conditions passed, update the global var
220
- if( passed.length == group.length ) {
221
- pass = true;
222
- }
223
- });
224
-
225
- return pass;
226
- },
227
-
228
- hasGroups: function(){
229
- return this.data.groups != null;
230
- },
231
-
232
- getGroups: function(){
233
- return this.data.groups;
234
- },
235
-
236
- addGroup: function(){
237
- var group = [];
238
- this.data.groups.push( group );
239
- return group;
240
- },
241
-
242
- hasGroup: function( i ){
243
- return this.data.groups[i] != null;
244
- },
245
-
246
- getGroup: function( i ){
247
- return this.data.groups[i];
248
- },
249
-
250
- removeGroup: function( i ){
251
- this.data.groups[i].delete;
252
- return this;
253
- },
254
-
255
- addRules: function( rules, group ){
256
- rules.map(function( rule ){
257
- this.addRule( rule, group );
258
- }, this);
259
- },
260
-
261
- addRule: function( rule, group ){
262
-
263
- // defaults
264
- group = group || 0;
265
-
266
- // vars
267
- var groupArray;
268
-
269
- // get group
270
- if( this.hasGroup(group) ) {
271
- groupArray = this.getGroup(group);
272
- } else {
273
- groupArray = this.addGroup();
274
- }
275
-
276
- // instantiate
277
- var condition = acf.newCondition( rule, this );
278
-
279
- // bail ealry if condition failed (field did not exist)
280
- if( !condition ) {
281
- return false;
282
- }
283
-
284
- // add rule
285
- groupArray.push(condition);
286
- },
287
-
288
- hasRule: function(){
289
-
290
- },
291
-
292
- getRule: function( rule, group ){
293
-
294
- // defaults
295
- rule = rule || 0;
296
- group = group || 0;
297
-
298
- return this.data.groups[ group ][ rule ];
299
- },
300
-
301
- removeRule: function(){
302
-
303
- }
304
- });
305
-
306
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-accordion.js DELETED
@@ -1,219 +0,0 @@
1
- (function($, undefined){
2
-
3
- var i = 0;
4
-
5
- var Field = acf.Field.extend({
6
-
7
- type: 'accordion',
8
-
9
- wait: '',
10
-
11
- $control: function(){
12
- return this.$('.acf-fields:first');
13
- },
14
-
15
- initialize: function(){
16
-
17
- // bail early if is cell
18
- if( this.$el.is('td') ) return;
19
-
20
- // enpoint
21
- if( this.get('endpoint') ) {
22
- return this.remove();
23
- }
24
-
25
- // vars
26
- var $field = this.$el;
27
- var $label = this.$labelWrap()
28
- var $input = this.$inputWrap();
29
- var $wrap = this.$control();
30
- var $instructions = $input.children('.description');
31
-
32
- // force description into label
33
- if( $instructions.length ) {
34
- $label.append( $instructions );
35
- }
36
-
37
- // table
38
- if( this.$el.is('tr') ) {
39
-
40
- // vars
41
- var $table = this.$el.closest('table');
42
- var $newLabel = $('<div class="acf-accordion-title"/>');
43
- var $newInput = $('<div class="acf-accordion-content"/>');
44
- var $newTable = $('<table class="' + $table.attr('class') + '"/>');
45
- var $newWrap = $('<tbody/>');
46
-
47
- // dom
48
- $newLabel.append( $label.html() );
49
- $newTable.append( $newWrap );
50
- $newInput.append( $newTable );
51
- $input.append( $newLabel );
52
- $input.append( $newInput );
53
-
54
- // modify
55
- $label.remove();
56
- $wrap.remove();
57
- $input.attr('colspan', 2);
58
-
59
- // update vars
60
- $label = $newLabel;
61
- $input = $newInput;
62
- $wrap = $newWrap;
63
- }
64
-
65
- // add classes
66
- $field.addClass('acf-accordion');
67
- $label.addClass('acf-accordion-title');
68
- $input.addClass('acf-accordion-content');
69
-
70
- // index
71
- i++;
72
-
73
- // multi-expand
74
- if( this.get('multi_expand') ) {
75
- $field.attr('multi-expand', 1);
76
- }
77
-
78
- // open
79
- var order = acf.getPreference('this.accordions') || [];
80
- if( order[i-1] !== undefined ) {
81
- this.set('open', order[i-1]);
82
- }
83
-
84
- if( this.get('open') ) {
85
- $field.addClass('-open');
86
- $input.css('display', 'block'); // needed for accordion to close smoothly
87
- }
88
-
89
- // add icon
90
- $label.prepend('<i class="acf-accordion-icon dashicons dashicons-arrow-' + (this.get('open') ? 'down' : 'right') + '"></i>');
91
-
92
- // classes
93
- // - remove 'inside' which is a #poststuff WP class
94
- var $parent = $field.parent();
95
- $wrap.addClass( $parent.hasClass('-left') ? '-left' : '' );
96
- $wrap.addClass( $parent.hasClass('-clear') ? '-clear' : '' );
97
-
98
- // append
99
- $wrap.append( $field.nextUntil('.acf-field-accordion', '.acf-field') );
100
-
101
- // clean up
102
- $wrap.removeAttr('data-open data-multi_expand data-endpoint');
103
- },
104
-
105
- });
106
-
107
- acf.registerFieldType( Field );
108
-
109
-
110
- /**
111
- * accordionManager
112
- *
113
- * Events manager for the acf accordion
114
- *
115
- * @date 14/2/18
116
- * @since 5.6.9
117
- *
118
- * @param void
119
- * @return void
120
- */
121
-
122
- var accordionManager = new acf.Model({
123
-
124
- actions: {
125
- 'unload': 'onUnload'
126
- },
127
-
128
- events: {
129
- 'click .acf-accordion-title': 'onClick',
130
- 'invalidField .acf-accordion': 'onInvalidField'
131
- },
132
-
133
- isOpen: function( $el ) {
134
- return $el.hasClass('-open');
135
- },
136
-
137
- toggle: function( $el ){
138
- if( this.isOpen($el) ) {
139
- this.close( $el );
140
- } else {
141
- this.open( $el );
142
- }
143
- },
144
-
145
- open: function( $el ){
146
-
147
- // open
148
- $el.find('.acf-accordion-content:first').slideDown().css('display', 'block');
149
- $el.find('.acf-accordion-icon:first').removeClass('dashicons-arrow-right').addClass('dashicons-arrow-down');
150
- $el.addClass('-open');
151
-
152
- // action
153
- acf.doAction('show', $el);
154
-
155
- // close siblings
156
- if( !$el.attr('multi-expand') ) {
157
- $el.siblings('.acf-accordion.-open').each(function(){
158
- accordionManager.close( $(this) );
159
- });
160
- }
161
- },
162
-
163
- close: function( $el ){
164
-
165
- // close
166
- $el.find('.acf-accordion-content:first').slideUp();
167
- $el.find('.acf-accordion-icon:first').removeClass('dashicons-arrow-down').addClass('dashicons-arrow-right');
168
- $el.removeClass('-open');
169
-
170
- // action
171
- acf.doAction('hide', $el);
172
- },
173
-
174
- onClick: function( e, $el ){
175
-
176
- // prevent Defailt
177
- e.preventDefault();
178
-
179
- // open close
180
- this.toggle( $el.parent() );
181
-
182
- },
183
-
184
- onInvalidField: function( e, $el ){
185
-
186
- // bail early if already focused
187
- if( this.busy ) {
188
- return;
189
- }
190
-
191
- // disable functionality for 1sec (allow next validation to work)
192
- this.busy = true;
193
- this.setTimeout(function(){
194
- this.busy = false;
195
- }, 1000);
196
-
197
- // open accordion
198
- this.open( $el );
199
- },
200
-
201
- onUnload: function( e ){
202
-
203
- // vars
204
- var order = [];
205
-
206
- // loop
207
- $('.acf-accordion').each(function(){
208
- var open = $(this).hasClass('-open') ? 1 : 0;
209
- order.push(open);
210
- });
211
-
212
- // set
213
- if( order.length ) {
214
- acf.setPreference('this.accordions', order);
215
- }
216
- }
217
- });
218
-
219
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-button-group.js DELETED
@@ -1,45 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'button_group',
6
-
7
- events: {
8
- 'click input[type="radio"]': 'onClick'
9
- },
10
-
11
- $control: function(){
12
- return this.$('.acf-button-group');
13
- },
14
-
15
- $input: function(){
16
- return this.$('input:checked');
17
- },
18
-
19
- setValue: function( val ){
20
- this.$('input[value="' + val + '"]').prop('checked', true).trigger('change');
21
- },
22
-
23
- onClick: function( e, $el ){
24
-
25
- // vars
26
- var $label = $el.parent('label');
27
- var selected = $label.hasClass('selected');
28
-
29
- // remove previous selected
30
- this.$('.selected').removeClass('selected');
31
-
32
- // add active class
33
- $label.addClass('selected');
34
-
35
- // allow null
36
- if( this.get('allow_null') && selected ) {
37
- $label.removeClass('selected');
38
- $el.prop('checked', false).trigger('change');
39
- }
40
- }
41
- });
42
-
43
- acf.registerFieldType( Field );
44
-
45
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-checkbox.js DELETED
@@ -1,97 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'checkbox',
6
-
7
- events: {
8
- 'change input': 'onChange',
9
- 'click .acf-add-checkbox': 'onClickAdd',
10
- 'click .acf-checkbox-toggle': 'onClickToggle',
11
- 'click .acf-checkbox-custom': 'onClickCustom'
12
- },
13
-
14
- $control: function(){
15
- return this.$('.acf-checkbox-list');
16
- },
17
-
18
- $toggle: function(){
19
- return this.$('.acf-checkbox-toggle');
20
- },
21
-
22
- $input: function(){
23
- return this.$('input[type="hidden"]');
24
- },
25
-
26
- $inputs: function(){
27
- return this.$('input[type="checkbox"]').not('.acf-checkbox-toggle');
28
- },
29
-
30
- getValue: function(){
31
- var val = [];
32
- this.$(':checked').each(function(){
33
- val.push( $(this).val() );
34
- });
35
- return val.length ? val : false;
36
- },
37
-
38
- onChange: function( e, $el ){
39
-
40
- // vars
41
- var checked = $el.prop('checked');
42
- var $toggle = this.$toggle();
43
-
44
- // selected
45
- if( checked ) {
46
- $el.parent().addClass('selected');
47
- } else {
48
- $el.parent().removeClass('selected');
49
- }
50
-
51
- // determine if all inputs are checked
52
- if( $toggle.length ) {
53
- var $inputs = this.$inputs();
54
-
55
- // all checked
56
- if( $inputs.not(':checked').length == 0 ) {
57
- $toggle.prop('checked', true);
58
- } else {
59
- $toggle.prop('checked', false);
60
- }
61
- }
62
- },
63
-
64
- onClickAdd: function( e, $el ){
65
- var html = '<li><input class="acf-checkbox-custom" type="checkbox" checked="checked" /><input type="text" name="' + this.getInputName() + '[]" /></li>';
66
- $el.parent('li').before( html );
67
- },
68
-
69
- onClickToggle: function( e, $el ){
70
- var checked = $el.prop('checked');
71
- var $inputs = this.$inputs();
72
- $inputs.prop('checked', checked);
73
- },
74
-
75
- onClickCustom: function( e, $el ){
76
- var checked = $el.prop('checked');
77
- var $text = $el.next('input[type="text"]');
78
-
79
- // checked
80
- if( checked ) {
81
- $text.prop('disabled', false);
82
-
83
- // not checked
84
- } else {
85
- $text.prop('disabled', true);
86
-
87
- // remove
88
- if( $text.val() == '' ) {
89
- $el.parent('li').remove();
90
- }
91
- }
92
- }
93
- });
94
-
95
- acf.registerFieldType( Field );
96
-
97
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-color-picker.js DELETED
@@ -1,55 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'color_picker',
6
-
7
- wait: 'load',
8
-
9
- $control: function(){
10
- return this.$('.acf-color-picker');
11
- },
12
-
13
- $input: function(){
14
- return this.$('input[type="hidden"]');
15
- },
16
-
17
- $inputText: function(){
18
- return this.$('input[type="text"]');
19
- },
20
-
21
- initialize: function(){
22
-
23
- // vars
24
- var $input = this.$input();
25
- var $inputText = this.$inputText();
26
-
27
- // event
28
- var onChange = function( e ){
29
-
30
- // timeout is required to ensure the $input val is correct
31
- setTimeout(function(){
32
- acf.val( $input, $inputText.val() );
33
- }, 1);
34
- }
35
-
36
- // args
37
- var args = {
38
- defaultColor: false,
39
- palettes: true,
40
- hide: true,
41
- change: onChange,
42
- clear: onChange
43
- };
44
-
45
- // filter
46
- var args = acf.applyFilters('color_picker_args', args, this);
47
-
48
- // initialize
49
- $inputText.wpColorPicker( args );
50
- }
51
- });
52
-
53
- acf.registerFieldType( Field );
54
-
55
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-date-picker.js DELETED
@@ -1,157 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'date_picker',
6
-
7
- events: {
8
- 'blur input[type="text"]': 'onBlur'
9
- },
10
-
11
- $control: function(){
12
- return this.$('.acf-date-picker');
13
- },
14
-
15
- $input: function(){
16
- return this.$('input[type="hidden"]');
17
- },
18
-
19
- $inputText: function(){
20
- return this.$('input[type="text"]');
21
- },
22
-
23
- initialize: function(){
24
-
25
- // save_format: compatibility with ACF < 5.0.0
26
- if( this.has('save_format') ) {
27
- return this.initializeCompatibility();
28
- }
29
-
30
- // vars
31
- var $input = this.$input();
32
- var $inputText = this.$inputText();
33
-
34
- // args
35
- var args = {
36
- dateFormat: this.get('date_format'),
37
- altField: $input,
38
- altFormat: 'yymmdd',
39
- changeYear: true,
40
- yearRange: "-100:+100",
41
- changeMonth: true,
42
- showButtonPanel: true,
43
- firstDay: this.get('first_day')
44
- };
45
-
46
- // filter
47
- args = acf.applyFilters('date_picker_args', args, this);
48
-
49
- // add date picker
50
- acf.newDatePicker( $inputText, args );
51
-
52
- // action
53
- acf.doAction('date_picker_init', $inputText, args, this);
54
-
55
- },
56
-
57
- initializeCompatibility: function(){
58
-
59
- // vars
60
- var $input = this.$input();
61
- var $inputText = this.$inputText();
62
-
63
- // get and set value from alt field
64
- $inputText.val( $input.val() );
65
-
66
- // args
67
- var args = {
68
- dateFormat: this.get('date_format'),
69
- altField: $input,
70
- altFormat: this.get('save_format'),
71
- changeYear: true,
72
- yearRange: "-100:+100",
73
- changeMonth: true,
74
- showButtonPanel: true,
75
- firstDay: this.get('first_day')
76
- };
77
-
78
- // filter for 3rd party customization
79
- args = acf.applyFilters('date_picker_args', args, this);
80
-
81
- // backup
82
- var dateFormat = args.dateFormat;
83
-
84
- // change args.dateFormat
85
- args.dateFormat = this.get('save_format');
86
-
87
- // add date picker
88
- acf.newDatePicker( $inputText, args );
89
-
90
- // now change the format back to how it should be.
91
- $inputText.datepicker( 'option', 'dateFormat', dateFormat );
92
-
93
- // action for 3rd party customization
94
- acf.doAction('date_picker_init', $inputText, args, this);
95
- },
96
-
97
- onBlur: function(){
98
- if( !this.$inputText().val() ) {
99
- acf.val( this.$input(), '' );
100
- }
101
- }
102
- });
103
-
104
- acf.registerFieldType( Field );
105
-
106
-
107
- // manager
108
- var datePickerManager = new acf.Model({
109
- priority: 5,
110
- wait: 'ready',
111
- initialize: function(){
112
-
113
- // vars
114
- var locale = acf.get('locale');
115
- var rtl = acf.get('rtl');
116
- var l10n = acf.get('datePickerL10n');
117
-
118
- // bail ealry if no l10n
119
- if( !l10n ) {
120
- return false;
121
- }
122
-
123
- // bail ealry if no datepicker library
124
- if( typeof $.datepicker === 'undefined' ) {
125
- return false;
126
- }
127
-
128
- // rtl
129
- l10n.isRTL = rtl;
130
-
131
- // append
132
- $.datepicker.regional[ locale ] = l10n;
133
- $.datepicker.setDefaults(l10n);
134
- }
135
- });
136
-
137
- // add
138
- acf.newDatePicker = function( $input, args ){
139
-
140
- // bail ealry if no datepicker library
141
- if( typeof $.datepicker === 'undefined' ) {
142
- return false;
143
- }
144
-
145
- // defaults
146
- args = args || {};
147
-
148
- // initialize
149
- $input.datepicker( args );
150
-
151
- // wrap the datepicker (only if it hasn't already been wrapped)
152
- if( $('body > #ui-datepicker-div').exists() ) {
153
- $('body > #ui-datepicker-div').wrap('<div class="acf-ui-datepicker" />');
154
- }
155
- };
156
-
157
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-date-time-picker.js DELETED
@@ -1,99 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.models.DatePickerField.extend({
4
-
5
- type: 'date_time_picker',
6
-
7
- $control: function(){
8
- return this.$('.acf-date-time-picker');
9
- },
10
-
11
- initialize: function(){
12
-
13
- // vars
14
- var $input = this.$input();
15
- var $inputText = this.$inputText();
16
-
17
- // args
18
- var args = {
19
- dateFormat: this.get('date_format'),
20
- timeFormat: this.get('time_format'),
21
- altField: $input,
22
- altFieldTimeOnly: false,
23
- altFormat: 'yy-mm-dd',
24
- altTimeFormat: 'HH:mm:ss',
25
- changeYear: true,
26
- yearRange: "-100:+100",
27
- changeMonth: true,
28
- showButtonPanel: true,
29
- firstDay: this.get('first_day'),
30
- controlType: 'select',
31
- oneLine: true
32
- };
33
-
34
- // filter
35
- args = acf.applyFilters('date_time_picker_args', args, this);
36
-
37
- // add date time picker
38
- acf.newDateTimePicker( $inputText, args );
39
-
40
- // action
41
- acf.doAction('date_time_picker_init', $inputText, args, this);
42
- }
43
- });
44
-
45
- acf.registerFieldType( Field );
46
-
47
-
48
- // manager
49
- var dateTimePickerManager = new acf.Model({
50
- priority: 5,
51
- wait: 'ready',
52
- initialize: function(){
53
-
54
- // vars
55
- var locale = acf.get('locale');
56
- var rtl = acf.get('rtl');
57
- var l10n = acf.get('dateTimePickerL10n');
58
-
59
- // bail ealry if no l10n
60
- if( !l10n ) {
61
- return false;
62
- }
63
-
64
- // bail ealry if no datepicker library
65
- if( typeof $.timepicker === 'undefined' ) {
66
- return false;
67
- }
68
-
69
- // rtl
70
- l10n.isRTL = rtl;
71
-
72
- // append
73
- $.timepicker.regional[ locale ] = l10n;
74
- $.timepicker.setDefaults(l10n);
75
- }
76
- });
77
-
78
-
79
- // add
80
- acf.newDateTimePicker = function( $input, args ){
81
-
82
- // bail ealry if no datepicker library
83
- if( typeof $.timepicker === 'undefined' ) {
84
- return false;
85
- }
86
-
87
- // defaults
88
- args = args || {};
89
-
90
- // initialize
91
- $input.datetimepicker( args );
92
-
93
- // wrap the datepicker (only if it hasn't already been wrapped)
94
- if( $('body > #ui-datepicker-div').exists() ) {
95
- $('body > #ui-datepicker-div').wrap('<div class="acf-ui-datepicker" />');
96
- }
97
- };
98
-
99
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-file.js DELETED
@@ -1,120 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.models.ImageField.extend({
4
-
5
- type: 'file',
6
-
7
- $control: function(){
8
- return this.$('.acf-file-uploader');
9
- },
10
-
11
- $input: function(){
12
- return this.$('input[type="hidden"]');
13
- },
14
-
15
- validateAttachment: function( attachment ){
16
-
17
- // defaults
18
- attachment = attachment || {};
19
-
20
- // WP attachment
21
- if( attachment.id !== undefined ) {
22
- attachment = attachment.attributes;
23
- }
24
-
25
- // args
26
- attachment = acf.parseArgs(attachment, {
27
- url: '',
28
- alt: '',
29
- title: '',
30
- filename: '',
31
- filesizeHumanReadable: '',
32
- icon: '/wp-includes/images/media/default.png'
33
- });
34
-
35
- // return
36
- return attachment;
37
- },
38
-
39
- render: function( attachment ){
40
-
41
- // vars
42
- attachment = this.validateAttachment( attachment );
43
-
44
- // update image
45
- this.$('img').attr({
46
- src: attachment.icon,
47
- alt: attachment.alt,
48
- title: attachment.title
49
- });
50
-
51
- // update elements
52
- this.$('[data-name="title"]').text( attachment.title );
53
- this.$('[data-name="filename"]').text( attachment.filename ).attr( 'href', attachment.url );
54
- this.$('[data-name="filesize"]').text( attachment.filesizeHumanReadable );
55
-
56
- // vars
57
- var val = attachment.id || '';
58
-
59
- // update val
60
- acf.val( this.$input(), val );
61
-
62
- // update class
63
- if( val ) {
64
- this.$control().addClass('has-value');
65
- } else {
66
- this.$control().removeClass('has-value');
67
- }
68
- },
69
-
70
- selectAttachment: function(){
71
-
72
- // vars
73
- var parent = this.parent();
74
- var multiple = (parent && parent.get('type') === 'repeater');
75
-
76
- // new frame
77
- var frame = acf.newMediaPopup({
78
- mode: 'select',
79
- title: acf.__('Select File'),
80
- field: this.get('key'),
81
- multiple: multiple,
82
- library: this.get('library'),
83
- allowedTypes: this.get('mime_types'),
84
- select: $.proxy(function( attachment, i ) {
85
- if( i > 0 ) {
86
- this.append( attachment, parent );
87
- } else {
88
- this.render( attachment );
89
- }
90
- }, this)
91
- });
92
- },
93
-
94
- editAttachment: function(){
95
-
96
- // vars
97
- var val = this.val();
98
-
99
- // bail early if no val
100
- if( !val ) {
101
- return false;
102
- }
103
-
104
- // popup
105
- var frame = acf.newMediaPopup({
106
- mode: 'edit',
107
- title: acf.__('Edit File'),
108
- button: acf.__('Update File'),
109
- attachment: val,
110
- field: this.get('key'),
111
- select: $.proxy(function( attachment, i ) {
112
- this.render( attachment );
113
- }, this)
114
- });
115
- }
116
- });
117
-
118
- acf.registerFieldType( Field );
119
-
120
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-google-map.js DELETED
@@ -1,569 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'google_map',
6
-
7
- map: false,
8
-
9
- wait: 'load',
10
-
11
- events: {
12
- 'click a[data-name="clear"]': 'onClickClear',
13
- 'click a[data-name="locate"]': 'onClickLocate',
14
- 'click a[data-name="search"]': 'onClickSearch',
15
- 'keydown .search': 'onKeydownSearch',
16
- 'keyup .search': 'onKeyupSearch',
17
- 'focus .search': 'onFocusSearch',
18
- 'blur .search': 'onBlurSearch',
19
- 'showField': 'onShow'
20
- },
21
-
22
- $control: function(){
23
- return this.$('.acf-google-map');
24
- },
25
-
26
- $input: function( name ){
27
- return this.$('input[data-name="' + (name || 'address') + '"]');
28
- },
29
-
30
- $search: function(){
31
- return this.$('.search');
32
- },
33
-
34
- $canvas: function(){
35
- return this.$('.canvas');
36
- },
37
-
38
- addClass: function( name ){
39
- this.$control().addClass( name );
40
- },
41
-
42
- removeClass: function( name ){
43
- this.$control().removeClass( name );
44
- },
45
-
46
- getValue: function(){
47
-
48
- // defaults
49
- var val = {
50
- lat: '',
51
- lng: '',
52
- address: ''
53
- };
54
-
55
- // loop
56
- this.$('input[type="hidden"]').each(function(){
57
- val[ $(this).data('name') ] = $(this).val();
58
- });
59
-
60
- // return false if no lat/lng
61
- if( !val.lat || !val.lng ) {
62
- val = false;
63
- }
64
-
65
- // return
66
- return val;
67
- },
68
-
69
- setValue: function( val ){
70
-
71
- // defaults
72
- val = acf.parseArgs(val, {
73
- lat: '',
74
- lng: '',
75
- address: ''
76
- });
77
-
78
- // loop
79
- for( var name in val ) {
80
- acf.val( this.$input(name), val[name] );
81
- }
82
-
83
- // return false if no lat/lng
84
- if( !val.lat || !val.lng ) {
85
- val = false;
86
- }
87
-
88
- // render
89
- this.renderVal( val );
90
- },
91
-
92
- renderVal: function( val ){
93
-
94
- // has value
95
- if( val ) {
96
- this.addClass('-value');
97
- this.setPosition( val.lat, val.lng );
98
- this.map.marker.setVisible( true );
99
-
100
- // no value
101
- } else {
102
- this.removeClass('-value');
103
- this.map.marker.setVisible( false );
104
- }
105
-
106
- // search
107
- this.$search().val( val.address );
108
- },
109
-
110
- setPosition: function( lat, lng ){
111
-
112
- // vars
113
- var latLng = this.newLatLng( lat, lng );
114
-
115
- // update marker
116
- this.map.marker.setPosition( latLng );
117
-
118
- // show marker
119
- this.map.marker.setVisible( true );
120
-
121
- // action
122
- acf.doAction('google_map_change', latLng, this.map, this);
123
-
124
- // center
125
- this.center();
126
-
127
- // return
128
- return this;
129
- },
130
-
131
- center: function(){
132
-
133
- // vars
134
- var position = this.map.marker.getPosition();
135
- var lat = this.get('lat');
136
- var lng = this.get('lng');
137
-
138
- // if marker exists, center on the marker
139
- if( position ) {
140
- lat = position.lat();
141
- lng = position.lng();
142
- }
143
-
144
- // latlng
145
- var latLng = this.newLatLng( lat, lng );
146
-
147
- // set center of map
148
- this.map.setCenter( latLng );
149
- },
150
-
151
- getSearchVal: function(){
152
- return this.$search().val();
153
- },
154
-
155
- initialize: function(){
156
-
157
- // bail early if too early
158
- if( !api.isReady() ) {
159
- api.ready( this.initializeMap, this );
160
- return;
161
- }
162
-
163
- // initializeMap
164
- this.initializeMap();
165
- },
166
-
167
- newLatLng: function( lat, lng ){
168
- return new google.maps.LatLng( parseFloat(lat), parseFloat(lng) );
169
- },
170
-
171
- initializeMap: function(){
172
-
173
- // vars
174
- var zoom = this.get('zoom');
175
- var lat = this.get('lat');
176
- var lng = this.get('lng');
177
-
178
-
179
- // map
180
- var mapArgs = {
181
- scrollwheel: false,
182
- zoom: parseInt( zoom ),
183
- center: this.newLatLng(lat, lng),
184
- mapTypeId: google.maps.MapTypeId.ROADMAP,
185
- marker: {
186
- draggable: true,
187
- raiseOnDrag: true
188
- },
189
- autocomplete: {}
190
- };
191
- mapArgs = acf.applyFilters('google_map_args', mapArgs, this);
192
- var map = new google.maps.Map( this.$canvas()[0], mapArgs );
193
- this.addMapEvents( map, this );
194
-
195
-
196
- // marker
197
- var markerArgs = acf.parseArgs(mapArgs.marker, {
198
- draggable: true,
199
- raiseOnDrag: true,
200
- map: map
201
- });
202
- markerArgs = acf.applyFilters('google_map_marker_args', markerArgs, this);
203
- var marker = new google.maps.Marker( markerArgs );
204
- this.addMarkerEvents( marker, this );
205
-
206
-
207
- // reference
208
- map.acf = this;
209
- map.marker = marker;
210
- this.map = map;
211
-
212
- // action for 3rd party customization
213
- acf.doAction('google_map_init', map, marker, this);
214
-
215
- // set position
216
- var val = this.getValue();
217
- this.renderVal( val );
218
- },
219
-
220
- addMapEvents: function( map, field ){
221
-
222
- // autocomplete
223
- if( acf.isset(window, 'google', 'maps', 'places', 'Autocomplete') ) {
224
-
225
- // vars
226
- var autocompleteArgs = map.autocomplete || {};
227
- var autocomplete = new google.maps.places.Autocomplete( this.$search()[0], autocompleteArgs );
228
-
229
- // bind
230
- autocomplete.bindTo('bounds', map);
231
-
232
- // autocomplete event place_changed is triggered each time the input changes
233
- // customize the place object with the current "search value" to allow users controll over the address text
234
- google.maps.event.addListener(autocomplete, 'place_changed', function() {
235
- var place = this.getPlace();
236
- place.address = field.getSearchVal();
237
- field.setPlace( place );
238
- });
239
- }
240
-
241
- // click
242
- google.maps.event.addListener( map, 'click', function( e ) {
243
- // vars
244
- var lat = e.latLng.lat();
245
- var lng = e.latLng.lng();
246
-
247
- // search
248
- field.searchPosition( lat, lng );
249
- });
250
- },
251
-
252
- addMarkerEvents: function( marker, field ){
253
-
254
- // dragend
255
- google.maps.event.addListener( marker, 'dragend', function(){
256
- // vars
257
- var position = this.getPosition();
258
- var lat = position.lat();
259
- var lng = position.lng();
260
-
261
- // search
262
- field.searchPosition( lat, lng );
263
- });
264
- },
265
-
266
- searchPosition: function( lat, lng ){
267
-
268
- // vars
269
- var latLng = this.newLatLng( lat, lng );
270
- var $wrap = this.$control();
271
-
272
- // set position
273
- this.setPosition( lat, lng );
274
-
275
- // add class
276
- $wrap.addClass('-loading');
277
-
278
- // callback
279
- var callback = $.proxy(function( results, status ){
280
-
281
- // remove class
282
- $wrap.removeClass('-loading');
283
-
284
- // vars
285
- var address = '';
286
-
287
- // validate
288
- if( status != google.maps.GeocoderStatus.OK ) {
289
- console.log('Geocoder failed due to: ' + status);
290
- } else if( !results[0] ) {
291
- console.log('No results found');
292
- } else {
293
- address = results[0].formatted_address;
294
- }
295
-
296
- // update val
297
- this.val({
298
- lat: lat,
299
- lng: lng,
300
- address: address
301
- });
302
-
303
- }, this);
304
-
305
- // query
306
- api.geocoder.geocode({ 'latLng' : latLng }, callback);
307
- },
308
-
309
- setPlace: function( place ){
310
-
311
- // bail if no place
312
- if( !place ) return this;
313
-
314
- // search name if no geometry
315
- // - possible when hitting enter in search address
316
- if( place.name && !place.geometry ) {
317
- this.searchAddress(place.name);
318
- return this;
319
- }
320
-
321
- // vars
322
- var lat = place.geometry.location.lat();
323
- var lng = place.geometry.location.lng();
324
- var address = place.address || place.formatted_address;
325
-
326
- // update
327
- this.setValue({
328
- lat: lat,
329
- lng: lng,
330
- address: address
331
- });
332
-
333
- // return
334
- return this;
335
- },
336
-
337
- searchAddress: function( address ){
338
-
339
- // is address latLng?
340
- var latLng = address.split(',');
341
- if( latLng.length == 2 ) {
342
-
343
- // vars
344
- var lat = latLng[0];
345
- var lng = latLng[1];
346
-
347
- // check
348
- if( $.isNumeric(lat) && $.isNumeric(lng) ) {
349
- return this.searchPosition( lat, lng );
350
- }
351
- }
352
-
353
- // vars
354
- var $wrap = this.$control();
355
-
356
- // add class
357
- $wrap.addClass('-loading');
358
-
359
- // callback
360
- var callback = this.proxy(function( results, status ){
361
-
362
- // remove class
363
- $wrap.removeClass('-loading');
364
-
365
- // vars
366
- var lat = '';
367
- var lng = '';
368
-
369
- // validate
370
- if( status != google.maps.GeocoderStatus.OK ) {
371
- console.log('Geocoder failed due to: ' + status);
372
- } else if( !results[0] ) {
373
- console.log('No results found');
374
- } else {
375
- lat = results[0].geometry.location.lat();
376
- lng = results[0].geometry.location.lng();
377
- //address = results[0].formatted_address;
378
- }
379
-
380
- // update val
381
- this.val({
382
- lat: lat,
383
- lng: lng,
384
- address: address
385
- });
386
-
387
- //acf.doAction('google_map_geocode_results', results, status, this.$el, this);
388
-
389
- });
390
-
391
- // query
392
- api.geocoder.geocode({ 'address' : address }, callback);
393
- },
394
-
395
- searchLocation: function(){
396
-
397
- // Try HTML5 geolocation
398
- if( !navigator.geolocation ) {
399
- return alert( acf.__('Sorry, this browser does not support geolocation') );
400
- }
401
-
402
- // vars
403
- var $wrap = this.$control();
404
-
405
- // add class
406
- $wrap.addClass('-loading');
407
-
408
- // callback
409
- var onSuccess = $.proxy(function( results, status ){
410
-
411
- // remove class
412
- $wrap.removeClass('-loading');
413
-
414
- // vars
415
- var lat = results.coords.latitude;
416
- var lng = results.coords.longitude;
417
-
418
- // search;
419
- this.searchPosition( lat, lng );
420
-
421
- }, this);
422
-
423
- var onFailure = function( error ){
424
- $wrap.removeClass('-loading');
425
- }
426
-
427
- // try query
428
- navigator.geolocation.getCurrentPosition( onSuccess, onFailure );
429
- },
430
-
431
- onClickClear: function( e, $el ){
432
- this.val( false );
433
- },
434
-
435
- onClickLocate: function( e, $el ){
436
- this.searchLocation();
437
- },
438
-
439
- onClickSearch: function( e, $el ){
440
- this.searchAddress( this.$search().val() );
441
- },
442
-
443
- onFocusSearch: function( e, $el ){
444
- this.removeClass('-value');
445
- this.onKeyupSearch.apply(this, arguments);
446
- },
447
-
448
- onBlurSearch: function( e, $el ){
449
-
450
- // timeout to allow onClickLocate event
451
- this.setTimeout(function(){
452
- this.removeClass('-search');
453
- if( $el.val() ) {
454
- this.addClass('-value');
455
- }
456
- }, 100);
457
- },
458
-
459
- onKeyupSearch: function( e, $el ){
460
- if( $el.val() ) {
461
- this.addClass('-search');
462
- } else {
463
- this.removeClass('-search');
464
- }
465
- },
466
-
467
- onKeydownSearch: function( e, $el ){
468
-
469
- // prevent form from submitting
470
- if( e.which == 13 ) {
471
- e.preventDefault();
472
- }
473
- },
474
-
475
- onMousedown: function(){
476
-
477
- /*
478
- // clear timeout in 1ms (onMousedown will run before onBlurSearch)
479
- this.setTimeout(function(){
480
- clearTimeout( this.get('timeout') );
481
- }, 1);
482
- */
483
- },
484
-
485
- onShow: function(){
486
-
487
- // bail early if no map
488
- // - possible if JS API was not loaded
489
- if( !this.map ) {
490
- return false;
491
- }
492
-
493
- // center map when it is shown (by a tab / collapsed row)
494
- // - use delay to avoid rendering issues with browsers (ensures div is visible)
495
- this.setTimeout( this.center, 10 );
496
- }
497
- });
498
-
499
- acf.registerFieldType( Field );
500
-
501
- var api = new acf.Model({
502
-
503
- geocoder: false,
504
-
505
- data: {
506
- status: false,
507
- },
508
-
509
- getStatus: function(){
510
- return this.get('status');
511
- },
512
-
513
- setStatus: function( status ){
514
- return this.set('status', status);
515
- },
516
-
517
- isReady: function(){
518
-
519
- // loaded
520
- if( this.getStatus() == 'ready' ) {
521
- return true;
522
- }
523
-
524
- // loading
525
- if( this.getStatus() == 'loading' ) {
526
- return false;
527
- }
528
-
529
- // check exists (optimal)
530
- if( acf.isset(window, 'google', 'maps', 'places') ) {
531
- this.setStatus('ready');
532
- return true;
533
- }
534
-
535
- // load api
536
- var url = acf.get('google_map_api');
537
- if( url ) {
538
- this.setStatus('loading');
539
-
540
- // enqueue
541
- $.ajax({
542
- url: url,
543
- dataType: 'script',
544
- cache: true,
545
- context: this,
546
- success: function(){
547
-
548
- // ready
549
- this.setStatus('ready');
550
-
551
- // geocoder
552
- this.geocoder = new google.maps.Geocoder();
553
-
554
- // action
555
- acf.doAction('google_map_api_loaded');
556
- }
557
- });
558
- }
559
-
560
- // return
561
- return false;
562
- },
563
-
564
- ready: function( callback, context ){
565
- acf.addAction('google_map_api_loaded', callback, 10, context);
566
- }
567
- });
568
-
569
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-image.js DELETED
@@ -1,198 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'image',
6
-
7
- $control: function(){
8
- return this.$('.acf-image-uploader');
9
- },
10
-
11
- $input: function(){
12
- return this.$('input[type="hidden"]');
13
- },
14
-
15
- events: {
16
- 'click a[data-name="add"]': 'onClickAdd',
17
- 'click a[data-name="edit"]': 'onClickEdit',
18
- 'click a[data-name="remove"]': 'onClickRemove',
19
- 'change input[type="file"]': 'onChange'
20
- },
21
-
22
- initialize: function(){
23
-
24
- // add attribute to form
25
- if( this.get('uploader') === 'basic' ) {
26
- this.$el.closest('form').attr('enctype', 'multipart/form-data');
27
- }
28
- },
29
-
30
- validateAttachment: function( attachment ){
31
-
32
- // defaults
33
- attachment = attachment || {};
34
-
35
- // WP attachment
36
- if( attachment.id !== undefined ) {
37
- attachment = attachment.attributes;
38
- }
39
-
40
- // args
41
- attachment = acf.parseArgs(attachment, {
42
- url: '',
43
- alt: '',
44
- title: '',
45
- caption: '',
46
- description: '',
47
- width: 0,
48
- height: 0
49
- });
50
-
51
- // preview size
52
- var url = acf.isget(attachment, 'sizes', this.get('preview_size'), 'url');
53
- if( url !== null ) {
54
- attachment.url = url;
55
- }
56
-
57
- // return
58
- return attachment;
59
- },
60
-
61
- render: function( attachment ){
62
-
63
- // vars
64
- attachment = this.validateAttachment( attachment );
65
-
66
- // update image
67
- this.$('img').attr({
68
- src: attachment.url,
69
- alt: attachment.alt,
70
- title: attachment.title
71
- });
72
-
73
- // vars
74
- var val = attachment.id || '';
75
-
76
- // update val
77
- this.val( val );
78
-
79
- // update class
80
- if( val ) {
81
- this.$control().addClass('has-value');
82
- } else {
83
- this.$control().removeClass('has-value');
84
- }
85
- },
86
-
87
- // create a new repeater row and render value
88
- append: function( attachment, parent ){
89
-
90
- // create function to find next available field within parent
91
- var getNext = function( field, parent ){
92
-
93
- // find existing file fields within parent
94
- var fields = acf.getFields({
95
- key: field.get('key'),
96
- parent: parent.$el
97
- });
98
-
99
- // find the first field with no value
100
- for( var i = 0; i < fields.length; i++ ) {
101
- if( !fields[i].val() ) {
102
- return fields[i];
103
- }
104
- }
105
-
106
- // return
107
- return false;
108
- }
109
-
110
- // find existing file fields within parent
111
- var field = getNext( this, parent );
112
-
113
- // add new row if no available field
114
- if( !field ) {
115
- parent.$('.acf-button:last').trigger('click');
116
- field = getNext( this, parent );
117
- }
118
-
119
- // render
120
- if( field ) {
121
- field.render( attachment );
122
- }
123
- },
124
-
125
- selectAttachment: function(){
126
-
127
- // vars
128
- var parent = this.parent();
129
- var multiple = (parent && parent.get('type') === 'repeater');
130
-
131
- // new frame
132
- var frame = acf.newMediaPopup({
133
- mode: 'select',
134
- type: 'image',
135
- title: acf.__('Select Image'),
136
- field: this.get('key'),
137
- multiple: multiple,
138
- library: this.get('library'),
139
- allowedTypes: this.get('mime_types'),
140
- select: $.proxy(function( attachment, i ) {
141
- if( i > 0 ) {
142
- this.append( attachment, parent );
143
- } else {
144
- this.render( attachment );
145
- }
146
- }, this)
147
- });
148
- },
149
-
150
- editAttachment: function(){
151
-
152
- // vars
153
- var val = this.val();
154
-
155
- // bail early if no val
156
- if( !val ) return;
157
-
158
- // popup
159
- var frame = acf.newMediaPopup({
160
- mode: 'edit',
161
- title: acf.__('Edit Image'),
162
- button: acf.__('Update Image'),
163
- attachment: val,
164
- field: this.get('key'),
165
- select: $.proxy(function( attachment, i ) {
166
- this.render( attachment );
167
- }, this)
168
- });
169
- },
170
-
171
- removeAttachment: function(){
172
- this.render( false );
173
- },
174
-
175
- onClickAdd: function( e, $el ){
176
- this.selectAttachment();
177
- },
178
-
179
- onClickEdit: function( e, $el ){
180
- this.editAttachment();
181
- },
182
-
183
- onClickRemove: function( e, $el ){
184
- this.removeAttachment();
185
- },
186
-
187
- onChange: function( e, $el ){
188
- var $hiddenInput = this.$input();
189
-
190
- acf.getFileInputData($el, function( data ){
191
- $hiddenInput.val( $.param(data) );
192
- });
193
- }
194
- });
195
-
196
- acf.registerFieldType( Field );
197
-
198
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-link.js DELETED
@@ -1,191 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'link',
6
-
7
- events: {
8
- 'click a[data-name="add"]': 'onClickEdit',
9
- 'click a[data-name="edit"]': 'onClickEdit',
10
- 'click a[data-name="remove"]': 'onClickRemove',
11
- 'change .link-node': 'onChange',
12
- },
13
-
14
- $control: function(){
15
- return this.$('.acf-link');
16
- },
17
-
18
- $node: function(){
19
- return this.$('.link-node');
20
- },
21
-
22
- getValue: function(){
23
-
24
- // vars
25
- var $node = this.$node();
26
-
27
- // return false if empty
28
- if( !$node.attr('href') ) {
29
- return false;
30
- }
31
-
32
- // return
33
- return {
34
- title: $node.html(),
35
- url: $node.attr('href'),
36
- target: $node.attr('target')
37
- };
38
- },
39
-
40
- setValue: function( val ){
41
-
42
- // default
43
- val = acf.parseArgs(val, {
44
- title: '',
45
- url: '',
46
- target: ''
47
- });
48
-
49
- // vars
50
- var $div = this.$control();
51
- var $node = this.$node();
52
-
53
- // remove class
54
- $div.removeClass('-value -external');
55
-
56
- // add class
57
- if( val.url ) $div.addClass('-value');
58
- if( val.target === '_blank' ) $div.addClass('-external');
59
-
60
- // update text
61
- this.$('.link-title').html( val.title );
62
- this.$('.link-url').attr('href', val.url).html( val.url );
63
-
64
- // update node
65
- $node.html(val.title);
66
- $node.attr('href', val.url);
67
- $node.attr('target', val.target);
68
-
69
- // update inputs
70
- this.$('.input-title').val( val.title );
71
- this.$('.input-target').val( val.target );
72
- this.$('.input-url').val( val.url ).trigger('change');
73
- },
74
-
75
- onClickEdit: function( e, $el ){
76
- acf.wpLink.open( this.$node() );
77
- },
78
-
79
- onClickRemove: function( e, $el ){
80
- this.setValue( false );
81
- },
82
-
83
- onChange: function( e, $el ){
84
-
85
- // get the changed value
86
- var val = this.getValue();
87
-
88
- // update inputs
89
- this.setValue(val);
90
- }
91
-
92
- });
93
-
94
- acf.registerFieldType( Field );
95
-
96
-
97
- // manager
98
- acf.wpLink = new acf.Model({
99
-
100
- getNodeValue: function(){
101
- var $node = this.get('node');
102
- return {
103
- title: $node.html(),
104
- url: $node.attr('href'),
105
- target: $node.attr('target')
106
- };
107
- },
108
-
109
- setNodeValue: function( val ){
110
- var $node = this.get('node');
111
- $node.html( val.title );
112
- $node.attr('href', val.url);
113
- $node.attr('target', val.target);
114
- $node.trigger('change');
115
- },
116
-
117
- getInputValue: function(){
118
- return {
119
- title: $('#wp-link-text').val(),
120
- url: $('#wp-link-url').val(),
121
- target: $('#wp-link-target').prop('checked') ? '_blank' : ''
122
- };
123
- },
124
-
125
- setInputValue: function( val ){
126
- $('#wp-link-text').val( val.title );
127
- $('#wp-link-url').val( val.url );
128
- $('#wp-link-target').prop('checked', val.target === '_blank' );
129
- },
130
-
131
- open: function( $node ){
132
-
133
- // add events
134
- this.on('wplink-open', 'onOpen');
135
- this.on('wplink-close', 'onClose');
136
-
137
- // set node
138
- this.set('node', $node);
139
-
140
- // create textarea
141
- var $textarea = $('<textarea id="acf-link-textarea" style="display:none;"></textarea>');
142
- $('body').append( $textarea );
143
-
144
- // vars
145
- var val = this.getNodeValue();
146
-
147
- // open popup
148
- wpLink.open( 'acf-link-textarea', val.url, val.title, null );
149
-
150
- },
151
-
152
- onOpen: function(){
153
-
154
- // always show title (WP will hide title if empty)
155
- $('#wp-link-wrap').addClass('has-text-field');
156
-
157
- // set inputs
158
- var val = this.getNodeValue();
159
- this.setInputValue( val );
160
- },
161
-
162
- close: function(){
163
- wpLink.close();
164
- },
165
-
166
- onClose: function(){
167
-
168
- // bail early if no node
169
- // needed due to WP triggering this event twice
170
- if( !this.has('node') ) {
171
- return false;
172
- }
173
-
174
- // remove events
175
- this.off('wplink-open');
176
- this.off('wplink-close');
177
-
178
- // set value
179
- var val = this.getInputValue();
180
- this.setNodeValue( val );
181
-
182
- // remove textarea
183
- $('#acf-link-textarea').remove();
184
-
185
- // reset
186
- this.set('node', null);
187
-
188
- }
189
- });
190
-
191
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-oembed.js DELETED
@@ -1,163 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'oembed',
6
-
7
- events: {
8
- 'click [data-name="clear-button"]': 'onClickClear',
9
- 'keypress .input-search': 'onKeypressSearch',
10
- 'keyup .input-search': 'onKeyupSearch',
11
- 'change .input-search': 'onChangeSearch'
12
- },
13
-
14
- $control: function(){
15
- return this.$('.acf-oembed');
16
- },
17
-
18
- $input: function(){
19
- return this.$('.input-value');
20
- },
21
-
22
- $search: function(){
23
- return this.$('.input-search');
24
- },
25
-
26
- getValue: function(){
27
- return this.$input().val();
28
- },
29
-
30
- getSearchVal: function(){
31
- return this.$search().val();
32
- },
33
-
34
- setValue: function( val ){
35
-
36
- // class
37
- if( val ) {
38
- this.$control().addClass('has-value');
39
- } else {
40
- this.$control().removeClass('has-value');
41
- }
42
-
43
- acf.val( this.$input(), val );
44
- },
45
-
46
- showLoading: function( show ){
47
- acf.showLoading( this.$('.canvas') );
48
- },
49
-
50
- hideLoading: function(){
51
- acf.hideLoading( this.$('.canvas') );
52
- },
53
-
54
- maybeSearch: function(){
55
-
56
- // vars
57
- var prevUrl = this.val();
58
- var url = this.getSearchVal();
59
-
60
- // no value
61
- if( !url ) {
62
- return this.clear();
63
- }
64
-
65
- // fix missing 'http://' - causes the oembed code to error and fail
66
- if( url.substr(0, 4) != 'http' ) {
67
- url = 'http://' + url;
68
- }
69
-
70
- // bail early if no change
71
- if( url === prevUrl ) return;
72
-
73
- // clear existing timeout
74
- var timeout = this.get('timeout');
75
- if( timeout ) {
76
- clearTimeout( timeout );
77
- }
78
-
79
- // set new timeout
80
- var callback = $.proxy(this.search, this, url);
81
- this.set('timeout', setTimeout(callback, 300));
82
-
83
- },
84
-
85
- search: function( url ){
86
-
87
- // ajax
88
- var ajaxData = {
89
- action: 'acf/fields/oembed/search',
90
- s: url,
91
- field_key: this.get('key')
92
- };
93
-
94
- // clear existing timeout
95
- var xhr = this.get('xhr');
96
- if( xhr ) {
97
- xhr.abort();
98
- }
99
-
100
- // loading
101
- this.showLoading();
102
-
103
- // query
104
- var xhr = $.ajax({
105
- url: acf.get('ajaxurl'),
106
- data: acf.prepareForAjax(ajaxData),
107
- type: 'post',
108
- dataType: 'json',
109
- context: this,
110
- success: function( json ){
111
-
112
- // error
113
- if( !json || !json.html ) {
114
- json = {
115
- url: false,
116
- html: ''
117
- }
118
- }
119
-
120
- // update vars
121
- this.val( json.url );
122
- this.$('.canvas-media').html( json.html );
123
- },
124
- complete: function(){
125
- this.hideLoading();
126
- }
127
- });
128
-
129
- this.set('xhr', xhr);
130
- },
131
-
132
- clear: function(){
133
- this.val('');
134
- this.$search().val('');
135
- this.$('.canvas-media').html('');
136
- },
137
-
138
- onClickClear: function( e, $el ){
139
- this.clear();
140
- },
141
-
142
- onKeypressSearch: function( e, $el ){
143
- if( e.which == 13 ) {
144
- e.preventDefault();
145
- this.maybeSearch();
146
- }
147
- },
148
-
149
- onKeyupSearch: function( e, $el ){
150
- if( $el.val() ) {
151
- this.maybeSearch();
152
- }
153
- },
154
-
155
- onChangeSearch: function( e, $el ){
156
- this.maybeSearch();
157
- }
158
-
159
- });
160
-
161
- acf.registerFieldType( Field );
162
-
163
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-page-link.js DELETED
@@ -1,9 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.models.SelectField.extend({
4
- type: 'page_link',
5
- });
6
-
7
- acf.registerFieldType( Field );
8
-
9
- })(jQuery);
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-post-object.js DELETED
@@ -1,9 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.models.SelectField.extend({
4
- type: 'post_object',
5
- });
6
-
7
- acf.registerFieldType( Field );
8
-
9
- })(jQuery);
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-radio.js DELETED
@@ -1,68 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'radio',
6
-
7
- events: {
8
- 'click input[type="radio"]': 'onClick',
9
- },
10
-
11
- $control: function(){
12
- return this.$('.acf-radio-list');
13
- },
14
-
15
- $input: function(){
16
- return this.$('input:checked');
17
- },
18
-
19
- $inputText: function(){
20
- return this.$('input[type="text"]');
21
- },
22
-
23
- getValue: function(){
24
- var val = this.$input().val();
25
- if( val === 'other' && this.get('other_choice') ) {
26
- val = this.$inputText().val();
27
- }
28
- return val;
29
- },
30
-
31
- onClick: function( e, $el ){
32
-
33
- // vars
34
- var $label = $el.parent('label');
35
- var selected = $label.hasClass('selected');
36
- var val = $el.val();
37
-
38
- // remove previous selected
39
- this.$('.selected').removeClass('selected');
40
-
41
- // add active class
42
- $label.addClass('selected');
43
-
44
- // allow null
45
- if( this.get('allow_null') && selected ) {
46
- $label.removeClass('selected');
47
- $el.prop('checked', false).trigger('change');
48
- val = false;
49
- }
50
-
51
- // other
52
- if( this.get('other_choice') ) {
53
-
54
- // enable
55
- if( val === 'other' ) {
56
- this.$inputText().prop('disabled', false);
57
-
58
- // disable
59
- } else {
60
- this.$inputText().prop('disabled', true);
61
- }
62
- }
63
- }
64
- });
65
-
66
- acf.registerFieldType( Field );
67
-
68
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-range.js DELETED
@@ -1,42 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'range',
6
-
7
- events: {
8
- 'input input[type="range"]': 'onChange',
9
- 'change input': 'onChange'
10
- },
11
-
12
- $input: function(){
13
- return this.$('input[type="range"]');
14
- },
15
-
16
- $inputAlt: function(){
17
- return this.$('input[type="number"]');
18
- },
19
-
20
- setValue: function( val ){
21
-
22
- this.busy = true;
23
-
24
- // update range input (with change)
25
- acf.val( this.$input(), val );
26
-
27
- // update alt input (without change)
28
- acf.val( this.$inputAlt(), val, true );
29
-
30
- this.busy = false;
31
- },
32
-
33
- onChange: function( e, $el ){
34
- if( !this.busy ) {
35
- this.setValue( $el.val() );
36
- }
37
- }
38
- });
39
-
40
- acf.registerFieldType( Field );
41
-
42
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-relationship.js DELETED
@@ -1,376 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'relationship',
6
-
7
- events: {
8
- 'keypress [data-filter]': 'onKeypressFilter',
9
- 'change [data-filter]': 'onChangeFilter',
10
- 'keyup [data-filter]': 'onChangeFilter',
11
- 'click .choices-list .acf-rel-item': 'onClickAdd',
12
- 'click [data-name="remove_item"]': 'onClickRemove',
13
- 'mouseover': 'onHover'
14
- },
15
-
16
- $control: function(){
17
- return this.$('.acf-relationship');
18
- },
19
-
20
- $list: function( list ) {
21
- return this.$('.' + list + '-list');
22
- },
23
-
24
- $listItems: function( list ) {
25
- return this.$list( list ).find('.acf-rel-item');
26
- },
27
-
28
- $listItem: function( list, id ) {
29
- return this.$list( list ).find('.acf-rel-item[data-id="' + id + '"]');
30
- },
31
-
32
- getValue: function(){
33
- var val = [];
34
- this.$listItems('values').each(function(){
35
- val.push( $(this).data('id') );
36
- });
37
- return val.length ? val : false;
38
- },
39
-
40
- newChoice: function( props ){
41
- return [
42
- '<li>',
43
- '<span data-id="' + props.id + '" class="acf-rel-item">' + props.text + '</span>',
44
- '</li>'
45
- ].join('');
46
- },
47
-
48
- newValue: function( props ){
49
- return [
50
- '<li>',
51
- '<input type="hidden" name="' + this.getInputName() + '[]" value="' + props.id + '" />',
52
- '<span data-id="' + props.id + '" class="acf-rel-item">' + props.text,
53
- '<a href="#" class="acf-icon -minus small dark" data-name="remove_item"></a>',
54
- '</span>',
55
- '</li>'
56
- ].join('');
57
- },
58
-
59
- addSortable: function( self ){
60
-
61
- // sortable
62
- this.$list('values').sortable({
63
- items: 'li',
64
- forceHelperSize: true,
65
- forcePlaceholderSize: true,
66
- scroll: true,
67
- update: function(){
68
- self.$input().trigger('change');
69
- }
70
- });
71
- },
72
-
73
- initialize: function(){
74
-
75
- // scroll
76
- var onScroll = this.proxy(function(e){
77
-
78
- // bail early if no more results
79
- if( this.get('loading') || !this.get('more') ) {
80
- return;
81
- }
82
-
83
- // Scrolled to bottom
84
- var $list = this.$list('choices');
85
- var scrollTop = Math.ceil( $list.scrollTop() );
86
- var scrollHeight = Math.ceil( $list[0].scrollHeight );
87
- var innerHeight = Math.ceil( $list.innerHeight() );
88
- var paged = this.get('paged') || 1;
89
- if( (scrollTop + innerHeight) >= scrollHeight ) {
90
-
91
- // update paged
92
- this.set('paged', (paged+1));
93
-
94
- // fetch
95
- this.fetch();
96
- }
97
-
98
- });
99
-
100
- this.$list('choices').scrollTop(0).on('scroll', onScroll);
101
-
102
- // fetch
103
- this.fetch();
104
- },
105
-
106
- onHover: function( e ){
107
-
108
- // only once
109
- $().off(e);
110
-
111
- // add sortable
112
- this.addSortable( this );
113
- },
114
-
115
- onKeypressFilter: function( e, $el ){
116
-
117
- // don't submit form
118
- if( e.which == 13 ) {
119
- e.preventDefault();
120
- }
121
- },
122
-
123
- onChangeFilter: function( e, $el ){
124
-
125
- // vars
126
- var val = $el.val();
127
- var filter = $el.data('filter');
128
-
129
- // Bail early if filter has not changed
130
- if( this.get(filter) === val ) {
131
- return;
132
- }
133
-
134
- // update attr
135
- this.set(filter, val);
136
-
137
- // reset paged
138
- this.set('paged', 1);
139
-
140
- // fetch
141
- if( $el.is('select') ) {
142
- this.fetch();
143
-
144
- // search must go through timeout
145
- } else {
146
- this.maybeFetch();
147
- }
148
- },
149
-
150
- onClickAdd: function( e, $el ){
151
-
152
- // vars
153
- var val = this.val();
154
- var max = parseInt( this.get('max') );
155
-
156
- // can be added?
157
- if( $el.hasClass('disabled') ) {
158
- return false;
159
- }
160
-
161
- // validate
162
- if( max > 0 && val && val.length >= max ) {
163
-
164
- // add notice
165
- this.showNotice({
166
- text: acf.__('Maximum values reached ( {max} values )').replace('{max}', max),
167
- type: 'warning'
168
- });
169
- return false;
170
- }
171
-
172
- // disable
173
- $el.addClass('disabled');
174
-
175
- // add
176
- var html = this.newValue({
177
- id: $el.data('id'),
178
- text: $el.html()
179
- });
180
- this.$list('values').append( html )
181
-
182
- // trigger change
183
- this.$input().trigger('change');
184
- },
185
-
186
- onClickRemove: function( e, $el ){
187
-
188
- // vars
189
- var $span = $el.parent();
190
- var $li = $span.parent();
191
- var id = $span.data('id');
192
-
193
- // remove value
194
- setTimeout(function(){
195
- $li.remove();
196
- }, 1);
197
-
198
- // show choice
199
- this.$listItem('choices', id).removeClass('disabled');
200
-
201
- // trigger change
202
- this.$input().trigger('change');
203
- },
204
-
205
- maybeFetch: function(){
206
-
207
- // vars
208
- var timeout = this.get('timeout');
209
-
210
- // abort timeout
211
- if( timeout ) {
212
- clearTimeout( timeout );
213
- }
214
-
215
- // fetch
216
- timeout = this.setTimeout(this.fetch, 300);
217
- this.set('timeout', timeout);
218
- },
219
-
220
- getAjaxData: function(){
221
-
222
- // load data based on element attributes
223
- var ajaxData = this.$control().data();
224
- for( var name in ajaxData ) {
225
- ajaxData[ name ] = this.get( name );
226
- }
227
-
228
- // extra
229
- ajaxData.action = 'acf/fields/relationship/query';
230
- ajaxData.field_key = this.get('key');
231
-
232
- // return
233
- return ajaxData;
234
- },
235
-
236
- fetch: function(){
237
-
238
- // abort XHR if this field is already loading AJAX data
239
- var xhr = this.get('xhr');
240
- if( xhr ) {
241
- xhr.abort();
242
- }
243
-
244
- // add to this.o
245
- var ajaxData = this.getAjaxData();
246
-
247
- // clear html if is new query
248
- var $choiceslist = this.$list( 'choices' );
249
- if( ajaxData.paged == 1 ) {
250
- $choiceslist.html('');
251
- }
252
-
253
- // loading
254
- var $loading = $('<li><i class="acf-loading"></i> ' + acf.__('Loading') + '</li>');
255
- $choiceslist.append($loading);
256
- this.set('loading', true);
257
-
258
- // callback
259
- var onComplete = function(){
260
- this.set('loading', false);
261
- $loading.remove();
262
- };
263
-
264
- var onSuccess = function( json ){
265
-
266
- // no results
267
- if( !json || !json.results || !json.results.length ) {
268
-
269
- // prevent pagination
270
- this.set('more', false);
271
-
272
- // add message
273
- if( this.get('paged') == 1 ) {
274
- this.$list('choices').append('<li>' + acf.__('No matches found') + '</li>');
275
- }
276
-
277
- // return
278
- return;
279
- }
280
-
281
- // set more (allows pagination scroll)
282
- this.set('more', json.more );
283
-
284
- // get new results
285
- var html = this.walkChoices(json.results);
286
- var $html = $( html );
287
-
288
- // apply .disabled to left li's
289
- var val = this.val();
290
- if( val && val.length ) {
291
- val.map(function( id ){
292
- $html.find('.acf-rel-item[data-id="' + id + '"]').addClass('disabled');
293
- });
294
- }
295
-
296
- // append
297
- $choiceslist.append( $html );
298
-
299
- // merge together groups
300
- var $prevLabel = false;
301
- var $prevList = false;
302
-
303
- $choiceslist.find('.acf-rel-label').each(function(){
304
-
305
- var $label = $(this);
306
- var $list = $label.siblings('ul');
307
-
308
- if( $prevLabel && $prevLabel.text() == $label.text() ) {
309
- $prevList.append( $list.children() );
310
- $(this).parent().remove();
311
- return;
312
- }
313
-
314
- // update vars
315
- $prevLabel = $label;
316
- $prevList = $list;
317
- });
318
- };
319
-
320
- // get results
321
- var xhr = $.ajax({
322
- url: acf.get('ajaxurl'),
323
- dataType: 'json',
324
- type: 'post',
325
- data: acf.prepareForAjax(ajaxData),
326
- context: this,
327
- success: onSuccess,
328
- complete: onComplete
329
- });
330
-
331
- // set
332
- this.set('xhr', xhr);
333
- },
334
-
335
- walkChoices: function( data ){
336
-
337
- // walker
338
- var walk = function( data ){
339
-
340
- // vars
341
- var html = '';
342
-
343
- // is array
344
- if( $.isArray(data) ) {
345
- data.map(function(item){
346
- html += walk( item );
347
- });
348
-
349
- // is item
350
- } else if( $.isPlainObject(data) ) {
351
-
352
- // group
353
- if( data.children !== undefined ) {
354
-
355
- html += '<li><span class="acf-rel-label">' + data.text + '</span><ul class="acf-bl">';
356
- html += walk( data.children );
357
- html += '</ul></li>';
358
-
359
- // single
360
- } else {
361
- html += '<li><span class="acf-rel-item" data-id="' + data.id + '">' + data.text + '</span></li>';
362
- }
363
- }
364
-
365
- // return
366
- return html;
367
- };
368
-
369
- return walk( data );
370
- }
371
-
372
- });
373
-
374
- acf.registerFieldType( Field );
375
-
376
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-select.js DELETED
@@ -1,57 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'select',
6
-
7
- select2: false,
8
-
9
- wait: 'load',
10
-
11
- events: {
12
- 'removeField': 'onRemove'
13
- },
14
-
15
- $input: function(){
16
- return this.$('select');
17
- },
18
-
19
- initialize: function(){
20
-
21
- // vars
22
- var $select = this.$input();
23
-
24
- // inherit data
25
- this.inherit( $select );
26
-
27
- // select2
28
- if( this.get('ui') ) {
29
-
30
- // populate ajax_data (allowing custom attribute to already exist)
31
- var ajaxAction = this.get('ajax_action');
32
- if( !ajaxAction ) {
33
- ajaxAction = 'acf/fields/' + this.get('type') + '/query';
34
- }
35
-
36
- // select2
37
- this.select2 = acf.newSelect2($select, {
38
- field: this,
39
- ajax: this.get('ajax'),
40
- multiple: this.get('multiple'),
41
- placeholder: this.get('placeholder'),
42
- allowNull: this.get('allow_null'),
43
- ajaxAction: ajaxAction,
44
- });
45
- }
46
- },
47
-
48
- onRemove: function(){
49
- if( this.select2 ) {
50
- this.select2.destroy();
51
- }
52
- }
53
- });
54
-
55
- acf.registerFieldType( Field );
56
-
57
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-tab.js DELETED
@@ -1,505 +0,0 @@
1
- (function($, undefined){
2
-
3
- // vars
4
- var CONTEXT = 'tab';
5
-
6
- var Field = acf.Field.extend({
7
-
8
- type: 'tab',
9
-
10
- wait: '',
11
-
12
- tabs: false,
13
-
14
- tab: false,
15
-
16
- findFields: function(){
17
- return this.$el.nextUntil('.acf-field-tab', '.acf-field');
18
- },
19
-
20
- getFields: function(){
21
- return acf.getFields( this.findFields() );
22
- },
23
-
24
- findTabs: function(){
25
- return this.$el.prevAll('.acf-tab-wrap:first');
26
- },
27
-
28
- findTab: function(){
29
- return this.$('.acf-tab-button');
30
- },
31
-
32
- initialize: function(){
33
-
34
- // bail early if is td
35
- if( this.$el.is('td') ) {
36
- this.events = {};
37
- return false;
38
- }
39
-
40
- // vars
41
- var $tabs = this.findTabs();
42
- var $tab = this.findTab();
43
- var settings = acf.parseArgs($tab.data(), {
44
- endpoint: false,
45
- placement: '',
46
- before: this.$el
47
- });
48
-
49
- // create wrap
50
- if( !$tabs.length || settings.endpoint ) {
51
- this.tabs = new Tabs( settings );
52
- } else {
53
- this.tabs = $tabs.data('acf');
54
- }
55
-
56
- // add tab
57
- this.tab = this.tabs.addTab($tab, this);
58
- },
59
-
60
- isActive: function(){
61
- return this.tab.isActive();
62
- },
63
-
64
- showFields: function(){
65
-
66
- // show fields
67
- this.getFields().map(function( field ){
68
- field.show( this.cid, CONTEXT );
69
- field.hiddenByTab = false;
70
- }, this);
71
-
72
- },
73
-
74
- hideFields: function(){
75
-
76
- // hide fields
77
- this.getFields().map(function( field ){
78
- field.hide( this.cid, CONTEXT );
79
- field.hiddenByTab = this.tab;
80
- }, this);
81
-
82
- },
83
-
84
- show: function( lockKey ){
85
-
86
- // show field and store result
87
- var visible = acf.Field.prototype.show.apply(this, arguments);
88
-
89
- // check if now visible
90
- if( visible ) {
91
-
92
- // show tab
93
- this.tab.show();
94
-
95
- // check active tabs
96
- this.tabs.refresh();
97
- }
98
-
99
- // return
100
- return visible;
101
- },
102
-
103
- hide: function( lockKey ){
104
-
105
- // hide field and store result
106
- var hidden = acf.Field.prototype.hide.apply(this, arguments);
107
-
108
- // check if now hidden
109
- if( hidden ) {
110
-
111
- // hide tab
112
- this.tab.hide();
113
-
114
- // reset tabs if this was active
115
- if( this.isActive() ) {
116
- this.tabs.reset();
117
- }
118
- }
119
-
120
- // return
121
- return hidden;
122
- },
123
-
124
- enable: function( lockKey ){
125
-
126
- // enable fields
127
- this.getFields().map(function( field ){
128
- field.enable( CONTEXT );
129
- });
130
- },
131
-
132
- disable: function( lockKey ){
133
-
134
- // disable fields
135
- this.getFields().map(function( field ){
136
- field.disable( CONTEXT );
137
- });
138
- }
139
- });
140
-
141
- acf.registerFieldType( Field );
142
-
143
-
144
- /**
145
- * tabs
146
- *
147
- * description
148
- *
149
- * @date 8/2/18
150
- * @since 5.6.5
151
- *
152
- * @param type $var Description. Default.
153
- * @return type Description.
154
- */
155
-
156
- var i = 0;
157
- var Tabs = acf.Model.extend({
158
-
159
- tabs: [],
160
-
161
- active: false,
162
-
163
- actions: {
164
- 'refresh': 'onRefresh'
165
- },
166
-
167
- data: {
168
- before: false,
169
- placement: 'top',
170
- index: 0,
171
- initialized: false,
172
- },
173
-
174
- setup: function( settings ){
175
-
176
- // data
177
- $.extend(this.data, settings);
178
-
179
- // define this prop to avoid scope issues
180
- this.tabs = [];
181
- this.active = false;
182
-
183
- // vars
184
- var placement = this.get('placement');
185
- var $before = this.get('before');
186
- var $parent = $before.parent();
187
-
188
- // add sidebar for left placement
189
- if( placement == 'left' && $parent.hasClass('acf-fields') ) {
190
- $parent.addClass('-sidebar');
191
- }
192
-
193
- // create wrap
194
- if( $before.is('tr') ) {
195
- this.$el = $('<tr class="acf-tab-wrap"><td colspan="2"><ul class="acf-hl acf-tab-group"></ul></td></tr>');
196
- } else {
197
- this.$el = $('<div class="acf-tab-wrap -' + placement + '"><ul class="acf-hl acf-tab-group"></ul></div>');
198
- }
199
-
200
- // append
201
- $before.before( this.$el );
202
-
203
- // set index
204
- this.set('index', i, true);
205
- i++;
206
- },
207
-
208
- initializeTabs: function(){
209
-
210
- // find first visible tab
211
- var tab = this.getVisible().shift();
212
-
213
- // remember previous tab state
214
- var order = acf.getPreference('this.tabs') || [];
215
- var groupIndex = this.get('index');
216
- var tabIndex = order[ groupIndex ];
217
-
218
- if( this.tabs[ tabIndex ] && this.tabs[ tabIndex ].isVisible() ) {
219
- tab = this.tabs[ tabIndex ];
220
- }
221
-
222
- // select
223
- if( tab ) {
224
- this.selectTab( tab );
225
- } else {
226
- this.closeTabs();
227
- }
228
-
229
- // set local variable used by tabsManager
230
- this.set('initialized', true);
231
- },
232
-
233
- getVisible: function(){
234
- return this.tabs.filter(function( tab ){
235
- return tab.isVisible();
236
- });
237
- },
238
-
239
- getActive: function(){
240
- return this.active;
241
- },
242
-
243
- setActive: function( tab ){
244
- return this.active = tab;
245
- },
246
-
247
- hasActive: function(){
248
- return (this.active !== false);
249
- },
250
-
251
- isActive: function( tab ){
252
- var active = this.getActive();
253
- return (active && active.cid === tab.cid);
254
- },
255
-
256
- closeActive: function(){
257
- if( this.hasActive() ) {
258
- this.closeTab( this.getActive() );
259
- }
260
- },
261
-
262
- openTab: function( tab ){
263
-
264
- // close existing tab
265
- this.closeActive();
266
-
267
- // open
268
- tab.open();
269
-
270
- // set active
271
- this.setActive( tab );
272
- },
273
-
274
- closeTab: function( tab ){
275
-
276
- // close
277
- tab.close();
278
-
279
- // set active
280
- this.setActive( false );
281
- },
282
-
283
- closeTabs: function(){
284
- this.tabs.map( this.closeTab, this );
285
- },
286
-
287
- selectTab: function( tab ){
288
-
289
- // close other tabs
290
- this.tabs.map(function( t ){
291
- if( tab.cid !== t.cid ) {
292
- this.closeTab( t );
293
- }
294
- }, this);
295
-
296
- // open
297
- this.openTab( tab );
298
-
299
- },
300
-
301
- addTab: function( $a, field ){
302
-
303
- // create <li>
304
- var $li = $('<li></li>');
305
-
306
- // append <a>
307
- $li.append( $a );
308
-
309
- // append
310
- this.$('ul').append( $li );
311
-
312
- // initialize
313
- var tab = new Tab({
314
- $el: $li,
315
- field: field,
316
- group: this,
317
- });
318
-
319
- // store
320
- this.tabs.push( tab );
321
-
322
- // return
323
- return tab;
324
- },
325
-
326
- reset: function(){
327
-
328
- // close existing tab
329
- this.closeActive();
330
-
331
- // find and active a tab
332
- return this.refresh();
333
- },
334
-
335
- refresh: function(){
336
-
337
- // bail early if active already exists
338
- if( this.hasActive() ) {
339
- return false;
340
- }
341
-
342
- // find next active tab
343
- var tab = this.getVisible().shift();
344
-
345
- // open tab
346
- if( tab ) {
347
- this.openTab( tab );
348
- }
349
-
350
- // return
351
- return tab;
352
- },
353
-
354
- onRefresh: function(){
355
-
356
- // only for left placements
357
- if( this.get('placement') !== 'left' ) {
358
- return;
359
- }
360
-
361
- // vars
362
- var $parent = this.$el.parent();
363
- var $list = this.$el.children('ul');
364
- var attribute = $parent.is('td') ? 'height' : 'min-height';
365
-
366
- // find height (minus 1 for border-bottom)
367
- var height = $list.position().top + $list.outerHeight(true) - 1;
368
-
369
- // add css
370
- $parent.css(attribute, height);
371
- }
372
- });
373
-
374
- var Tab = acf.Model.extend({
375
-
376
- group: false,
377
-
378
- field: false,
379
-
380
- events: {
381
- 'click a': 'onClick'
382
- },
383
-
384
- index: function(){
385
- return this.$el.index();
386
- },
387
-
388
- isVisible: function(){
389
- return acf.isVisible( this.$el );
390
- },
391
-
392
- isActive: function(){
393
- return this.$el.hasClass('active');
394
- },
395
-
396
- open: function(){
397
-
398
- // add class
399
- this.$el.addClass('active');
400
-
401
- // show field
402
- this.field.showFields();
403
- },
404
-
405
- close: function(){
406
-
407
- // remove class
408
- this.$el.removeClass('active');
409
-
410
- // hide field
411
- this.field.hideFields();
412
- },
413
-
414
- onClick: function( e, $el ){
415
-
416
- // prevent default
417
- e.preventDefault();
418
-
419
- // toggle
420
- this.toggle();
421
- },
422
-
423
- toggle: function(){
424
-
425
- // bail early if already active
426
- if( this.isActive() ) {
427
- return;
428
- }
429
-
430
- // toggle this tab
431
- this.group.openTab( this );
432
- }
433
- });
434
-
435
- var tabsManager = new acf.Model({
436
-
437
- priority: 50,
438
-
439
- actions: {
440
- 'prepare': 'render',
441
- 'append': 'render',
442
- 'unload': 'onUnload',
443
- 'invalid_field': 'onInvalidField'
444
- },
445
-
446
- findTabs: function(){
447
- return $('.acf-tab-wrap');
448
- },
449
-
450
- getTabs: function(){
451
- return acf.getInstances( this.findTabs() );
452
- },
453
-
454
- render: function( $el ){
455
- this.getTabs().map(function( tabs ){
456
- if( !tabs.get('initialized') ) {
457
- tabs.initializeTabs();
458
- }
459
- });
460
- },
461
-
462
- onInvalidField: function( field ){
463
-
464
- // bail early if busy
465
- if( this.busy ) {
466
- return;
467
- }
468
-
469
- // ignore if not hidden by tab
470
- if( !field.hiddenByTab ) {
471
- return;
472
- }
473
-
474
- // toggle tab
475
- field.hiddenByTab.toggle();
476
-
477
- // ignore other invalid fields
478
- this.busy = true;
479
- this.setTimeout(function(){
480
- this.busy = false;
481
- }, 100);
482
- },
483
-
484
- onUnload: function(){
485
-
486
- // vars
487
- var order = [];
488
-
489
- // loop
490
- this.getTabs().map(function( group ){
491
- var active = group.hasActive() ? group.getActive().index() : 0;
492
- order.push(active);
493
- });
494
-
495
- // bail if no tabs
496
- if( !order.length ) {
497
- return;
498
- }
499
-
500
- // update
501
- acf.setPreference('this.tabs', order);
502
- }
503
- });
504
-
505
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-taxonomy.js DELETED
@@ -1,320 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'taxonomy',
6
-
7
- data: {
8
- 'ftype': 'select'
9
- },
10
-
11
- select2: false,
12
-
13
- wait: 'load',
14
-
15
- events: {
16
- 'click a[data-name="add"]': 'onClickAdd',
17
- 'click input[type="radio"]': 'onClickRadio',
18
- },
19
-
20
- $control: function(){
21
- return this.$('.acf-taxonomy-field');
22
- },
23
-
24
- $input: function(){
25
- return this.getRelatedPrototype().$input.apply(this, arguments);
26
- },
27
-
28
- getRelatedType: function(){
29
-
30
- // vars
31
- var fieldType = this.get('ftype');
32
-
33
- // normalize
34
- if( fieldType == 'multi_select' ) {
35
- fieldType = 'select';
36
- }
37
-
38
- // return
39
- return fieldType;
40
-
41
- },
42
-
43
- getRelatedPrototype: function(){
44
- return acf.getFieldType( this.getRelatedType() ).prototype;
45
- },
46
-
47
- getValue: function(){
48
- return this.getRelatedPrototype().getValue.apply(this, arguments);
49
- },
50
-
51
- setValue: function(){
52
- return this.getRelatedPrototype().setValue.apply(this, arguments);
53
- },
54
-
55
- initialize: function(){
56
- this.getRelatedPrototype().initialize.apply(this, arguments);
57
- },
58
-
59
- onRemove: function(){
60
- if( this.select2 ) {
61
- this.select2.destroy();
62
- }
63
- },
64
-
65
- onClickAdd: function( e, $el ){
66
-
67
- // vars
68
- var field = this;
69
- var popup = false;
70
- var $form = false;
71
- var $name = false;
72
- var $parent = false;
73
- var $button = false;
74
- var $message = false;
75
- var notice = false;
76
-
77
- // step 1.
78
- var step1 = function(){
79
-
80
- // popup
81
- popup = acf.newPopup({
82
- title: $el.attr('title'),
83
- loading: true,
84
- width: '300px'
85
- });
86
-
87
- // ajax
88
- var ajaxData = {
89
- action: 'acf/fields/taxonomy/add_term',
90
- field_key: field.get('key')
91
- };
92
-
93
- // get HTML
94
- $.ajax({
95
- url: acf.get('ajaxurl'),
96
- data: acf.prepareForAjax(ajaxData),
97
- type: 'post',
98
- dataType: 'html',
99
- success: step2
100
- });
101
- };
102
-
103
- // step 2.
104
- var step2 = function( html ){
105
-
106
- // update popup
107
- popup.loading(false);
108
- popup.content(html);
109
-
110
- // vars
111
- $form = popup.$('form');
112
- $name = popup.$('input[name="term_name"]');
113
- $parent = popup.$('select[name="term_parent"]');
114
- $button = popup.$('.acf-submit-button');
115
-
116
- // focus
117
- $name.focus();
118
-
119
- // submit form
120
- popup.on('submit', 'form', step3);
121
- };
122
-
123
- // step 3.
124
- var step3 = function( e, $el ){
125
-
126
- // prevent
127
- e.preventDefault();
128
-
129
- // basic validation
130
- if( $name.val() === '' ) {
131
- $name.focus();
132
- return false;
133
- }
134
-
135
- // disable
136
- acf.startButtonLoading( $button );
137
-
138
- // ajax
139
- var ajaxData = {
140
- action: 'acf/fields/taxonomy/add_term',
141
- field_key: field.get('key'),
142
- term_name: $name.val(),
143
- term_parent: $parent.length ? $parent.val() : 0
144
- };
145
-
146
- $.ajax({
147
- url: acf.get('ajaxurl'),
148
- data: acf.prepareForAjax(ajaxData),
149
- type: 'post',
150
- dataType: 'json',
151
- success: step4
152
- });
153
- };
154
-
155
- // step 4.
156
- var step4 = function( json ){
157
-
158
- // enable
159
- acf.stopButtonLoading( $button );
160
-
161
- // remove prev notice
162
- if( notice ) {
163
- notice.remove();
164
- }
165
-
166
- // success
167
- if( acf.isAjaxSuccess(json) ) {
168
-
169
- // clear name
170
- $name.val('');
171
-
172
- // update term lists
173
- step5( json.data );
174
-
175
- // notice
176
- notice = acf.newNotice({
177
- type: 'success',
178
- text: acf.getAjaxMessage(json),
179
- target: $form,
180
- timeout: 2000,
181
- dismiss: false
182
- });
183
-
184
- } else {
185
-
186
- // notice
187
- notice = acf.newNotice({
188
- type: 'error',
189
- text: acf.getAjaxError(json),
190
- target: $form,
191
- timeout: 2000,
192
- dismiss: false
193
- });
194
- }
195
-
196
- // focus
197
- $name.focus();
198
- };
199
-
200
- // step 5.
201
- var step5 = function( term ){
202
-
203
- // update parent dropdown
204
- var $option = $('<option value="' + term.term_id + '">' + term.term_label + '</option>');
205
- if( term.term_parent ) {
206
- $parent.children('option[value="' + term.term_parent + '"]').after( $option );
207
- } else {
208
- $parent.append( $option );
209
- }
210
-
211
- // add this new term to all taxonomy field
212
- var fields = acf.getFields({
213
- type: 'taxonomy'
214
- });
215
-
216
- fields.map(function( otherField ){
217
- if( otherField.get('taxonomy') == field.get('taxonomy') ) {
218
- otherField.appendTerm( term );
219
- }
220
- });
221
-
222
- // select
223
- field.selectTerm( term.term_id );
224
- };
225
-
226
- // run
227
- step1();
228
- },
229
-
230
- appendTerm: function( term ){
231
-
232
- if( this.getRelatedType() == 'select' ) {
233
- this.appendTermSelect( term );
234
- } else {
235
- this.appendTermCheckbox( term );
236
- }
237
- },
238
-
239
- appendTermSelect: function( term ){
240
-
241
- this.select2.addOption({
242
- id: term.term_id,
243
- text: term.term_label
244
- });
245
-
246
- },
247
-
248
- appendTermCheckbox: function( term ){
249
-
250
- // vars
251
- var name = this.$('[name]:first').attr('name');
252
- var $ul = this.$('ul:first');
253
-
254
- // allow multiple selection
255
- if( this.getRelatedType() == 'checkbox' ) {
256
- name += '[]';
257
- }
258
-
259
- // create new li
260
- var $li = $([
261
- '<li data-id="' + term.term_id + '">',
262
- '<label>',
263
- '<input type="' + this.get('ftype') + '" value="' + term.term_id + '" name="' + name + '" /> ',
264
- '<span>' + term.term_name + '</span>',
265
- '</label>',
266
- '</li>'
267
- ].join(''));
268
-
269
- // find parent
270
- if( term.term_parent ) {
271
-
272
- // vars
273
- var $parent = $ul.find('li[data-id="' + term.term_parent + '"]');
274
-
275
- // update vars
276
- $ul = $parent.children('ul');
277
-
278
- // create ul
279
- if( !$ul.exists() ) {
280
- $ul = $('<ul class="children acf-bl"></ul>');
281
- $parent.append( $ul );
282
- }
283
- }
284
-
285
- // append
286
- $ul.append( $li );
287
- },
288
-
289
- selectTerm: function( id ){
290
- if( this.getRelatedType() == 'select' ) {
291
- this.select2.selectOption( id );
292
- } else {
293
- var $input = this.$('input[value="' + id + '"]');
294
- $input.prop('checked', true).trigger('change');
295
- }
296
- },
297
-
298
- onClickRadio: function( e, $el ){
299
-
300
- // vars
301
- var $label = $el.parent('label');
302
- var selected = $label.hasClass('selected');
303
-
304
- // remove previous selected
305
- this.$('.selected').removeClass('selected');
306
-
307
- // add active class
308
- $label.addClass('selected');
309
-
310
- // allow null
311
- if( this.get('allow_null') && selected ) {
312
- $label.removeClass('selected');
313
- $el.prop('checked', false).trigger('change');
314
- }
315
- }
316
- });
317
-
318
- acf.registerFieldType( Field );
319
-
320
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-time-picker.js DELETED
@@ -1,77 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.models.DatePickerField.extend({
4
-
5
- type: 'time_picker',
6
-
7
- $control: function(){
8
- return this.$('.acf-time-picker');
9
- },
10
-
11
- initialize: function(){
12
-
13
- // vars
14
- var $input = this.$input();
15
- var $inputText = this.$inputText();
16
-
17
- // args
18
- var args = {
19
- timeFormat: this.get('time_format'),
20
- altField: $input,
21
- altFieldTimeOnly: false,
22
- altTimeFormat: 'HH:mm:ss',
23
- showButtonPanel: true,
24
- controlType: 'select',
25
- oneLine: true,
26
- closeText: acf.get('dateTimePickerL10n').selectText,
27
- timeOnly: true,
28
- };
29
-
30
- // add custom 'Close = Select' functionality
31
- args.onClose = function( value, dp_instance, t_instance ){
32
-
33
- // vars
34
- var $close = dp_instance.dpDiv.find('.ui-datepicker-close');
35
-
36
- // if clicking close button
37
- if( !value && $close.is(':hover') ) {
38
- t_instance._updateDateTime();
39
- }
40
- };
41
-
42
-
43
- // filter
44
- args = acf.applyFilters('time_picker_args', args, this);
45
-
46
- // add date time picker
47
- acf.newTimePicker( $inputText, args );
48
-
49
- // action
50
- acf.doAction('time_picker_init', $inputText, args, this);
51
- }
52
- });
53
-
54
- acf.registerFieldType( Field );
55
-
56
-
57
- // add
58
- acf.newTimePicker = function( $input, args ){
59
-
60
- // bail ealry if no datepicker library
61
- if( typeof $.timepicker === 'undefined' ) {
62
- return false;
63
- }
64
-
65
- // defaults
66
- args = args || {};
67
-
68
- // initialize
69
- $input.timepicker( args );
70
-
71
- // wrap the datepicker (only if it hasn't already been wrapped)
72
- if( $('body > #ui-datepicker-div').exists() ) {
73
- $('body > #ui-datepicker-div').wrap('<div class="acf-ui-datepicker" />');
74
- }
75
- };
76
-
77
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-true-false.js DELETED
@@ -1,95 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'true_false',
6
-
7
- events: {
8
- 'change .acf-switch-input': 'onChange',
9
- 'focus .acf-switch-input': 'onFocus',
10
- 'blur .acf-switch-input': 'onBlur',
11
- 'keypress .acf-switch-input': 'onKeypress'
12
- },
13
-
14
- $input: function(){
15
- return this.$('input[type="checkbox"]');
16
- },
17
-
18
- $switch: function(){
19
- return this.$('.acf-switch');
20
- },
21
-
22
- getValue: function(){
23
- return this.$input().prop('checked') ? 1 : 0;
24
- },
25
-
26
- initialize: function(){
27
- this.render();
28
- },
29
-
30
- render: function(){
31
-
32
- // vars
33
- var $switch = this.$switch();
34
-
35
- // bail ealry if no $switch
36
- if( !$switch.length ) return;
37
-
38
- // vars
39
- var $on = $switch.children('.acf-switch-on');
40
- var $off = $switch.children('.acf-switch-off');
41
- var width = Math.max( $on.width(), $off.width() );
42
-
43
- // bail ealry if no width
44
- if( !width ) return;
45
-
46
- // set widths
47
- $on.css( 'min-width', width );
48
- $off.css( 'min-width', width );
49
-
50
- },
51
-
52
- switchOn: function() {
53
- this.$input().prop('checked', true);
54
- this.$switch().addClass('-on');
55
- },
56
-
57
- switchOff: function() {
58
- this.$input().prop('checked', false);
59
- this.$switch().removeClass('-on');
60
- },
61
-
62
- onChange: function( e, $el ){
63
- if( $el.prop('checked') ) {
64
- this.switchOn();
65
- } else {
66
- this.switchOff();
67
- }
68
- },
69
-
70
- onFocus: function( e, $el ){
71
- this.$switch().addClass('-focus');
72
- },
73
-
74
- onBlur: function( e, $el ){
75
- this.$switch().removeClass('-focus');
76
- },
77
-
78
- onKeypress: function( e, $el ){
79
-
80
- // left
81
- if( e.keyCode === 37 ) {
82
- return this.switchOff();
83
- }
84
-
85
- // right
86
- if( e.keyCode === 39 ) {
87
- return this.switchOn();
88
- }
89
-
90
- }
91
- });
92
-
93
- acf.registerFieldType( Field );
94
-
95
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-url.js DELETED
@@ -1,64 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'url',
6
-
7
- events: {
8
- 'keyup input[type="url"]': 'onkeyup'
9
- },
10
-
11
- $control: function(){
12
- return this.$('.acf-input-wrap');
13
- },
14
-
15
- $input: function(){
16
- return this.$('input[type="url"]');
17
- },
18
-
19
- initialize: function(){
20
- this.render();
21
- },
22
-
23
- isValid: function(){
24
-
25
- // vars
26
- var val = this.val();
27
-
28
- // bail early if no val
29
- if( !val ) {
30
- return false;
31
- }
32
-
33
- // url
34
- if( val.indexOf('://') !== -1 ) {
35
- return true;
36
- }
37
-
38
- // protocol relative url
39
- if( val.indexOf('//') === 0 ) {
40
- return true;
41
- }
42
-
43
- // return
44
- return false;
45
- },
46
-
47
- render: function(){
48
-
49
- // add class
50
- if( this.isValid() ) {
51
- this.$control().addClass('-valid');
52
- } else {
53
- this.$control().removeClass('-valid');
54
- }
55
- },
56
-
57
- onkeyup: function( e, $el ){
58
- this.render();
59
- }
60
- });
61
-
62
- acf.registerFieldType( Field );
63
-
64
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-user.js DELETED
@@ -1,9 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.models.SelectField.extend({
4
- type: 'user',
5
- });
6
-
7
- acf.registerFieldType( Field );
8
-
9
- })(jQuery);
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field-wysiwyg.js DELETED
@@ -1,95 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Field = acf.Field.extend({
4
-
5
- type: 'wysiwyg',
6
-
7
- wait: 'load',
8
-
9
- events: {
10
- 'mousedown .acf-editor-wrap.delay': 'onMousedown',
11
- 'sortstartField': 'disableEditor',
12
- 'sortstopField': 'enableEditor',
13
- 'removeField': 'disableEditor'
14
- },
15
-
16
- $control: function(){
17
- return this.$('.acf-editor-wrap');
18
- },
19
-
20
- $input: function(){
21
- return this.$('textarea');
22
- },
23
-
24
- getMode: function(){
25
- return this.$control().hasClass('tmce-active') ? 'visual' : 'text';
26
- },
27
-
28
- initialize: function(){
29
-
30
- // initializeEditor if no delay
31
- if( !this.$control().hasClass('delay') ) {
32
- this.initializeEditor();
33
- }
34
- },
35
-
36
- initializeEditor: function(){
37
-
38
- // vars
39
- var $wrap = this.$control();
40
- var $textarea = this.$input();
41
- var args = {
42
- tinymce: true,
43
- quicktags: true,
44
- toolbar: this.get('toolbar'),
45
- mode: this.getMode(),
46
- field: this
47
- };
48
-
49
- // generate new id
50
- var oldId = $textarea.attr('id');
51
- var newId = acf.uniqueId('acf-editor-');
52
-
53
- // rename
54
- acf.rename({
55
- target: $wrap,
56
- search: oldId,
57
- replace: newId,
58
- destructive: true
59
- });
60
-
61
- // update id
62
- this.set('id', newId, true);
63
-
64
- // initialize
65
- acf.tinymce.initialize( newId, args );
66
- },
67
-
68
- onMousedown: function( e ){
69
-
70
- // prevent default
71
- e.preventDefault();
72
-
73
- // remove delay class
74
- var $wrap = this.$control();
75
- $wrap.removeClass('delay');
76
- $wrap.find('.acf-editor-toolbar').remove();
77
-
78
- // initialize
79
- this.initializeEditor();
80
- },
81
-
82
- enableEditor: function(){
83
- if( this.getMode() == 'visual' ) {
84
- acf.tinymce.enable( this.get('id') );
85
- }
86
- },
87
-
88
- disableEditor: function(){
89
- acf.tinymce.destroy( this.get('id') );
90
- }
91
- });
92
-
93
- acf.registerFieldType( Field );
94
-
95
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-field.js DELETED
@@ -1,524 +0,0 @@
1
- (function($, undefined){
2
-
3
- // vars
4
- var storage = [];
5
-
6
- /**
7
- * acf.Field
8
- *
9
- * description
10
- *
11
- * @date 23/3/18
12
- * @since 5.6.9
13
- *
14
- * @param type $var Description. Default.
15
- * @return type Description.
16
- */
17
-
18
- acf.Field = acf.Model.extend({
19
-
20
- // field type
21
- type: '',
22
-
23
- // class used to avoid nested event triggers
24
- eventScope: '.acf-field',
25
-
26
- // initialize events on 'ready'
27
- wait: 'ready',
28
-
29
- /**
30
- * setup
31
- *
32
- * Called during the constructor function to setup this field ready for initialization
33
- *
34
- * @date 8/5/18
35
- * @since 5.6.9
36
- *
37
- * @param jQuery $field The field element.
38
- * @return void
39
- */
40
-
41
- setup: function( $field ){
42
-
43
- // set $el
44
- this.$el = $field;
45
-
46
- // inherit $field data
47
- this.inherit( $field );
48
-
49
- // inherit controll data
50
- this.inherit( this.$control() );
51
- },
52
-
53
- /**
54
- * val
55
- *
56
- * Sets or returns the field's value
57
- *
58
- * @date 8/5/18
59
- * @since 5.6.9
60
- *
61
- * @param mixed val Optional. The value to set
62
- * @return mixed
63
- */
64
-
65
- val: function( val ){
66
- if( val !== undefined ) {
67
- return this.setValue( val );
68
- } else {
69
- return this.prop('disabled') ? null : this.getValue();
70
- }
71
- },
72
-
73
- /**
74
- * getValue
75
- *
76
- * returns the field's value
77
- *
78
- * @date 8/5/18
79
- * @since 5.6.9
80
- *
81
- * @param void
82
- * @return mixed
83
- */
84
-
85
- getValue: function(){
86
- return this.$input().val();
87
- },
88
-
89
- /**
90
- * setValue
91
- *
92
- * sets the field's value and returns true if changed
93
- *
94
- * @date 8/5/18
95
- * @since 5.6.9
96
- *
97
- * @param mixed val
98
- * @return boolean. True if changed.
99
- */
100
-
101
- setValue: function( val ){
102
- return acf.val( this.$input(), val );
103
- },
104
-
105
- /**
106
- * __
107
- *
108
- * i18n helper to be removed
109
- *
110
- * @date 8/5/18
111
- * @since 5.6.9
112
- *
113
- * @param type $var Description. Default.
114
- * @return type Description.
115
- */
116
-
117
- __: function( string ){
118
- return acf._e( this.type, string );
119
- },
120
-
121
- /**
122
- * $control
123
- *
124
- * returns the control jQuery element used for inheriting data. Uses this.control setting.
125
- *
126
- * @date 8/5/18
127
- * @since 5.6.9
128
- *
129
- * @param void
130
- * @return jQuery
131
- */
132
-
133
- $control: function(){
134
- return false;
135
- },
136
-
137
- /**
138
- * $input
139
- *
140
- * returns the input jQuery element used for saving values. Uses this.input setting.
141
- *
142
- * @date 8/5/18
143
- * @since 5.6.9
144
- *
145
- * @param void
146
- * @return jQuery
147
- */
148
-
149
- $input: function(){
150
- return this.$('[name]:first');
151
- },
152
-
153
- /**
154
- * $inputWrap
155
- *
156
- * description
157
- *
158
- * @date 12/5/18
159
- * @since 5.6.9
160
- *
161
- * @param type $var Description. Default.
162
- * @return type Description.
163
- */
164
-
165
- $inputWrap: function(){
166
- return this.$('.acf-input:first');
167
- },
168
-
169
- /**
170
- * $inputWrap
171
- *
172
- * description
173
- *
174
- * @date 12/5/18
175
- * @since 5.6.9
176
- *
177
- * @param type $var Description. Default.
178
- * @return type Description.
179
- */
180
-
181
- $labelWrap: function(){
182
- return this.$('.acf-label:first');
183
- },
184
-
185
- /**
186
- * getInputName
187
- *
188
- * Returns the field's input name
189
- *
190
- * @date 8/5/18
191
- * @since 5.6.9
192
- *
193
- * @param void
194
- * @return string
195
- */
196
-
197
- getInputName: function(){
198
- return this.$input().attr('name') || '';
199
- },
200
-
201
- /**
202
- * parent
203
- *
204
- * returns the field's parent field or false on failure.
205
- *
206
- * @date 8/5/18
207
- * @since 5.6.9
208
- *
209
- * @param void
210
- * @return object|false
211
- */
212
-
213
- parent: function() {
214
-
215
- // vars
216
- var parents = this.parents();
217
-
218
- // return
219
- return parents.length ? parents[0] : false;
220
- },
221
-
222
- /**
223
- * parents
224
- *
225
- * description
226
- *
227
- * @date 9/7/18
228
- * @since 5.6.9
229
- *
230
- * @param type $var Description. Default.
231
- * @return type Description.
232
- */
233
-
234
- parents: function(){
235
-
236
- // vars
237
- var $parents = this.$el.parents('.acf-field');
238
-
239
- // convert
240
- var parents = acf.getFields( $parents );
241
-
242
- // return
243
- return parents;
244
- },
245
-
246
- show: function( lockKey, context ){
247
-
248
- // show field and store result
249
- var changed = acf.show( this.$el, lockKey );
250
-
251
- // do action if visibility has changed
252
- if( changed ) {
253
- this.prop('hidden', false);
254
- acf.doAction('show_field', this, context);
255
- }
256
-
257
- // return
258
- return changed;
259
- },
260
-
261
- hide: function( lockKey, context ){
262
-
263
- // hide field and store result
264
- var changed = acf.hide( this.$el, lockKey );
265
-
266
- // do action if visibility has changed
267
- if( changed ) {
268
- this.prop('hidden', true);
269
- acf.doAction('hide_field', this, context);
270
- }
271
-
272
- // return
273
- return changed;
274
- },
275
-
276
- enable: function( lockKey, context ){
277
-
278
- // enable field and store result
279
- var changed = acf.enable( this.$el, lockKey );
280
-
281
- // do action if disabled has changed
282
- if( changed ) {
283
- this.prop('disabled', false);
284
- acf.doAction('enable_field', this, context);
285
- }
286
-
287
- // return
288
- return changed;
289
- },
290
-
291
- disable: function( lockKey, context ){
292
-
293
- // disabled field and store result
294
- var changed = acf.disable( this.$el, lockKey );
295
-
296
- // do action if disabled has changed
297
- if( changed ) {
298
- this.prop('disabled', true);
299
- acf.doAction('disable_field', this, context);
300
- }
301
-
302
- // return
303
- return changed;
304
- },
305
-
306
- showEnable: function( lockKey, context ){
307
-
308
- // enable
309
- this.enable.apply(this, arguments);
310
-
311
- // show and return true if changed
312
- return this.show.apply(this, arguments);
313
- },
314
-
315
- hideDisable: function( lockKey, context ){
316
-
317
- // disable
318
- this.disable.apply(this, arguments);
319
-
320
- // hide and return true if changed
321
- return this.hide.apply(this, arguments);
322
- },
323
-
324
- showNotice: function( props ){
325
-
326
- // ensure object
327
- if( typeof props !== 'object' ) {
328
- props = { text: props };
329
- }
330
-
331
- // remove old notice
332
- if( this.notice ) {
333
- this.notice.remove();
334
- }
335
-
336
- // create new notice
337
- props.target = this.$inputWrap();
338
- this.notice = acf.newNotice( props );
339
- },
340
-
341
- removeNotice: function( timeout ){
342
- if( this.notice ) {
343
- this.notice.away( timeout || 0 );
344
- this.notice = false;
345
- }
346
- },
347
-
348
- showError: function( message ){
349
-
350
- // add class
351
- this.$el.addClass('acf-error');
352
-
353
- // add message
354
- if( message !== undefined ) {
355
- this.showNotice({
356
- text: message,
357
- type: 'error',
358
- dismiss: false
359
- });
360
- }
361
-
362
- // action
363
- acf.doAction('invalid_field', this);
364
-
365
- // add event
366
- this.$el.one('focus change', 'input, select, textarea', $.proxy( this.removeError, this ));
367
- },
368
-
369
- removeError: function(){
370
-
371
- // remove class
372
- this.$el.removeClass('acf-error');
373
-
374
- // remove notice
375
- this.removeNotice( 250 );
376
-
377
- // action
378
- acf.doAction('valid_field', this);
379
- },
380
-
381
- trigger: function( name, args, bubbles ){
382
-
383
- // allow some events to bubble
384
- if( name == 'invalidField' ) {
385
- bubbles = true;
386
- }
387
-
388
- // return
389
- return acf.Model.prototype.trigger.apply(this, [name, args, bubbles]);
390
- },
391
- });
392
-
393
- /**
394
- * newField
395
- *
396
- * description
397
- *
398
- * @date 14/12/17
399
- * @since 5.6.5
400
- *
401
- * @param type $var Description. Default.
402
- * @return type Description.
403
- */
404
-
405
- acf.newField = function( $field ){
406
-
407
- // vars
408
- var type = $field.data('type');
409
- var mid = modelId( type );
410
- var model = acf.models[ mid ] || acf.Field;
411
-
412
- // instantiate
413
- var field = new model( $field );
414
-
415
- // actions
416
- acf.doAction('new_field', field);
417
-
418
- // return
419
- return field;
420
- };
421
-
422
- /**
423
- * mid
424
- *
425
- * Calculates the model ID for a field type
426
- *
427
- * @date 15/12/17
428
- * @since 5.6.5
429
- *
430
- * @param string type
431
- * @return string
432
- */
433
-
434
- var modelId = function( type ) {
435
- return acf.strPascalCase( type || '' ) + 'Field';
436
- };
437
-
438
- /**
439
- * registerFieldType
440
- *
441
- * description
442
- *
443
- * @date 14/12/17
444
- * @since 5.6.5
445
- *
446
- * @param type $var Description. Default.
447
- * @return type Description.
448
- */
449
-
450
- acf.registerFieldType = function( model ){
451
-
452
- // vars
453
- var proto = model.prototype;
454
- var type = proto.type;
455
- var mid = modelId( type );
456
-
457
- // store model
458
- acf.models[ mid ] = model;
459
-
460
- // store reference
461
- storage.push( type );
462
- };
463
-
464
- /**
465
- * acf.getFieldType
466
- *
467
- * description
468
- *
469
- * @date 1/2/18
470
- * @since 5.6.5
471
- *
472
- * @param type $var Description. Default.
473
- * @return type Description.
474
- */
475
-
476
- acf.getFieldType = function( type ){
477
- var mid = modelId( type );
478
- return acf.models[ mid ] || false;
479
- }
480
-
481
- /**
482
- * acf.getFieldTypes
483
- *
484
- * description
485
- *
486
- * @date 1/2/18
487
- * @since 5.6.5
488
- *
489
- * @param type $var Description. Default.
490
- * @return type Description.
491
- */
492
-
493
- acf.getFieldTypes = function( args ){
494
-
495
- // defaults
496
- args = acf.parseArgs(args, {
497
- category: '',
498
- // hasValue: true
499
- });
500
-
501
- // clonse available types
502
- var types = [];
503
-
504
- // loop
505
- storage.map(function( type ){
506
-
507
- // vars
508
- var model = acf.getFieldType(type);
509
- var proto = model.prototype;
510
-
511
- // check operator
512
- if( args.category && proto.category !== args.category ) {
513
- return;
514
- }
515
-
516
- // append
517
- types.push( model );
518
- });
519
-
520
- // return
521
- return types;
522
- };
523
-
524
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-fields.js DELETED
@@ -1,372 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * findFields
5
- *
6
- * Returns a jQuery selection object of acf fields.
7
- *
8
- * @date 14/12/17
9
- * @since 5.6.5
10
- *
11
- * @param object $args {
12
- * Optional. Arguments to find fields.
13
- *
14
- * @type string key The field's key (data-attribute).
15
- * @type string name The field's name (data-attribute).
16
- * @type string type The field's type (data-attribute).
17
- * @type string is jQuery selector to compare against.
18
- * @type jQuery parent jQuery element to search within.
19
- * @type jQuery sibling jQuery element to search alongside.
20
- * @type limit int The number of fields to find.
21
- * @type suppressFilters bool Whether to allow filters to add/remove results. Default behaviour will ignore clone fields.
22
- * }
23
- * @return jQuery
24
- */
25
-
26
- acf.findFields = function( args ){
27
-
28
- // vars
29
- var selector = '.acf-field';
30
- var $fields = false;
31
-
32
- // args
33
- args = acf.parseArgs(args, {
34
- key: '',
35
- name: '',
36
- type: '',
37
- is: '',
38
- parent: false,
39
- sibling: false,
40
- limit: false,
41
- visible: false,
42
- suppressFilters: false,
43
- });
44
-
45
- // filter args
46
- if( !args.suppressFilters ) {
47
- args = acf.applyFilters('find_fields_args', args);
48
- }
49
-
50
- // key
51
- if( args.key ) {
52
- selector += '[data-key="' + args.key + '"]';
53
- }
54
-
55
- // type
56
- if( args.type ) {
57
- selector += '[data-type="' + args.type + '"]';
58
- }
59
-
60
- // name
61
- if( args.name ) {
62
- selector += '[data-name="' + args.name + '"]';
63
- }
64
-
65
- // is
66
- if( args.is ) {
67
- selector += args.is;
68
- }
69
-
70
- // visibility
71
- if( args.visible ) {
72
- selector += ':visible';
73
- }
74
-
75
- // query
76
- if( args.parent ) {
77
- $fields = args.parent.find( selector );
78
- } else if( args.sibling ) {
79
- $fields = args.sibling.siblings( selector );
80
- } else {
81
- $fields = $( selector );
82
- }
83
-
84
- // filter
85
- if( !args.suppressFilters ) {
86
- $fields = $fields.not('.acf-clone .acf-field');
87
- $fields = acf.applyFilters('find_fields', $fields);
88
- }
89
-
90
- // limit
91
- if( args.limit ) {
92
- $fields = $fields.slice( 0, args.limit );
93
- }
94
-
95
- // return
96
- return $fields;
97
-
98
- };
99
-
100
- /**
101
- * findField
102
- *
103
- * Finds a specific field with jQuery
104
- *
105
- * @date 14/12/17
106
- * @since 5.6.5
107
- *
108
- * @param string key The field's key.
109
- * @param jQuery $parent jQuery element to search within.
110
- * @return jQuery
111
- */
112
-
113
- acf.findField = function( key, $parent ){
114
- return acf.findFields({
115
- key: key,
116
- limit: 1,
117
- parent: $parent,
118
- suppressFilters: true
119
- });
120
- };
121
-
122
- /**
123
- * getField
124
- *
125
- * Returns a field instance
126
- *
127
- * @date 14/12/17
128
- * @since 5.6.5
129
- *
130
- * @param jQuery|string $field jQuery element or field key.
131
- * @return object
132
- */
133
-
134
- acf.getField = function( $field ){
135
-
136
- // allow jQuery
137
- if( $field instanceof jQuery ) {
138
-
139
- // find fields
140
- } else {
141
- $field = acf.findField( $field );
142
- }
143
-
144
- // instantiate
145
- var field = $field.data('acf');
146
- if( !field ) {
147
- field = acf.newField( $field );
148
- }
149
-
150
- // return
151
- return field;
152
- };
153
-
154
- /**
155
- * getFields
156
- *
157
- * Returns multiple field instances
158
- *
159
- * @date 14/12/17
160
- * @since 5.6.5
161
- *
162
- * @param jQuery|object $fields jQuery elements or query args.
163
- * @return array
164
- */
165
-
166
- acf.getFields = function( $fields ){
167
-
168
- // allow jQuery
169
- if( $fields instanceof jQuery ) {
170
-
171
- // find fields
172
- } else {
173
- $fields = acf.findFields( $fields );
174
- }
175
-
176
- // loop
177
- var fields = [];
178
- $fields.each(function(){
179
- var field = acf.getField( $(this) );
180
- fields.push( field );
181
- });
182
-
183
- // return
184
- return fields;
185
- };
186
-
187
- /**
188
- * findClosestField
189
- *
190
- * Returns the closest jQuery field element
191
- *
192
- * @date 9/4/18
193
- * @since 5.6.9
194
- *
195
- * @param jQuery $el
196
- * @return jQuery
197
- */
198
-
199
- acf.findClosestField = function( $el ){
200
- return $el.closest('.acf-field');
201
- };
202
-
203
- /**
204
- * getClosestField
205
- *
206
- * Returns the closest field instance
207
- *
208
- * @date 22/1/18
209
- * @since 5.6.5
210
- *
211
- * @param jQuery $el
212
- * @return object
213
- */
214
-
215
- acf.getClosestField = function( $el ){
216
- var $field = acf.findClosestField( $el );
217
- return this.getField( $field );
218
- };
219
-
220
- /**
221
- * addGlobalFieldAction
222
- *
223
- * Sets up callback logic for global field actions
224
- *
225
- * @date 15/6/18
226
- * @since 5.6.9
227
- *
228
- * @param string action
229
- * @return void
230
- */
231
-
232
- var addGlobalFieldAction = function( action ){
233
-
234
- // vars
235
- var globalAction = action;
236
- var pluralAction = action + '_fields'; // ready_fields
237
- var singleAction = action + '_field'; // ready_field
238
-
239
- // global action
240
- var globalCallback = function( $el /*, arg1, arg2, etc*/ ){
241
- //console.log( action, arguments );
242
-
243
- // get args [$el, ...]
244
- var args = acf.arrayArgs( arguments );
245
- var extraArgs = args.slice(1);
246
-
247
- // find fields
248
- var fields = acf.getFields({ parent: $el });
249
-
250
- // check
251
- if( fields.length ) {
252
-
253
- // pluralAction
254
- var pluralArgs = [ pluralAction, fields ].concat( extraArgs );
255
- acf.doAction.apply(null, pluralArgs);
256
- }
257
- };
258
-
259
- // plural action
260
- var pluralCallback = function( fields /*, arg1, arg2, etc*/ ){
261
- //console.log( pluralAction, arguments );
262
-
263
- // get args [fields, ...]
264
- var args = acf.arrayArgs( arguments );
265
- var extraArgs = args.slice(1);
266
-
267
- // loop
268
- fields.map(function( field, i ){
269
- //setTimeout(function(){
270
- // singleAction
271
- var singleArgs = [ singleAction, field ].concat( extraArgs );
272
- acf.doAction.apply(null, singleArgs);
273
- //}, i * 100);
274
- });
275
- };
276
-
277
- // add actions
278
- acf.addAction(globalAction, globalCallback);
279
- acf.addAction(pluralAction, pluralCallback);
280
-
281
- // also add single action
282
- addSingleFieldAction( action );
283
- }
284
-
285
- /**
286
- * addSingleFieldAction
287
- *
288
- * Sets up callback logic for single field actions
289
- *
290
- * @date 15/6/18
291
- * @since 5.6.9
292
- *
293
- * @param string action
294
- * @return void
295
- */
296
-
297
- var addSingleFieldAction = function( action ){
298
-
299
- // vars
300
- var singleAction = action + '_field'; // ready_field
301
- var singleEvent = action + 'Field'; // readyField
302
-
303
- // single action
304
- var singleCallback = function( field /*, arg1, arg2, etc*/ ){
305
- //console.log( singleAction, arguments );
306
-
307
- // get args [field, ...]
308
- var args = acf.arrayArgs( arguments );
309
- var extraArgs = args.slice(1);
310
-
311
- // action variations (ready_field/type=image)
312
- var variations = ['type', 'name', 'key'];
313
- variations.map(function( variation ){
314
-
315
- // vars
316
- var prefix = '/' + variation + '=' + field.get(variation);
317
-
318
- // singleAction
319
- args = [ singleAction + prefix , field ].concat( extraArgs );
320
- acf.doAction.apply(null, args);
321
- });
322
-
323
- // event
324
- if( singleFieldEvents.indexOf(action) > -1 ) {
325
- field.trigger(singleEvent, extraArgs);
326
- }
327
- };
328
-
329
- // add actions
330
- acf.addAction(singleAction, singleCallback);
331
- }
332
-
333
- // vars
334
- var globalFieldActions = [ 'prepare', 'ready', 'load', 'append', 'remove', 'sortstart', 'sortstop', 'show', 'hide', 'unload' ];
335
- var singleFieldActions = [ 'valid', 'invalid', 'enable', 'disable', 'new' ];
336
- var singleFieldEvents = [ 'remove', 'sortstart', 'sortstop', 'show', 'hide', 'unload', 'valid', 'invalid', 'enable', 'disable' ];
337
-
338
- // add
339
- globalFieldActions.map( addGlobalFieldAction );
340
- singleFieldActions.map( addSingleFieldAction );
341
-
342
- /**
343
- * fieldsEventManager
344
- *
345
- * Manages field actions and events
346
- *
347
- * @date 15/12/17
348
- * @since 5.6.5
349
- *
350
- * @param void
351
- * @param void
352
- */
353
-
354
- var fieldsEventManager = new acf.Model({
355
- id: 'fieldsEventManager',
356
- events: {
357
- 'click .acf-field a[href="#"]': 'onClick',
358
- 'change .acf-field': 'onChange'
359
- },
360
- onClick: function( e ){
361
-
362
- // prevent default of any link with an href of #
363
- e.preventDefault();
364
- },
365
- onChange: function(){
366
-
367
- // preview hack allows post to save with no title or content
368
- $('#_acf_changed').val(1);
369
- }
370
- });
371
-
372
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-helpers.js DELETED
@@ -1,333 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * refreshHelper
5
- *
6
- * description
7
- *
8
- * @date 1/7/18
9
- * @since 5.6.9
10
- *
11
- * @param type $var Description. Default.
12
- * @return type Description.
13
- */
14
-
15
- var refreshHelper = new acf.Model({
16
- priority: 90,
17
- timeout: 0,
18
- actions: {
19
- 'new_field': 'refresh',
20
- 'show_field': 'refresh',
21
- 'hide_field': 'refresh',
22
- 'remove_field': 'refresh'
23
- },
24
- refresh: function(){
25
- clearTimeout( this.timeout );
26
- this.timeout = setTimeout(function(){
27
- acf.doAction('refresh');
28
- }, 0);
29
- }
30
- });
31
-
32
-
33
- /**
34
- * sortableHelper
35
- *
36
- * Adds compatibility for sorting a <tr> element
37
- *
38
- * @date 6/3/18
39
- * @since 5.6.9
40
- *
41
- * @param void
42
- * @return void
43
- */
44
-
45
- var sortableHelper = new acf.Model({
46
- actions: {
47
- 'sortstart': 'onSortstart'
48
- },
49
- onSortstart: function( $item, $placeholder ){
50
-
51
- // if $item is a tr, apply some css to the elements
52
- if( $item.is('tr') ) {
53
-
54
- // temp set as relative to find widths
55
- $item.css('position', 'relative');
56
-
57
- // set widths for td children
58
- $item.children().each(function(){
59
- $(this).width($(this).width());
60
- });
61
-
62
- // revert position css
63
- $item.css('position', 'absolute');
64
-
65
- // add markup to the placeholder
66
- $placeholder.html('<td style="height:' + $item.height() + 'px; padding:0;" colspan="' + $item.children('td').length + '"></td>');
67
- }
68
- }
69
- });
70
-
71
- /**
72
- * duplicateHelper
73
- *
74
- * Fixes browser bugs when duplicating an element
75
- *
76
- * @date 6/3/18
77
- * @since 5.6.9
78
- *
79
- * @param void
80
- * @return void
81
- */
82
-
83
- var duplicateHelper = new acf.Model({
84
- actions: {
85
- 'after_duplicate': 'onAfterDuplicate'
86
- },
87
- onAfterDuplicate: function( $el, $el2 ){
88
-
89
- // get original values
90
- var vals = [];
91
- $el.find('select').each(function(i){
92
- vals.push( $(this).val() );
93
- });
94
-
95
- // set duplicate values
96
- $el2.find('select').each(function(i){
97
- $(this).val( vals[i] );
98
- });
99
- }
100
- });
101
-
102
- /**
103
- * tableHelper
104
- *
105
- * description
106
- *
107
- * @date 6/3/18
108
- * @since 5.6.9
109
- *
110
- * @param type $var Description. Default.
111
- * @return type Description.
112
- */
113
-
114
- var tableHelper = new acf.Model({
115
-
116
- id: 'tableHelper',
117
-
118
- priority: 20,
119
-
120
- actions: {
121
- 'refresh': 'renderTables'
122
- },
123
-
124
- renderTables: function( $el ){
125
-
126
- // loop
127
- var self = this;
128
- $('.acf-table:visible').each(function(){
129
- self.renderTable( $(this) );
130
- });
131
- },
132
-
133
- renderTable: function( $table ){
134
-
135
- // vars
136
- var $ths = $table.find('> thead > tr:visible > th[data-key]');
137
- var $tds = $table.find('> tbody > tr:visible > td[data-key]');
138
-
139
- // bail early if no thead
140
- if( !$ths.length || !$tds.length ) {
141
- return false;
142
- }
143
-
144
-
145
- // visiblity
146
- $ths.each(function( i ){
147
-
148
- // vars
149
- var $th = $(this);
150
- var key = $th.data('key');
151
- var $cells = $tds.filter('[data-key="' + key + '"]');
152
- var $hidden = $cells.filter('.acf-hidden');
153
-
154
- // always remove empty and allow cells to be hidden
155
- $cells.removeClass('acf-empty');
156
-
157
- // hide $th if all cells are hidden
158
- if( $cells.length === $hidden.length ) {
159
- acf.hide( $th );
160
-
161
- // force all hidden cells to appear empty
162
- } else {
163
- acf.show( $th );
164
- $hidden.addClass('acf-empty');
165
- }
166
- });
167
-
168
-
169
- // clear width
170
- $ths.css('width', 'auto');
171
-
172
- // get visible
173
- $ths = $ths.not('.acf-hidden');
174
-
175
- // vars
176
- var availableWidth = 100;
177
- var colspan = $ths.length;
178
-
179
- // set custom widths first
180
- var $fixedWidths = $ths.filter('[data-width]');
181
- $fixedWidths.each(function(){
182
- var width = $(this).data('width');
183
- $(this).css('width', width + '%');
184
- availableWidth -= width;
185
- });
186
-
187
- // set auto widths
188
- var $auoWidths = $ths.not('[data-width]');
189
- if( $auoWidths.length ) {
190
- var width = availableWidth / $auoWidths.length;
191
- $auoWidths.css('width', width + '%');
192
- availableWidth = 0;
193
- }
194
-
195
- // avoid stretching issue
196
- if( availableWidth > 0 ) {
197
- $ths.last().css('width', 'auto');
198
- }
199
-
200
-
201
- // update colspan on collapsed
202
- $tds.filter('.-collapsed-target').each(function(){
203
-
204
- // vars
205
- var $td = $(this);
206
-
207
- // check if collapsed
208
- if( $td.parent().hasClass('-collapsed') ) {
209
- $td.attr('colspan', $ths.length);
210
- } else {
211
- $td.removeAttr('colspan');
212
- }
213
- });
214
- }
215
- });
216
-
217
-
218
- /**
219
- * fieldsHelper
220
- *
221
- * description
222
- *
223
- * @date 6/3/18
224
- * @since 5.6.9
225
- *
226
- * @param type $var Description. Default.
227
- * @return type Description.
228
- */
229
-
230
- var fieldsHelper = new acf.Model({
231
-
232
- id: 'fieldsHelper',
233
-
234
- priority: 30,
235
-
236
- actions: {
237
- 'refresh': 'renderGroups'
238
- },
239
-
240
- renderGroups: function(){
241
-
242
- // loop
243
- var self = this;
244
- $('.acf-fields:visible').each(function(){
245
- self.renderGroup( $(this) );
246
- });
247
- },
248
-
249
- renderGroup: function( $el ){
250
-
251
- // vars
252
- var top = 0;
253
- var height = 0;
254
- var $row = $();
255
-
256
- // get fields
257
- var $fields = $el.children('.acf-field[data-width]:visible');
258
-
259
- // bail early if no fields
260
- if( !$fields.length ) {
261
- return false;
262
- }
263
-
264
- // bail ealry if is .-left
265
- if( $el.hasClass('-left') ) {
266
- $fields.removeAttr('data-width');
267
- $fields.css('width', 'auto');
268
- return false;
269
- }
270
-
271
- // reset fields
272
- $fields.removeClass('-r0 -c0').css({'min-height': 0});
273
-
274
- // loop
275
- $fields.each(function( i ){
276
-
277
- // vars
278
- var $field = $(this);
279
- var position = $field.position();
280
- var thisTop = Math.ceil( position.top );
281
- var thisLeft = Math.ceil( position.left );
282
-
283
- // detect change in row
284
- if( $row.length && thisTop > top ) {
285
-
286
- // set previous heights
287
- $row.css({'min-height': height+'px'});
288
-
289
- // update position due to change in row above
290
- position = $field.position();
291
- thisTop = Math.ceil( position.top );
292
- thisLeft = Math.ceil( position.left );
293
-
294
- // reset vars
295
- top = 0;
296
- height = 0;
297
- $row = $();
298
- }
299
-
300
- // rtl
301
- if( acf.get('rtl') ) {
302
- thisLeft = Math.ceil( $field.parent().width() - (position.left + $field.outerWidth()) );
303
- }
304
-
305
- // add classes
306
- if( thisTop == 0 ) {
307
- $field.addClass('-r0');
308
- } else if( thisLeft == 0 ) {
309
- $field.addClass('-c0');
310
- }
311
-
312
- // get height after class change
313
- // - add 1 for subpixel rendering
314
- var thisHeight = Math.ceil( $field.outerHeight() ) + 1;
315
-
316
- // set height
317
- height = Math.max( height, thisHeight );
318
-
319
- // set y
320
- top = Math.max( top, thisTop );
321
-
322
- // append
323
- $row = $row.add( $field );
324
- });
325
-
326
- // clean up
327
- if( $row.length ) {
328
- $row.css({'min-height': height+'px'});
329
- }
330
- }
331
- });
332
-
333
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-hooks.js DELETED
@@ -1,252 +0,0 @@
1
- ( function( window, undefined ) {
2
- "use strict";
3
-
4
- /**
5
- * Handles managing all events for whatever you plug it into. Priorities for hooks are based on lowest to highest in
6
- * that, lowest priority hooks are fired first.
7
- */
8
- var EventManager = function() {
9
- /**
10
- * Maintain a reference to the object scope so our public methods never get confusing.
11
- */
12
- var MethodsAvailable = {
13
- removeFilter : removeFilter,
14
- applyFilters : applyFilters,
15
- addFilter : addFilter,
16
- removeAction : removeAction,
17
- doAction : doAction,
18
- addAction : addAction,
19
- storage : getStorage
20
- };
21
-
22
- /**
23
- * Contains the hooks that get registered with this EventManager. The array for storage utilizes a "flat"
24
- * object literal such that looking up the hook utilizes the native object literal hash.
25
- */
26
- var STORAGE = {
27
- actions : {},
28
- filters : {}
29
- };
30
-
31
- function getStorage() {
32
-
33
- return STORAGE;
34
-
35
- };
36
-
37
- /**
38
- * Adds an action to the event manager.
39
- *
40
- * @param action Must contain namespace.identifier
41
- * @param callback Must be a valid callback function before this action is added
42
- * @param [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook
43
- * @param [context] Supply a value to be used for this
44
- */
45
- function addAction( action, callback, priority, context ) {
46
- if( typeof action === 'string' && typeof callback === 'function' ) {
47
- priority = parseInt( ( priority || 10 ), 10 );
48
- _addHook( 'actions', action, callback, priority, context );
49
- }
50
-
51
- return MethodsAvailable;
52
- }
53
-
54
- /**
55
- * Performs an action if it exists. You can pass as many arguments as you want to this function; the only rule is
56
- * that the first argument must always be the action.
57
- */
58
- function doAction( /* action, arg1, arg2, ... */ ) {
59
- var args = Array.prototype.slice.call( arguments );
60
- var action = args.shift();
61
-
62
- if( typeof action === 'string' ) {
63
- _runHook( 'actions', action, args );
64
- }
65
-
66
- return MethodsAvailable;
67
- }
68
-
69
- /**
70
- * Removes the specified action if it contains a namespace.identifier & exists.
71
- *
72
- * @param action The action to remove
73
- * @param [callback] Callback function to remove
74
- */
75
- function removeAction( action, callback ) {
76
- if( typeof action === 'string' ) {
77
- _removeHook( 'actions', action, callback );
78
- }
79
-
80
- return MethodsAvailable;
81
- }
82
-
83
- /**
84
- * Adds a filter to the event manager.
85
- *
86
- * @param filter Must contain namespace.identifier
87
- * @param callback Must be a valid callback function before this action is added
88
- * @param [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook
89
- * @param [context] Supply a value to be used for this
90
- */
91
- function addFilter( filter, callback, priority, context ) {
92
- if( typeof filter === 'string' && typeof callback === 'function' ) {
93
- priority = parseInt( ( priority || 10 ), 10 );
94
- _addHook( 'filters', filter, callback, priority, context );
95
- }
96
-
97
- return MethodsAvailable;
98
- }
99
-
100
- /**
101
- * Performs a filter if it exists. You should only ever pass 1 argument to be filtered. The only rule is that
102
- * the first argument must always be the filter.
103
- */
104
- function applyFilters( /* filter, filtered arg, arg2, ... */ ) {
105
- var args = Array.prototype.slice.call( arguments );
106
- var filter = args.shift();
107
-
108
- if( typeof filter === 'string' ) {
109
- return _runHook( 'filters', filter, args );
110
- }
111
-
112
- return MethodsAvailable;
113
- }
114
-
115
- /**
116
- * Removes the specified filter if it contains a namespace.identifier & exists.
117
- *
118
- * @param filter The action to remove
119
- * @param [callback] Callback function to remove
120
- */
121
- function removeFilter( filter, callback ) {
122
- if( typeof filter === 'string') {
123
- _removeHook( 'filters', filter, callback );
124
- }
125
-
126
- return MethodsAvailable;
127
- }
128
-
129
- /**
130
- * Removes the specified hook by resetting the value of it.
131
- *
132
- * @param type Type of hook, either 'actions' or 'filters'
133
- * @param hook The hook (namespace.identifier) to remove
134
- * @private
135
- */
136
- function _removeHook( type, hook, callback, context ) {
137
- if ( !STORAGE[ type ][ hook ] ) {
138
- return;
139
- }
140
- if ( !callback ) {
141
- STORAGE[ type ][ hook ] = [];
142
- } else {
143
- var handlers = STORAGE[ type ][ hook ];
144
- var i;
145
- if ( !context ) {
146
- for ( i = handlers.length; i--; ) {
147
- if ( handlers[i].callback === callback ) {
148
- handlers.splice( i, 1 );
149
- }
150
- }
151
- }
152
- else {
153
- for ( i = handlers.length; i--; ) {
154
- var handler = handlers[i];
155
- if ( handler.callback === callback && handler.context === context) {
156
- handlers.splice( i, 1 );
157
- }
158
- }
159
- }
160
- }
161
- }
162
-
163
- /**
164
- * Adds the hook to the appropriate storage container
165
- *
166
- * @param type 'actions' or 'filters'
167
- * @param hook The hook (namespace.identifier) to add to our event manager
168
- * @param callback The function that will be called when the hook is executed.
169
- * @param priority The priority of this hook. Must be an integer.
170
- * @param [context] A value to be used for this
171
- * @private
172
- */
173
- function _addHook( type, hook, callback, priority, context ) {
174
- var hookObject = {
175
- callback : callback,
176
- priority : priority,
177
- context : context
178
- };
179
-
180
- // Utilize 'prop itself' : http://jsperf.com/hasownproperty-vs-in-vs-undefined/19
181
- var hooks = STORAGE[ type ][ hook ];
182
- if( hooks ) {
183
- hooks.push( hookObject );
184
- hooks = _hookInsertSort( hooks );
185
- }
186
- else {
187
- hooks = [ hookObject ];
188
- }
189
-
190
- STORAGE[ type ][ hook ] = hooks;
191
- }
192
-
193
- /**
194
- * Use an insert sort for keeping our hooks organized based on priority. This function is ridiculously faster
195
- * than bubble sort, etc: http://jsperf.com/javascript-sort
196
- *
197
- * @param hooks The custom array containing all of the appropriate hooks to perform an insert sort on.
198
- * @private
199
- */
200
- function _hookInsertSort( hooks ) {
201
- var tmpHook, j, prevHook;
202
- for( var i = 1, len = hooks.length; i < len; i++ ) {
203
- tmpHook = hooks[ i ];
204
- j = i;
205
- while( ( prevHook = hooks[ j - 1 ] ) && prevHook.priority > tmpHook.priority ) {
206
- hooks[ j ] = hooks[ j - 1 ];
207
- --j;
208
- }
209
- hooks[ j ] = tmpHook;
210
- }
211
-
212
- return hooks;
213
- }
214
-
215
- /**
216
- * Runs the specified hook. If it is an action, the value is not modified but if it is a filter, it is.
217
- *
218
- * @param type 'actions' or 'filters'
219
- * @param hook The hook ( namespace.identifier ) to be ran.
220
- * @param args Arguments to pass to the action/filter. If it's a filter, args is actually a single parameter.
221
- * @private
222
- */
223
- function _runHook( type, hook, args ) {
224
- var handlers = STORAGE[ type ][ hook ];
225
-
226
- if ( !handlers ) {
227
- return (type === 'filters') ? args[0] : false;
228
- }
229
-
230
- var i = 0, len = handlers.length;
231
- if ( type === 'filters' ) {
232
- for ( ; i < len; i++ ) {
233
- args[ 0 ] = handlers[ i ].callback.apply( handlers[ i ].context, args );
234
- }
235
- } else {
236
- for ( ; i < len; i++ ) {
237
- handlers[ i ].callback.apply( handlers[ i ].context, args );
238
- }
239
- }
240
-
241
- return ( type === 'filters' ) ? args[ 0 ] : true;
242
- }
243
-
244
- // return all of the publicly available methods
245
- return MethodsAvailable;
246
-
247
- };
248
-
249
- // instantiate
250
- acf.hooks = new EventManager();
251
-
252
- } )( window );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-media.js DELETED
@@ -1,794 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * acf.newMediaPopup
5
- *
6
- * description
7
- *
8
- * @date 10/1/18
9
- * @since 5.6.5
10
- *
11
- * @param type $var Description. Default.
12
- * @return type Description.
13
- */
14
-
15
- acf.newMediaPopup = function( args ){
16
-
17
- // args
18
- var popup = null;
19
- var args = acf.parseArgs(args, {
20
- mode: 'select', // 'select', 'edit'
21
- title: '', // 'Upload Image'
22
- button: '', // 'Select Image'
23
- type: '', // 'image', ''
24
- field: false, // field instance
25
- allowedTypes: '', // '.jpg, .png, etc'
26
- library: 'all', // 'all', 'uploadedTo'
27
- multiple: false, // false, true, 'add'
28
- attachment: 0, // the attachment to edit
29
- autoOpen: true, // open the popup automatically
30
- open: function(){}, // callback after close
31
- select: function(){}, // callback after select
32
- close: function(){} // callback after close
33
- });
34
-
35
- // initialize
36
- if( args.mode == 'edit' ) {
37
- popup = new acf.models.EditMediaPopup( args );
38
- } else {
39
- popup = new acf.models.SelectMediaPopup( args );
40
- }
41
-
42
- // open popup (allow frame customization before opening)
43
- if( args.autoOpen ) {
44
- setTimeout(function(){
45
- popup.open();
46
- }, 1);
47
- }
48
-
49
- // action
50
- acf.doAction('new_media_popup', popup);
51
-
52
- // return
53
- return popup;
54
- };
55
-
56
-
57
- /**
58
- * getPostID
59
- *
60
- * description
61
- *
62
- * @date 10/1/18
63
- * @since 5.6.5
64
- *
65
- * @param type $var Description. Default.
66
- * @return type Description.
67
- */
68
-
69
- var getPostID = function() {
70
- var postID = acf.get('post_id');
71
- return $.isNumeric(postID) ? postID : 0;
72
- }
73
-
74
-
75
- /**
76
- * acf.getMimeTypes
77
- *
78
- * description
79
- *
80
- * @date 11/1/18
81
- * @since 5.6.5
82
- *
83
- * @param type $var Description. Default.
84
- * @return type Description.
85
- */
86
-
87
- acf.getMimeTypes = function(){
88
- return this.get('mimeTypes');
89
- };
90
-
91
- acf.getMimeType = function( name ){
92
-
93
- // vars
94
- var allTypes = acf.getMimeTypes();
95
-
96
- // search
97
- if( allTypes[name] !== undefined ) {
98
- return allTypes[name];
99
- }
100
-
101
- // some types contain a mixed key such as "jpg|jpeg|jpe"
102
- for( var key in allTypes ) {
103
- if( key.indexOf(name) !== -1 ) {
104
- return allTypes[key];
105
- }
106
- }
107
-
108
- // return
109
- return false;
110
- };
111
-
112
-
113
- /**
114
- * MediaPopup
115
- *
116
- * description
117
- *
118
- * @date 10/1/18
119
- * @since 5.6.5
120
- *
121
- * @param type $var Description. Default.
122
- * @return type Description.
123
- */
124
-
125
- var MediaPopup = acf.Model.extend({
126
-
127
- id: 'MediaPopup',
128
- data: {},
129
- defaults: {},
130
- frame: false,
131
-
132
- setup: function( props ){
133
- $.extend(this.data, props);
134
- },
135
-
136
- initialize: function(){
137
-
138
- // vars
139
- var options = this.getFrameOptions();
140
-
141
- // add states
142
- this.addFrameStates( options );
143
-
144
- // create frame
145
- var frame = wp.media( options );
146
-
147
- // add args reference
148
- frame.acf = this;
149
-
150
- // add events
151
- this.addFrameEvents( frame, options );
152
-
153
- // strore frame
154
- this.frame = frame;
155
- },
156
-
157
- open: function(){
158
- this.frame.open();
159
- },
160
-
161
- close: function(){
162
- this.frame.close();
163
- },
164
-
165
- remove: function(){
166
- this.frame.detach();
167
- this.frame.remove();
168
- },
169
-
170
- getFrameOptions: function(){
171
-
172
- // vars
173
- var options = {
174
- title: this.get('title'),
175
- multiple: this.get('multiple'),
176
- library: {},
177
- states: []
178
- };
179
-
180
- // type
181
- if( this.get('type') ) {
182
- options.library.type = this.get('type');
183
- }
184
-
185
- // type
186
- if( this.get('library') === 'uploadedTo' ) {
187
- options.library.uploadedTo = getPostID();
188
- }
189
-
190
- // attachment
191
- if( this.get('attachment') ) {
192
- options.library.post__in = [ this.get('attachment') ];
193
- }
194
-
195
- // button
196
- if( this.get('button') ) {
197
- options.button = {
198
- text: this.get('button')
199
- };
200
- }
201
-
202
- // return
203
- return options;
204
- },
205
-
206
- addFrameStates: function( options ){
207
-
208
- // create query
209
- var Query = wp.media.query( options.library );
210
-
211
- // add _acfuploader
212
- // this is super wack!
213
- // if you add _acfuploader to the options.library args, new uploads will not be added to the library view.
214
- // this has been traced back to the wp.media.model.Query initialize function (which can't be overriden)
215
- // Adding any custom args will cause the Attahcments to not observe the uploader queue
216
- // To bypass this security issue, we add in the args AFTER the Query has been initialized
217
- // options.library._acfuploader = settings.field;
218
- if( this.get('field') && acf.isset(Query, 'mirroring', 'args') ) {
219
- Query.mirroring.args._acfuploader = this.get('field');
220
- }
221
-
222
- // add states
223
- options.states.push(
224
-
225
- // main state
226
- new wp.media.controller.Library({
227
- library: Query,
228
- multiple: this.get('multiple'),
229
- title: this.get('title'),
230
- priority: 20,
231
- filterable: 'all',
232
- editable: true,
233
- allowLocalEdits: true
234
- })
235
-
236
- );
237
-
238
- // edit image functionality (added in WP 3.9)
239
- if( acf.isset(wp, 'media', 'controller', 'EditImage') ) {
240
- options.states.push( new wp.media.controller.EditImage() );
241
- }
242
- },
243
-
244
- addFrameEvents: function( frame, options ){
245
-
246
- // log all events
247
- //frame.on('all', function( e ) {
248
- // console.log( 'frame all: %o', e );
249
- //});
250
-
251
- // add class
252
- frame.on('open',function() {
253
- this.$el.closest('.media-modal').addClass('acf-media-modal -' + this.acf.get('mode') );
254
- }, frame);
255
-
256
- // edit image view
257
- // source: media-views.js:2410 editImageContent()
258
- frame.on('content:render:edit-image', function(){
259
-
260
- var image = this.state().get('image');
261
- var view = new wp.media.view.EditImage({ model: image, controller: this }).render();
262
- this.content.set( view );
263
-
264
- // after creating the wrapper view, load the actual editor via an ajax call
265
- view.loadEditor();
266
-
267
- }, frame);
268
-
269
- // update toolbar button
270
- /*
271
- frame.on( 'toolbar:create:select', function( toolbar ) {
272
-
273
- toolbar.view = new wp.media.view.Toolbar.Select({
274
- text: frame.options._button,
275
- controller: this
276
- });
277
-
278
- }, frame );
279
- */
280
- // on select
281
- frame.on('select', function() {
282
-
283
- // vars
284
- var selection = frame.state().get('selection');
285
-
286
- // if selecting images
287
- if( selection ) {
288
-
289
- // loop
290
- selection.each(function( attachment, i ){
291
- frame.acf.get('select').apply( frame.acf, [attachment, i] );
292
- });
293
- }
294
- });
295
-
296
- // on close
297
- frame.on('close',function(){
298
-
299
- // callback and remove
300
- setTimeout(function(){
301
- frame.acf.get('close').apply( frame.acf );
302
- frame.acf.remove();
303
- }, 1);
304
- });
305
- }
306
- });
307
-
308
-
309
- /**
310
- * acf.models.SelectMediaPopup
311
- *
312
- * description
313
- *
314
- * @date 10/1/18
315
- * @since 5.6.5
316
- *
317
- * @param type $var Description. Default.
318
- * @return type Description.
319
- */
320
-
321
- acf.models.SelectMediaPopup = MediaPopup.extend({
322
- id: 'SelectMediaPopup',
323
- setup: function( props ){
324
-
325
- // default button
326
- if( !props.button ) {
327
- props.button = acf._x('Select', 'verb');
328
- }
329
-
330
- // parent
331
- MediaPopup.prototype.setup.apply(this, arguments);
332
- },
333
-
334
- addFrameEvents: function( frame, options ){
335
-
336
- // plupload
337
- // adds _acfuploader param to validate uploads
338
- if( acf.isset(_wpPluploadSettings, 'defaults', 'multipart_params') ) {
339
-
340
- // add _acfuploader so that Uploader will inherit
341
- _wpPluploadSettings.defaults.multipart_params._acfuploader = this.get('field');
342
-
343
- // remove acf_field so future Uploaders won't inherit
344
- frame.on('open', function(){
345
- delete _wpPluploadSettings.defaults.multipart_params._acfuploader;
346
- });
347
- }
348
-
349
- // browse
350
- frame.on('content:activate:browse', function(){
351
-
352
- // vars
353
- var toolbar = false;
354
-
355
- // populate above vars making sure to allow for failure
356
- // perhaps toolbar does not exist because the frame open is Upload Files
357
- try {
358
- toolbar = frame.content.get().toolbar;
359
- } catch(e) {
360
- console.log(e);
361
- return;
362
- }
363
-
364
- // callback
365
- frame.acf.customizeFilters.apply(frame.acf, [toolbar]);
366
- });
367
-
368
- // parent
369
- MediaPopup.prototype.addFrameEvents.apply(this, arguments);
370
-
371
- },
372
-
373
- customizeFilters: function( toolbar ){
374
-
375
- // vars
376
- var filters = toolbar.get('filters');
377
-
378
- // image
379
- if( this.get('type') == 'image' ) {
380
-
381
- // update all
382
- filters.filters.all.text = acf.__('All images');
383
-
384
- // remove some filters
385
- delete filters.filters.audio;
386
- delete filters.filters.video;
387
- delete filters.filters.image;
388
-
389
- // update all filters to show images
390
- $.each(filters.filters, function( i, filter ){
391
- filter.props.type = filter.props.type || 'image';
392
- });
393
- }
394
-
395
- // specific types
396
- if( this.get('allowedTypes') ) {
397
-
398
- // convert ".jpg, .png" into ["jpg", "png"]
399
- var allowedTypes = this.get('allowedTypes').split(' ').join('').split('.').join('').split(',');
400
-
401
- // loop
402
- allowedTypes.map(function( name ){
403
-
404
- // get type
405
- var mimeType = acf.getMimeType( name );
406
-
407
- // bail early if no type
408
- if( !mimeType ) return;
409
-
410
- // create new filter
411
- var newFilter = {
412
- text: mimeType,
413
- props: {
414
- status: null,
415
- type: mimeType,
416
- uploadedTo: null,
417
- orderby: 'date',
418
- order: 'DESC'
419
- },
420
- priority: 20
421
- };
422
-
423
- // append
424
- filters.filters[ mimeType ] = newFilter;
425
-
426
- });
427
- }
428
-
429
-
430
-
431
- // uploaded to post
432
- if( this.get('library') === 'uploadedTo' ) {
433
-
434
- // vars
435
- var uploadedTo = this.frame.options.library.uploadedTo;
436
-
437
- // remove some filters
438
- delete filters.filters.unattached;
439
- delete filters.filters.uploaded;
440
-
441
- // add uploadedTo to filters
442
- $.each(filters.filters, function( i, filter ){
443
- filter.text += ' (' + acf.__('Uploaded to this post') + ')';
444
- filter.props.uploadedTo = uploadedTo;
445
- });
446
- }
447
-
448
- // add _acfuploader to filters
449
- var field = this.get('field');
450
- $.each(filters.filters, function( k, filter ){
451
- filter.props._acfuploader = field;
452
- });
453
-
454
- // add _acfuplaoder to search
455
- var search = toolbar.get('search');
456
- search.model.attributes._acfuploader = field;
457
-
458
- // render (custom function added to prototype)
459
- if( filters.renderFilters ) {
460
- filters.renderFilters();
461
- }
462
- }
463
- });
464
-
465
-
466
- /**
467
- * acf.models.EditMediaPopup
468
- *
469
- * description
470
- *
471
- * @date 10/1/18
472
- * @since 5.6.5
473
- *
474
- * @param type $var Description. Default.
475
- * @return type Description.
476
- */
477
-
478
- acf.models.EditMediaPopup = MediaPopup.extend({
479
- id: 'SelectMediaPopup',
480
- setup: function( props ){
481
-
482
- // default button
483
- if( !props.button ) {
484
- props.button = acf._x('Update', 'verb');
485
- }
486
-
487
- // parent
488
- MediaPopup.prototype.setup.apply(this, arguments);
489
- },
490
-
491
- addFrameEvents: function( frame, options ){
492
-
493
- // add class
494
- frame.on('open',function() {
495
-
496
- // add class
497
- this.$el.closest('.media-modal').addClass('acf-expanded');
498
-
499
- // set to browse
500
- if( this.content.mode() != 'browse' ) {
501
- this.content.mode('browse');
502
- }
503
-
504
- // set selection
505
- var state = this.state();
506
- var selection = state.get('selection');
507
- var attachment = wp.media.attachment( frame.acf.get('attachment') );
508
- selection.add( attachment );
509
-
510
- }, frame);
511
-
512
- // parent
513
- MediaPopup.prototype.addFrameEvents.apply(this, arguments);
514
-
515
- }
516
- });
517
-
518
-
519
- /**
520
- * customizePrototypes
521
- *
522
- * description
523
- *
524
- * @date 11/1/18
525
- * @since 5.6.5
526
- *
527
- * @param type $var Description. Default.
528
- * @return type Description.
529
- */
530
-
531
- var customizePrototypes = new acf.Model({
532
- id: 'customizePrototypes',
533
- wait: 'ready',
534
-
535
- initialize: function(){
536
-
537
- // bail early if no media views
538
- if( !acf.isset(window, 'wp', 'media', 'view') ) {
539
- return;
540
- }
541
-
542
- // fix bug where CPT without "editor" does not set post.id setting which then prevents uploadedTo from working
543
- var postID = getPostID();
544
- if( postID && acf.isset(wp, 'media', 'view', 'settings', 'post') ) {
545
- wp.media.view.settings.post.id = postID;
546
- }
547
-
548
- // customize
549
- this.customizeAttachmentsRouter();
550
- this.customizeAttachmentFilters();
551
- this.customizeAttachmentCompat();
552
- this.customizeAttachmentLibrary();
553
- },
554
-
555
- customizeAttachmentsRouter: function(){
556
-
557
- // validate
558
- if( !acf.isset(wp, 'media', 'view', 'Router') ) {
559
- return;
560
- }
561
-
562
- // vars
563
- var Parent = wp.media.view.Router;
564
-
565
- // extend
566
- wp.media.view.Router = Parent.extend({
567
-
568
- addExpand: function(){
569
-
570
- // vars
571
- var $a = $([
572
- '<a href="#" class="acf-expand-details">',
573
- '<span class="is-closed"><span class="acf-icon -left small grey"></span>' + acf.__('Expand Details') + '</span>',
574
- '<span class="is-open"><span class="acf-icon -right small grey"></span>' + acf.__('Collapse Details') + '</span>',
575
- '</a>'
576
- ].join(''));
577
-
578
- // add events
579
- $a.on('click', function( e ){
580
- e.preventDefault();
581
- var $div = $(this).closest('.media-modal');
582
- if( $div.hasClass('acf-expanded') ) {
583
- $div.removeClass('acf-expanded');
584
- } else {
585
- $div.addClass('acf-expanded');
586
- }
587
- });
588
-
589
- // append
590
- this.$el.append( $a );
591
- },
592
-
593
- initialize: function(){
594
-
595
- // initialize
596
- Parent.prototype.initialize.apply( this, arguments );
597
-
598
- // add buttons
599
- this.addExpand();
600
-
601
- // return
602
- return this;
603
- }
604
- });
605
- },
606
-
607
- customizeAttachmentFilters: function(){
608
-
609
- // validate
610
- if( !acf.isset(wp, 'media', 'view', 'AttachmentFilters', 'All') ) {
611
- return;
612
- }
613
-
614
- // vars
615
- var Parent = wp.media.view.AttachmentFilters.All;
616
-
617
- // renderFilters
618
- // copied from media-views.js:6939
619
- Parent.prototype.renderFilters = function(){
620
-
621
- // Build `<option>` elements.
622
- this.$el.html( _.chain( this.filters ).map( function( filter, value ) {
623
- return {
624
- el: $( '<option></option>' ).val( value ).html( filter.text )[0],
625
- priority: filter.priority || 50
626
- };
627
- }, this ).sortBy('priority').pluck('el').value() );
628
-
629
- };
630
- },
631
-
632
- customizeAttachmentCompat: function(){
633
-
634
- // validate
635
- if( !acf.isset(wp, 'media', 'view', 'AttachmentCompat') ) {
636
- return;
637
- }
638
-
639
- // vars
640
- var AttachmentCompat = wp.media.view.AttachmentCompat;
641
- var timeout = false;
642
-
643
- // extend
644
- wp.media.view.AttachmentCompat = AttachmentCompat.extend({
645
-
646
- render: function() {
647
-
648
- // WP bug
649
- // When multiple media frames exist on the same page (WP content, WYSIWYG, image, file ),
650
- // WP creates multiple instances of this AttachmentCompat view.
651
- // Each instance will attempt to render when a new modal is created.
652
- // Use a property to avoid this and only render once per instance.
653
- if( this.rendered ) {
654
- return this;
655
- }
656
-
657
- // render HTML
658
- AttachmentCompat.prototype.render.apply( this, arguments );
659
-
660
- // when uploading, render is called twice.
661
- // ignore first render by checking for #acf-form-data element
662
- if( !this.$('#acf-form-data').length ) {
663
- return this;
664
- }
665
-
666
- // clear timeout
667
- clearTimeout( timeout );
668
-
669
- // setTimeout
670
- timeout = setTimeout($.proxy(function(){
671
- this.rendered = true;
672
- acf.doAction('append', this.$el);
673
- }, this), 50);
674
-
675
- // return
676
- return this;
677
- }
678
- });
679
-
680
- },
681
-
682
- customizeAttachmentLibrary: function(){
683
-
684
- // validate
685
- if( !acf.isset(wp, 'media', 'view', 'Attachment', 'Library') ) {
686
- return;
687
- }
688
-
689
- // vars
690
- var AttachmentLibrary = wp.media.view.Attachment.Library;
691
-
692
- // extend
693
- wp.media.view.Attachment.Library = AttachmentLibrary.extend({
694
-
695
- render: function() {
696
-
697
- // vars
698
- var popup = acf.isget(this, 'controller', 'acf');
699
- var attributes = acf.isget(this, 'model', 'attributes');
700
-
701
- // check vars exist to avoid errors
702
- if( popup && attributes ) {
703
-
704
- // show errors
705
- if( attributes.acf_errors ) {
706
- this.$el.addClass('acf-disabled');
707
- }
708
-
709
- // disable selected
710
- var selected = popup.get('selected');
711
- if( selected && selected.indexOf(attributes.id) > -1 ) {
712
- this.$el.addClass('acf-selected');
713
- }
714
- }
715
-
716
- // render
717
- return AttachmentLibrary.prototype.render.apply( this, arguments );
718
-
719
- },
720
-
721
-
722
- /*
723
- * toggleSelection
724
- *
725
- * This function is called before an attachment is selected
726
- * A good place to check for errors and prevent the 'select' function from being fired
727
- *
728
- * @type function
729
- * @date 29/09/2016
730
- * @since 5.4.0
731
- *
732
- * @param options (object)
733
- * @return n/a
734
- */
735
-
736
- toggleSelection: function( options ) {
737
-
738
- // vars
739
- // source: wp-includes/js/media-views.js:2880
740
- var collection = this.collection,
741
- selection = this.options.selection,
742
- model = this.model,
743
- single = selection.single();
744
-
745
-
746
- // vars
747
- var frame = this.controller;
748
- var errors = acf.isget(this, 'model', 'attributes', 'acf_errors');
749
- var $sidebar = frame.$el.find('.media-frame-content .media-sidebar');
750
-
751
- // remove previous error
752
- $sidebar.children('.acf-selection-error').remove();
753
-
754
- // show attachment details
755
- $sidebar.children().removeClass('acf-hidden');
756
-
757
- // add message
758
- if( frame && errors ) {
759
-
760
- // vars
761
- var filename = acf.isget(this, 'model', 'attributes', 'filename');
762
-
763
- // hide attachment details
764
- // Gallery field continues to show previously selected attachment...
765
- $sidebar.children().addClass('acf-hidden');
766
-
767
- // append message
768
- $sidebar.prepend([
769
- '<div class="acf-selection-error">',
770
- '<span class="selection-error-label">' + acf.__('Restricted') +'</span>',
771
- '<span class="selection-error-filename">' + filename + '</span>',
772
- '<span class="selection-error-message">' + errors + '</span>',
773
- '</div>'
774
- ].join(''));
775
-
776
- // reset selection (unselects all attachments)
777
- selection.reset();
778
-
779
- // set single (attachment displayed in sidebar)
780
- selection.single( model );
781
-
782
- // return and prevent 'select' form being fired
783
- return;
784
-
785
- }
786
-
787
- // return
788
- return AttachmentLibrary.prototype.toggleSelection.apply( this, arguments );
789
- }
790
- });
791
- }
792
- });
793
-
794
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-model.js DELETED
@@ -1,908 +0,0 @@
1
- (function($, undefined){
2
-
3
- // Cached regex to split keys for `addEvent`.
4
- var delegateEventSplitter = /^(\S+)\s*(.*)$/;
5
-
6
- /**
7
- * extend
8
- *
9
- * Helper function to correctly set up the prototype chain for subclasses
10
- * Heavily inspired by backbone.js
11
- *
12
- * @date 14/12/17
13
- * @since 5.6.5
14
- *
15
- * @param object protoProps New properties for this object.
16
- * @return function.
17
- */
18
-
19
- var extend = function( protoProps ) {
20
-
21
- // vars
22
- var Parent = this;
23
- var Child;
24
-
25
- // The constructor function for the new subclass is either defined by you
26
- // (the "constructor" property in your `extend` definition), or defaulted
27
- // by us to simply call the parent constructor.
28
- if( protoProps && protoProps.hasOwnProperty('constructor') ) {
29
- Child = protoProps.constructor;
30
- } else {
31
- Child = function(){ return Parent.apply(this, arguments); };
32
- }
33
-
34
- // Add static properties to the constructor function, if supplied.
35
- $.extend(Child, Parent);
36
-
37
- // Set the prototype chain to inherit from `parent`, without calling
38
- // `parent`'s constructor function and add the prototype properties.
39
- Child.prototype = Object.create(Parent.prototype);
40
- $.extend(Child.prototype, protoProps);
41
- Child.prototype.constructor = Child;
42
-
43
- // Set a convenience property in case the parent's prototype is needed later.
44
- //Child.prototype.__parent__ = Parent.prototype;
45
-
46
- // return
47
- return Child;
48
-
49
- };
50
-
51
-
52
- /**
53
- * Model
54
- *
55
- * Base class for all inheritence
56
- *
57
- * @date 14/12/17
58
- * @since 5.6.5
59
- *
60
- * @param object props
61
- * @return function.
62
- */
63
-
64
- var Model = acf.Model = function(){
65
-
66
- // generate uique client id
67
- this.cid = acf.uniqueId('acf');
68
-
69
- // set vars to avoid modifying prototype
70
- this.data = $.extend(true, {}, this.data);
71
-
72
- // pass props to setup function
73
- this.setup.apply(this, arguments);
74
-
75
- // store on element (allow this.setup to create this.$el)
76
- if( this.$el && !this.$el.data('acf') ) {
77
- this.$el.data('acf', this);
78
- }
79
-
80
- // initialize
81
- var initialize = function(){
82
- this.initialize();
83
- this.addEvents();
84
- this.addActions();
85
- this.addFilters();
86
- };
87
-
88
- // initialize on action
89
- if( this.wait && !acf.didAction(this.wait) ) {
90
- this.addAction(this.wait, initialize);
91
-
92
- // initialize now
93
- } else {
94
- initialize.apply(this);
95
- }
96
- };
97
-
98
- // Attach all inheritable methods to the Model prototype.
99
- $.extend(Model.prototype, {
100
-
101
- // Unique model id
102
- id: '',
103
-
104
- // Unique client id
105
- cid: '',
106
-
107
- // jQuery element
108
- $el: null,
109
-
110
- // Data specific to this instance
111
- data: {},
112
-
113
- // toggle used when changing data
114
- busy: false,
115
- changed: false,
116
-
117
- // Setup events hooks
118
- events: {},
119
- actions: {},
120
- filters: {},
121
-
122
- // class used to avoid nested event triggers
123
- eventScope: '',
124
-
125
- // action to wait until initialize
126
- wait: false,
127
-
128
- // action priority default
129
- priority: 10,
130
-
131
- /**
132
- * get
133
- *
134
- * Gets a specific data value
135
- *
136
- * @date 14/12/17
137
- * @since 5.6.5
138
- *
139
- * @param string name
140
- * @return mixed
141
- */
142
-
143
- get: function( name ) {
144
- return this.data[name];
145
- },
146
-
147
- /**
148
- * has
149
- *
150
- * Returns `true` if the data exists and is not null
151
- *
152
- * @date 14/12/17
153
- * @since 5.6.5
154
- *
155
- * @param string name
156
- * @return boolean
157
- */
158
-
159
- has: function( name ) {
160
- return this.get(name) != null;
161
- },
162
-
163
- /**
164
- * set
165
- *
166
- * Sets a specific data value
167
- *
168
- * @date 14/12/17
169
- * @since 5.6.5
170
- *
171
- * @param string name
172
- * @param mixed value
173
- * @return this
174
- */
175
-
176
- set: function( name, value, silent ) {
177
-
178
- // bail if unchanged
179
- var prevValue = this.get(name);
180
- if( prevValue == value ) {
181
- return this;
182
- }
183
-
184
- // set data
185
- this.data[ name ] = value;
186
-
187
- // trigger events
188
- if( !silent ) {
189
- this.changed = true;
190
- this.trigger('changed:' + name, [value]);
191
- this.trigger('changed', [name, value]);
192
- }
193
-
194
- // return
195
- return this;
196
- },
197
-
198
- /**
199
- * inherit
200
- *
201
- * Inherits the data from a jQuery element
202
- *
203
- * @date 14/12/17
204
- * @since 5.6.5
205
- *
206
- * @param jQuery $el
207
- * @return this
208
- */
209
-
210
- inherit: function( data ){
211
-
212
- // allow jQuery
213
- if( data instanceof jQuery ) {
214
- data = data.data();
215
- }
216
-
217
- // extend
218
- $.extend(this.data, data);
219
-
220
- // return
221
- return this;
222
- },
223
-
224
- /**
225
- * prop
226
- *
227
- * mimics the jQuery prop function
228
- *
229
- * @date 4/6/18
230
- * @since 5.6.9
231
- *
232
- * @param type $var Description. Default.
233
- * @return type Description.
234
- */
235
-
236
- prop: function(){
237
- return this.$el.prop.apply(this.$el, arguments);
238
- },
239
-
240
- /**
241
- * setup
242
- *
243
- * Run during constructor function
244
- *
245
- * @date 14/12/17
246
- * @since 5.6.5
247
- *
248
- * @param n/a
249
- * @return n/a
250
- */
251
-
252
- setup: function( props ){
253
- $.extend(this, props);
254
- },
255
-
256
- /**
257
- * initialize
258
- *
259
- * Also run during constructor function
260
- *
261
- * @date 14/12/17
262
- * @since 5.6.5
263
- *
264
- * @param n/a
265
- * @return n/a
266
- */
267
-
268
- initialize: function(){},
269
-
270
- /**
271
- * addElements
272
- *
273
- * Adds multiple jQuery elements to this object
274
- *
275
- * @date 9/5/18
276
- * @since 5.6.9
277
- *
278
- * @param type $var Description. Default.
279
- * @return type Description.
280
- */
281
-
282
- addElements: function( elements ){
283
- elements = elements || this.elements || null;
284
- if( !elements || !Object.keys(elements).length ) return false;
285
- for( var i in elements ) {
286
- this.addElement( i, elements[i] );
287
- }
288
- },
289
-
290
- /**
291
- * addElement
292
- *
293
- * description
294
- *
295
- * @date 9/5/18
296
- * @since 5.6.9
297
- *
298
- * @param type $var Description. Default.
299
- * @return type Description.
300
- */
301
-
302
- addElement: function( name, selector){
303
- this[ '$' + name ] = this.$( selector );
304
- },
305
-
306
- /**
307
- * addEvents
308
- *
309
- * Adds multiple event handlers
310
- *
311
- * @date 14/12/17
312
- * @since 5.6.5
313
- *
314
- * @param object events {event1 : callback, event2 : callback, etc }
315
- * @return n/a
316
- */
317
-
318
- addEvents: function( events ){
319
- events = events || this.events || null;
320
- if( !events ) return false;
321
- for( var key in events ) {
322
- var match = key.match(delegateEventSplitter);
323
- this.on(match[1], match[2], events[key]);
324
- }
325
- },
326
-
327
- /**
328
- * removeEvents
329
- *
330
- * Removes multiple event handlers
331
- *
332
- * @date 14/12/17
333
- * @since 5.6.5
334
- *
335
- * @param object events {event1 : callback, event2 : callback, etc }
336
- * @return n/a
337
- */
338
-
339
- removeEvents: function( events ){
340
- events = events || this.events || null;
341
- if( !events ) return false;
342
- for( var key in events ) {
343
- var match = key.match(delegateEventSplitter);
344
- this.off(match[1], match[2], events[key]);
345
- }
346
- },
347
-
348
- /**
349
- * getEventTarget
350
- *
351
- * Returns a jQUery element to tigger an event on
352
- *
353
- * @date 5/6/18
354
- * @since 5.6.9
355
- *
356
- * @param jQuery $el The default jQuery element. Optional.
357
- * @param string event The event name. Optional.
358
- * @return jQuery
359
- */
360
-
361
- getEventTarget: function( $el, event ){
362
- return $el || this.$el || $(document);
363
- },
364
-
365
- /**
366
- * validateEvent
367
- *
368
- * Returns true if the event target's closest $el is the same as this.$el
369
- * Requires both this.el and this.$el to be defined
370
- *
371
- * @date 5/6/18
372
- * @since 5.6.9
373
- *
374
- * @param type $var Description. Default.
375
- * @return type Description.
376
- */
377
-
378
- validateEvent: function( e ){
379
- if( this.eventScope ) {
380
- return $( e.target ).closest( this.eventScope ).is( this.$el );
381
- } else {
382
- return true;
383
- }
384
- },
385
-
386
- /**
387
- * proxyEvent
388
- *
389
- * Returns a new event callback function scoped to this model
390
- *
391
- * @date 29/3/18
392
- * @since 5.6.9
393
- *
394
- * @param function callback
395
- * @return function
396
- */
397
-
398
- proxyEvent: function( callback ){
399
- return this.proxy(function(e){
400
-
401
- // validate
402
- if( !this.validateEvent(e) ) {
403
- return;
404
- }
405
-
406
- // construct args
407
- var args = acf.arrayArgs( arguments );
408
- var extraArgs = args.slice(1);
409
- var eventArgs = [ e, $(e.currentTarget) ].concat( extraArgs );
410
-
411
- // callback
412
- callback.apply(this, eventArgs);
413
- });
414
- },
415
-
416
- /**
417
- * on
418
- *
419
- * Adds an event handler similar to jQuery
420
- * Uses the instance 'cid' to namespace event
421
- *
422
- * @date 14/12/17
423
- * @since 5.6.5
424
- *
425
- * @param string name
426
- * @param string callback
427
- * @return n/a
428
- */
429
-
430
- on: function( a1, a2, a3, a4 ){
431
-
432
- // vars
433
- var $el, event, selector, callback, args;
434
-
435
- // find args
436
- if( a1 instanceof jQuery ) {
437
-
438
- // 1. args( $el, event, selector, callback )
439
- if( a4 ) {
440
- $el = a1; event = a2; selector = a3; callback = a4;
441
-
442
- // 2. args( $el, event, callback )
443
- } else {
444
- $el = a1; event = a2; callback = a3;
445
- }
446
- } else {
447
-
448
- // 3. args( event, selector, callback )
449
- if( a3 ) {
450
- event = a1; selector = a2; callback = a3;
451
-
452
- // 4. args( event, callback )
453
- } else {
454
- event = a1; callback = a2;
455
- }
456
- }
457
-
458
- // element
459
- $el = this.getEventTarget( $el );
460
-
461
- // modify callback
462
- if( typeof callback === 'string' ) {
463
- callback = this.proxyEvent( this[callback] );
464
- }
465
-
466
- // modify event
467
- event = event + '.' + this.cid;
468
-
469
- // args
470
- if( selector ) {
471
- args = [ event, selector, callback ];
472
- } else {
473
- args = [ event, callback ];
474
- }
475
-
476
- // on()
477
- $el.on.apply($el, args);
478
- },
479
-
480
- /**
481
- * off
482
- *
483
- * Removes an event handler similar to jQuery
484
- *
485
- * @date 14/12/17
486
- * @since 5.6.5
487
- *
488
- * @param string name
489
- * @param string callback
490
- * @return n/a
491
- */
492
-
493
- off: function( a1, a2 ,a3 ){
494
-
495
- // vars
496
- var $el, event, selector, args;
497
-
498
- // find args
499
- if( a1 instanceof jQuery ) {
500
-
501
- // 1. args( $el, event, selector )
502
- if( a3 ) {
503
- $el = a1; event = a2; selector = a3;
504
-
505
- // 2. args( $el, event )
506
- } else {
507
- $el = a1; event = a2;
508
- }
509
- } else {
510
-
511
- // 3. args( event, selector )
512
- if( a2 ) {
513
- event = a1; selector = a2;
514
-
515
- // 4. args( event )
516
- } else {
517
- event = a1;
518
- }
519
- }
520
-
521
- // element
522
- $el = this.getEventTarget( $el );
523
-
524
- // modify event
525
- event = event + '.' + this.cid;
526
-
527
- // args
528
- if( selector ) {
529
- args = [ event, selector ];
530
- } else {
531
- args = [ event ];
532
- }
533
-
534
- // off()
535
- $el.off.apply($el, args);
536
- },
537
-
538
- /**
539
- * trigger
540
- *
541
- * Triggers an event similar to jQuery
542
- *
543
- * @date 14/12/17
544
- * @since 5.6.5
545
- *
546
- * @param string name
547
- * @param string callback
548
- * @return n/a
549
- */
550
-
551
- trigger: function( name, args, bubbles ){
552
- var $el = this.getEventTarget();
553
- if( bubbles ) {
554
- $el.trigger.apply( $el, arguments );
555
- } else {
556
- $el.triggerHandler.apply( $el, arguments );
557
- }
558
- return this;
559
- },
560
-
561
- /**
562
- * addActions
563
- *
564
- * Adds multiple action handlers
565
- *
566
- * @date 14/12/17
567
- * @since 5.6.5
568
- *
569
- * @param object actions {action1 : callback, action2 : callback, etc }
570
- * @return n/a
571
- */
572
-
573
- addActions: function( actions ){
574
- actions = actions || this.actions || null;
575
- if( !actions ) return false;
576
- for( var i in actions ) {
577
- this.addAction( i, actions[i] );
578
- }
579
- },
580
-
581
- /**
582
- * removeActions
583
- *
584
- * Removes multiple action handlers
585
- *
586
- * @date 14/12/17
587
- * @since 5.6.5
588
- *
589
- * @param object actions {action1 : callback, action2 : callback, etc }
590
- * @return n/a
591
- */
592
-
593
- removeActions: function( actions ){
594
- actions = actions || this.actions || null;
595
- if( !actions ) return false;
596
- for( var i in actions ) {
597
- this.removeAction( i, actions[i] );
598
- }
599
- },
600
-
601
- /**
602
- * addAction
603
- *
604
- * Adds an action using the wp.hooks library
605
- *
606
- * @date 14/12/17
607
- * @since 5.6.5
608
- *
609
- * @param string name
610
- * @param string callback
611
- * @return n/a
612
- */
613
-
614
- addAction: function( name, callback, priority ){
615
- //console.log('addAction', name, priority);
616
- // defaults
617
- priority = priority || this.priority;
618
-
619
- // modify callback
620
- if( typeof callback === 'string' ) {
621
- callback = this[ callback ];
622
- }
623
-
624
- // add
625
- acf.addAction(name, callback, priority, this);
626
-
627
- },
628
-
629
- /**
630
- * removeAction
631
- *
632
- * Remove an action using the wp.hooks library
633
- *
634
- * @date 14/12/17
635
- * @since 5.6.5
636
- *
637
- * @param string name
638
- * @param string callback
639
- * @return n/a
640
- */
641
-
642
- removeAction: function( name, callback ){
643
- acf.removeAction(name, this[ callback ]);
644
- },
645
-
646
- /**
647
- * addFilters
648
- *
649
- * Adds multiple filter handlers
650
- *
651
- * @date 14/12/17
652
- * @since 5.6.5
653
- *
654
- * @param object filters {filter1 : callback, filter2 : callback, etc }
655
- * @return n/a
656
- */
657
-
658
- addFilters: function( filters ){
659
- filters = filters || this.filters || null;
660
- if( !filters ) return false;
661
- for( var i in filters ) {
662
- this.addFilter( i, filters[i] );
663
- }
664
- },
665
-
666
- /**
667
- * addFilter
668
- *
669
- * Adds a filter using the wp.hooks library
670
- *
671
- * @date 14/12/17
672
- * @since 5.6.5
673
- *
674
- * @param string name
675
- * @param string callback
676
- * @return n/a
677
- */
678
-
679
- addFilter: function( name, callback, priority ){
680
-
681
- // defaults
682
- priority = priority || this.priority;
683
-
684
- // modify callback
685
- if( typeof callback === 'string' ) {
686
- callback = this[ callback ];
687
- }
688
-
689
- // add
690
- acf.addFilter(name, callback, priority, this);
691
-
692
- },
693
-
694
- /**
695
- * removeFilters
696
- *
697
- * Removes multiple filter handlers
698
- *
699
- * @date 14/12/17
700
- * @since 5.6.5
701
- *
702
- * @param object filters {filter1 : callback, filter2 : callback, etc }
703
- * @return n/a
704
- */
705
-
706
- removeFilters: function( filters ){
707
- filters = filters || this.filters || null;
708
- if( !filters ) return false;
709
- for( var i in filters ) {
710
- this.removeFilter( i, filters[i] );
711
- }
712
- },
713
-
714
- /**
715
- * removeFilter
716
- *
717
- * Remove a filter using the wp.hooks library
718
- *
719
- * @date 14/12/17
720
- * @since 5.6.5
721
- *
722
- * @param string name
723
- * @param string callback
724
- * @return n/a
725
- */
726
-
727
- removeFilter: function( name, callback ){
728
- acf.removeFilter(name, this[ callback ]);
729
- },
730
-
731
- /**
732
- * $
733
- *
734
- * description
735
- *
736
- * @date 16/12/17
737
- * @since 5.6.5
738
- *
739
- * @param type $var Description. Default.
740
- * @return type Description.
741
- */
742
-
743
- $: function( selector ){
744
- return this.$el.find( selector );
745
- },
746
-
747
- /**
748
- * remove
749
- *
750
- * Removes the element and listenters
751
- *
752
- * @date 19/12/17
753
- * @since 5.6.5
754
- *
755
- * @param type $var Description. Default.
756
- * @return type Description.
757
- */
758
-
759
- remove: function(){
760
- this.removeEvents();
761
- this.removeActions();
762
- this.removeFilters();
763
- this.$el.remove();
764
- },
765
-
766
- /**
767
- * setTimeout
768
- *
769
- * description
770
- *
771
- * @date 16/1/18
772
- * @since 5.6.5
773
- *
774
- * @param type $var Description. Default.
775
- * @return type Description.
776
- */
777
-
778
- setTimeout: function( callback, milliseconds ){
779
- return setTimeout( this.proxy(callback), milliseconds );
780
- },
781
-
782
- /**
783
- * time
784
- *
785
- * used for debugging
786
- *
787
- * @date 7/3/18
788
- * @since 5.6.9
789
- *
790
- * @param type $var Description. Default.
791
- * @return type Description.
792
- */
793
-
794
- time: function(){
795
- console.time( this.id || this.cid );
796
- },
797
-
798
- /**
799
- * timeEnd
800
- *
801
- * used for debugging
802
- *
803
- * @date 7/3/18
804
- * @since 5.6.9
805
- *
806
- * @param type $var Description. Default.
807
- * @return type Description.
808
- */
809
-
810
- timeEnd: function(){
811
- console.timeEnd( this.id || this.cid );
812
- },
813
-
814
- /**
815
- * show
816
- *
817
- * description
818
- *
819
- * @date 15/3/18
820
- * @since 5.6.9
821
- *
822
- * @param type $var Description. Default.
823
- * @return type Description.
824
- */
825
-
826
- show: function(){
827
- acf.show( this.$el );
828
- },
829
-
830
-
831
- /**
832
- * hide
833
- *
834
- * description
835
- *
836
- * @date 15/3/18
837
- * @since 5.6.9
838
- *
839
- * @param type $var Description. Default.
840
- * @return type Description.
841
- */
842
-
843
- hide: function(){
844
- acf.hide( this.$el );
845
- },
846
-
847
- /**
848
- * proxy
849
- *
850
- * Returns a new function scoped to this model
851
- *
852
- * @date 29/3/18
853
- * @since 5.6.9
854
- *
855
- * @param function callback
856
- * @return function
857
- */
858
-
859
- proxy: function( callback ){
860
- return $.proxy( callback, this );
861
- }
862
-
863
-
864
- });
865
-
866
- // Set up inheritance for the model
867
- Model.extend = extend;
868
-
869
- // Global model storage
870
- acf.models = {};
871
-
872
- /**
873
- * acf.getInstance
874
- *
875
- * This function will get an instance from an element
876
- *
877
- * @date 5/3/18
878
- * @since 5.6.9
879
- *
880
- * @param type $var Description. Default.
881
- * @return type Description.
882
- */
883
-
884
- acf.getInstance = function( $el ){
885
- return $el.data('acf');
886
- };
887
-
888
- /**
889
- * acf.getInstances
890
- *
891
- * This function will get an array of instances from multiple elements
892
- *
893
- * @date 5/3/18
894
- * @since 5.6.9
895
- *
896
- * @param type $var Description. Default.
897
- * @return type Description.
898
- */
899
-
900
- acf.getInstances = function( $el ){
901
- var instances = [];
902
- $el.each(function(){
903
- instances.push( acf.getInstance( $(this) ) );
904
- });
905
- return instances;
906
- };
907
-
908
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-notice.js DELETED
@@ -1,142 +0,0 @@
1
- (function($, undefined){
2
-
3
- var Notice = acf.Model.extend({
4
-
5
- data: {
6
- text: '',
7
- type: '',
8
- timeout: 0,
9
- dismiss: true,
10
- target: false,
11
- close: function(){}
12
- },
13
-
14
- events: {
15
- 'click .acf-notice-dismiss': 'onClickClose',
16
- },
17
-
18
- tmpl: function(){
19
- return '<div class="acf-notice"></div>';
20
- },
21
-
22
- setup: function( props ){
23
- $.extend(this.data, props);
24
- this.$el = $(this.tmpl());
25
- },
26
-
27
- initialize: function(){
28
-
29
- // render
30
- this.render();
31
-
32
- // show
33
- this.show();
34
- },
35
-
36
- render: function(){
37
-
38
- // class
39
- this.type( this.get('type') );
40
-
41
- // text
42
- this.html( '<p>' + this.get('text') + '</p>' );
43
-
44
- // close
45
- if( this.get('dismiss') ) {
46
- this.$el.append('<a href="#" class="acf-notice-dismiss acf-icon -cancel small"></a>');
47
- this.$el.addClass('-dismiss');
48
- }
49
-
50
- // timeout
51
- var timeout = this.get('timeout');
52
- if( timeout ) {
53
- this.away( timeout );
54
- }
55
- },
56
-
57
- update: function( props ){
58
-
59
- // update
60
- $.extend(this.data, props);
61
-
62
- // re-initialize
63
- this.initialize();
64
- },
65
-
66
- show: function(){
67
- var $target = this.get('target');
68
- if( $target ) {
69
- $target.prepend( this.$el );
70
- }
71
- },
72
-
73
- hide: function(){
74
- this.$el.remove();
75
- },
76
-
77
- away: function( timeout ){
78
- this.setTimeout(function(){
79
- acf.remove( this.$el );
80
- }, timeout );
81
- },
82
-
83
- type: function( type ){
84
-
85
- // remove prev type
86
- var prevType = this.get('type');
87
- if( prevType ) {
88
- this.$el.removeClass('-' + prevType);
89
- }
90
-
91
- // add new type
92
- this.$el.addClass('-' + type);
93
-
94
- // backwards compatibility
95
- if( type == 'error' ) {
96
- this.$el.addClass('acf-error-message');
97
- }
98
- },
99
-
100
- html: function( html ){
101
- this.$el.html( html );
102
- },
103
-
104
- text: function( text ){
105
- this.$('p').html( text );
106
- },
107
-
108
- onClickClose: function( e, $el ){
109
- e.preventDefault();
110
- this.get('close').apply(this, arguments);
111
- this.remove();
112
- }
113
- });
114
-
115
- acf.newNotice = function( props ){
116
-
117
- // ensure object
118
- if( typeof props !== 'object' ) {
119
- props = { text: props };
120
- }
121
-
122
- // instantiate
123
- return new Notice( props );
124
- };
125
-
126
- var noticeManager = new acf.Model({
127
- wait: 'prepare',
128
- priority: 1,
129
- initialize: function(){
130
-
131
- // vars
132
- var $notice = $('.acf-admin-notice');
133
-
134
- // move to avoid WP flicker
135
- if( $notice.length ) {
136
- $('h1:first').after( $notice );
137
- }
138
- }
139
- });
140
-
141
-
142
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-panel.js DELETED
@@ -1,34 +0,0 @@
1
- (function($, undefined){
2
-
3
- var panel = new acf.Model({
4
-
5
- events: {
6
- 'click .acf-panel-title': 'onClick',
7
- },
8
-
9
- onClick: function( e, $el ){
10
- e.preventDefault();
11
- this.toggle( $el.parent() );
12
- },
13
-
14
- isOpen: function( $el ) {
15
- return $el.hasClass('-open');
16
- },
17
-
18
- toggle: function( $el ){
19
- this.isOpen($el) ? this.close( $el ) : this.open( $el );
20
- },
21
-
22
- open: function( $el ){
23
- $el.addClass('-open');
24
- $el.find('.acf-panel-title i').attr('class', 'dashicons dashicons-arrow-down');
25
- },
26
-
27
- close: function( $el ){
28
- $el.removeClass('-open');
29
- $el.find('.acf-panel-title i').attr('class', 'dashicons dashicons-arrow-right');
30
- }
31
-
32
- });
33
-
34
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-popup.js DELETED
@@ -1,121 +0,0 @@
1
- (function($, undefined){
2
-
3
- acf.models.Popup = acf.Model.extend({
4
-
5
- data: {
6
- title: '',
7
- content: '',
8
- width: 0,
9
- height: 0,
10
- loading: false,
11
- },
12
-
13
- events: {
14
- 'click [data-event="close"]': 'onClickClose',
15
- 'click .acf-close-popup': 'onClickClose',
16
- },
17
-
18
- setup: function( props ){
19
- $.extend(this.data, props);
20
- this.$el = $(this.tmpl());
21
- },
22
-
23
- initialize: function(){
24
- this.render();
25
- this.open();
26
- },
27
-
28
- tmpl: function(){
29
- return [
30
- '<div id="acf-popup">',
31
- '<div class="acf-popup-box acf-box">',
32
- '<div class="title"><h3></h3><a href="#" class="acf-icon -cancel grey" data-event="close"></a></div>',
33
- '<div class="inner"></div>',
34
- '<div class="loading"><i class="acf-loading"></i></div>',
35
- '</div>',
36
- '<div class="bg" data-event="close"></div>',
37
- '</div>'
38
- ].join('');
39
- },
40
-
41
- render: function(){
42
-
43
- // vars
44
- var title = this.get('title');
45
- var content = this.get('content');
46
- var loading = this.get('loading');
47
- var width = this.get('width');
48
- var height = this.get('height');
49
-
50
- // html
51
- this.title( title );
52
- this.content( content );
53
-
54
- // width
55
- if( width ) {
56
- this.$('.acf-popup-box').css('width', width);
57
- }
58
-
59
- // height
60
- if( height ) {
61
- this.$('.acf-popup-box').css('min-height', height);
62
- }
63
-
64
- // loading
65
- this.loading( loading );
66
-
67
- // action
68
- acf.doAction('append', this.$el);
69
-
70
- },
71
-
72
- update: function( props ){
73
- this.data = acf.parseArgs(props, this.data);
74
- this.render();
75
- },
76
-
77
- title: function( title ){
78
- this.$('.title:first h3').html( title );
79
- },
80
-
81
- content: function( content ){
82
- this.$('.inner:first').html( content );
83
- },
84
-
85
- loading: function( show ){
86
- var $loading = this.$('.loading:first');
87
- show ? $loading.show() : $loading.hide();
88
- },
89
-
90
- open: function(){
91
- $('body').append( this.$el );
92
- },
93
-
94
- close: function(){
95
- this.remove();
96
- },
97
-
98
- onClickClose: function( e, $el ){
99
- e.preventDefault();
100
- this.close();
101
- }
102
-
103
- });
104
-
105
- /**
106
- * newPopup
107
- *
108
- * Creates a new Popup with the supplied props
109
- *
110
- * @date 17/12/17
111
- * @since 5.6.5
112
- *
113
- * @param object props
114
- * @return object
115
- */
116
-
117
- acf.newPopup = function( props ){
118
- return new acf.models.Popup( props );
119
- };
120
-
121
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-postbox.js DELETED
@@ -1,67 +0,0 @@
1
- (function($, undefined){
2
-
3
- acf.models.Postbox = acf.Model.extend({
4
-
5
- data: {
6
- id: '',
7
- key: '',
8
- style: 'default',
9
- label: 'top',
10
- editLink: '',
11
- editTitle: '',
12
- visibility: true
13
- },
14
-
15
- setup: function( props ){
16
- $.extend(this.data, props);
17
- },
18
-
19
- initialize: function(){
20
-
21
- // vars
22
- var id = this.get('id');
23
- var $postbox = $('#' + id);
24
- var $toggle = $('#' + id + '-hide');
25
- var $label = $toggle.parent();
26
-
27
- // add class
28
- $postbox.addClass('acf-postbox');
29
- $label.addClass('acf-postbox-toggle');
30
-
31
- // remove class
32
- $postbox.removeClass('hide-if-js');
33
- $label.removeClass('hide-if-js');
34
-
35
- // field group style
36
- var style = this.get('style');
37
- if( style !== 'default' ) {
38
- $postbox.addClass( style );
39
- }
40
-
41
- // .inside class
42
- $postbox.children('.inside').addClass('acf-fields').addClass('-' + this.get('label'));
43
-
44
-
45
- // visibility
46
- if( this.get('visibility') ) {
47
- $toggle.prop('checked', true);
48
- } else {
49
- $postbox.addClass('acf-hidden');
50
- $label.addClass('acf-hidden');
51
- }
52
-
53
- // edit link
54
- var editLink = this.get('editLink');
55
- var editTitle = this.get('editTitle');
56
- if( editLink ) {
57
-
58
- $postbox.children('.hndle').append('<a href="' + editLink + '" class="dashicons dashicons-admin-generic acf-hndle-cog acf-js-tooltip" title="' + editTitle + '"></a>');
59
- }
60
- }
61
- });
62
-
63
- acf.newPostbox = function( props ){
64
- return new acf.models.Postbox( props );
65
- };
66
-
67
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-screen.js DELETED
@@ -1,353 +0,0 @@
1
- (function($, undefined){
2
-
3
- acf.screen = new acf.Model({
4
-
5
- active: true,
6
-
7
- xhr: false,
8
-
9
- timeout: false,
10
-
11
- wait: 'load',
12
-
13
- events: {
14
- 'change #page_template': 'onChange',
15
- 'change #parent_id': 'onChange',
16
- 'change #post-formats-select': 'onChange',
17
- 'change .categorychecklist': 'onChange',
18
- 'change .tagsdiv': 'onChange',
19
- 'change .acf-taxonomy-field[data-save="1"]': 'onChange',
20
- 'change #product-type': 'onChange'
21
- },
22
-
23
- initialize: function(){
24
-
25
- /*
26
- // disable if not active
27
- if( !this.active ) {
28
- this.events = {};
29
- }
30
-
31
- // bail early if not for post
32
- if( acf.get('screen') !== 'post' ) {
33
- return;
34
- }
35
-
36
- 'check_screen_data'
37
-
38
- 'check_screen_events'
39
-
40
- */
41
- },
42
- /*
43
-
44
- checkScreenEvents: function(){
45
-
46
- // vars
47
- var events = [
48
- 'change #page_template',
49
- 'change #parent_id',
50
- 'change #post-formats-select input',
51
- 'change .categorychecklist input',
52
- 'change .categorychecklist select',
53
- 'change .acf-taxonomy-field[data-save="1"] input',
54
- 'change .acf-taxonomy-field[data-save="1"] select',
55
- 'change #product-type'
56
- ];
57
-
58
- acf.screen.on('change', '#product-type', 'fetch');
59
- },
60
- */
61
-
62
-
63
- isPost: function(){
64
- return acf.get('screen') === 'post';
65
- },
66
-
67
- isUser: function(){
68
- return acf.get('screen') === 'user';
69
- },
70
-
71
- isTaxonomy: function(){
72
- return acf.get('screen') === 'taxonomy';
73
- },
74
-
75
- isAttachment: function(){
76
- return acf.get('screen') === 'attachment';
77
- },
78
-
79
- isNavMenu: function(){
80
- return acf.get('screen') === 'nav_menu';
81
- },
82
-
83
- isWidget: function(){
84
- return acf.get('screen') === 'widget';
85
- },
86
-
87
- isComment: function(){
88
- return acf.get('screen') === 'comment';
89
- },
90
-
91
- getPageTemplate: function(){
92
- var $el = $('#page_template');
93
- return $el.length ? $el.val() : null;
94
- },
95
-
96
- getPageParent: function( e, $el ){
97
- var $el = $('#parent_id');
98
- return $el.length ? $el.val() : null;
99
- },
100
-
101
- getPageType: function( e, $el ){
102
- return this.getPageParent() ? 'child' : 'parent';
103
- },
104
-
105
- getPostFormat: function( e, $el ){
106
- var $el = $('#post-formats-select input:checked');
107
- if( $el.length ) {
108
- var val = $el.val();
109
- return (val == '0') ? 'standard' : val;
110
- }
111
- return null;
112
- },
113
-
114
- getPostTerms: function(){
115
-
116
- // vars
117
- var terms = {};
118
-
119
- // serialize WP taxonomy postboxes
120
- var data = acf.serialize( $('.categorydiv, .tagsdiv') );
121
-
122
- // use tax_input (tag, custom-taxonomy) when possible.
123
- // this data is already formatted in taxonomy => [terms].
124
- if( data.tax_input ) {
125
- terms = data.tax_input;
126
- }
127
-
128
- // append "category" which uses a different name
129
- if( data.post_category ) {
130
- terms.category = data.post_category;
131
- }
132
-
133
- // convert any string values (tags) into array format
134
- for( var tax in terms ) {
135
- if( !acf.isArray(terms[tax]) ) {
136
- terms[tax] = terms[tax].split(', ');
137
- }
138
- }
139
-
140
- // loop over taxonomy fields and add their values
141
- acf.getFields({type: 'taxonomy'}).map(function( field ){
142
-
143
- // ignore fields that don't save
144
- if( !field.get('save') ) {
145
- return;
146
- }
147
-
148
- // vars
149
- var val = field.val();
150
- var tax = field.get('taxonomy');
151
-
152
- // check val
153
- if( val ) {
154
-
155
- // ensure terms exists
156
- terms[ tax ] = terms[ tax ] || [];
157
-
158
- // ensure val is an array
159
- val = acf.isArray(val) ? val : [val];
160
-
161
- // append
162
- terms[ tax ] = terms[ tax ].concat( val );
163
- }
164
- });
165
-
166
- // add WC product type
167
- if( (productType = this.getProductType()) !== null ) {
168
- terms.product_type = [productType];
169
- }
170
-
171
- // remove duplicate values
172
- for( var tax in terms ) {
173
- terms[tax] = acf.uniqueArray(terms[tax]);
174
- }
175
-
176
- // return
177
- return terms;
178
- },
179
-
180
- getProductType: function(){
181
- var $el = $('#product-type');
182
- return $el.length ? $el.val() : null;
183
- },
184
-
185
- check: function(){
186
-
187
- // bail early if not for post
188
- if( acf.get('screen') !== 'post' ) {
189
- return;
190
- }
191
-
192
- // abort XHR if is already loading AJAX data
193
- if( this.xhr ) {
194
- this.xhr.abort();
195
- }
196
-
197
- // vars
198
- var ajaxData = acf.parseArgs(this.data, {
199
- action: 'acf/ajax/check_screen',
200
- screen: acf.get('screen'),
201
- exclude: []
202
- });
203
-
204
- // post id
205
- if( this.isPost() ) {
206
- ajaxData.post_id = acf.get('post_id');
207
- }
208
-
209
- // page template
210
- if( (pageTemplate = this.getPageTemplate()) !== null ) {
211
- ajaxData.page_template = pageTemplate;
212
- }
213
-
214
- // page parent
215
- if( (pageParent = this.getPageParent()) !== null ) {
216
- ajaxData.page_parent = pageParent;
217
- }
218
-
219
- // page type
220
- if( (pageType = this.getPageType()) !== null ) {
221
- ajaxData.page_type = pageType;
222
- }
223
-
224
- // post format
225
- if( (postFormat = this.getPostFormat()) !== null ) {
226
- ajaxData.post_format = postFormat;
227
- }
228
-
229
- // post terms
230
- if( (postTerms = this.getPostTerms()) !== null ) {
231
- ajaxData.post_terms = postTerms;
232
- }
233
-
234
- // exclude existing postboxes
235
- $('.acf-postbox').not('.acf-hidden').each(function(){
236
- ajaxData.exclude.push( $(this).attr('id').substr(4) );
237
- });
238
-
239
- // success
240
- var onSuccess = function( json ){
241
-
242
- // bail early if not success
243
- if( !acf.isAjaxSuccess(json) ) {
244
- return;
245
- }
246
-
247
- // hide
248
- $('.acf-postbox').addClass('acf-hidden');
249
- $('.acf-postbox-toggle').addClass('acf-hidden');
250
-
251
- // reset style
252
- $('#acf-style').html('');
253
-
254
- // loop
255
- json.data.map(function( fieldGroup, i ){
256
-
257
- // vars
258
- var $postbox = $('#acf-' + fieldGroup.key);
259
- var $toggle = $('#acf-' + fieldGroup.key + '-hide');
260
- var $label = $toggle.parent();
261
-
262
- // show
263
- // use show() to force display when postbox has been hidden by 'Show on screen' toggle
264
- $postbox.removeClass('acf-hidden hide-if-js').show();
265
- $label.removeClass('acf-hidden hide-if-js').show();
266
- $toggle.prop('checked', true);
267
-
268
- // replace HTML if needed
269
- var $replace = $postbox.find('.acf-replace-with-fields');
270
- if( $replace.exists() ) {
271
- $replace.replaceWith( fieldGroup.html );
272
- acf.doAction('append', $postbox);
273
- }
274
-
275
- // update style if needed
276
- if( i === 0 ) {
277
- $('#acf-style').html( fieldGroup.style );
278
- }
279
-
280
- // enable inputs
281
- acf.enable( $postbox, 'postbox' );
282
- });
283
- };
284
-
285
- // complete
286
- var onComplete = function( json ){
287
-
288
- // disable inputs
289
- $('.acf-postbox.acf-hidden').each(function(){
290
- acf.disable( $(this), 'postbox' );
291
- });
292
- };
293
-
294
- // ajax
295
- this.xhr = $.ajax({
296
- url: acf.get('ajaxurl'),
297
- data: acf.prepareForAjax( ajaxData ),
298
- type: 'post',
299
- dataType: 'json',
300
- context: this,
301
- success: onSuccess,
302
- complete: onComplete
303
- });
304
- },
305
-
306
- onChange: function( e, $el ){
307
- this.setTimeout(this.check, 1);
308
- }
309
- });
310
-
311
- /*
312
- // tests
313
- acf.registerScreenChange('#page_template', function( e, $el ){
314
- return $('#page_template').val();
315
- });
316
-
317
- acf.registerScreenData({
318
- name: 'page_template',
319
- change: '#page_template',
320
- val: function(){
321
- var $input = $(this.el);
322
- return $input.length ? $input.val() : null;
323
- }
324
- });
325
-
326
- acf.registerScreenData({
327
- name: 'post_terms',
328
- change: '.acf-taxonomy-field[data-save="1"]',
329
- val: function(){
330
- var $input = $(this.el);
331
- return $input.length ? $input.val() : null;
332
- }
333
- });
334
-
335
- acf.registerScreenData({
336
- name: 'post_terms',
337
- change: '#product-type',
338
- val: function( terms ){
339
- var $select = $('#product-type');
340
- if( $select.length ) {
341
- terms.push('product_cat:'+$select.val());
342
- }
343
- return terms;
344
- }
345
- });
346
-
347
-
348
- acf.screen.get('post_terms');
349
- acf.screen.getPostTerms();
350
-
351
- */
352
-
353
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-select2.js DELETED
@@ -1,793 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * acf.newSelect2
5
- *
6
- * description
7
- *
8
- * @date 13/1/18
9
- * @since 5.6.5
10
- *
11
- * @param type $var Description. Default.
12
- * @return type Description.
13
- */
14
-
15
- acf.newSelect2 = function( $select, props ){
16
-
17
- // defaults
18
- props = acf.parseArgs(props, {
19
- allowNull: false,
20
- placeholder: '',
21
- multiple: false,
22
- field: false,
23
- ajax: false,
24
- ajaxAction: '',
25
- ajaxData: function( data ){ return data; },
26
- ajaxResults: function( json ){ return json; },
27
- });
28
-
29
- // initialize
30
- if( getVersion() == 4 ) {
31
- var select2 = new Select2_4( $select, props );
32
- } else {
33
- var select2 = new Select2_3( $select, props );
34
- }
35
-
36
- // actions
37
- acf.doAction('new_select2', select2);
38
-
39
- // return
40
- return select2;
41
- };
42
-
43
- /**
44
- * getVersion
45
- *
46
- * description
47
- *
48
- * @date 13/1/18
49
- * @since 5.6.5
50
- *
51
- * @param type $var Description. Default.
52
- * @return type Description.
53
- */
54
-
55
- function getVersion() {
56
-
57
- // v4
58
- if( acf.isset(window, 'jQuery', 'fn', 'select2', 'amd') ) {
59
- return 4;
60
- }
61
-
62
- // v3
63
- if( acf.isset(window, 'Select2') ) {
64
- return 3;
65
- }
66
-
67
- // return
68
- return false;
69
- }
70
-
71
- /**
72
- * Select2
73
- *
74
- * description
75
- *
76
- * @date 13/1/18
77
- * @since 5.6.5
78
- *
79
- * @param type $var Description. Default.
80
- * @return type Description.
81
- */
82
-
83
- var Select2 = acf.Model.extend({
84
-
85
- setup: function( $select, props ){
86
- $.extend(this.data, props);
87
- this.$el = $select;
88
- },
89
-
90
- initialize: function(){
91
-
92
- },
93
-
94
- selectOption: function( value ){
95
- var $option = this.getOption( value );
96
- if( !$option.prop('selected') ) {
97
- $option.prop('selected', true).trigger('change');
98
- }
99
- },
100
-
101
- unselectOption: function( value ){
102
- var $option = this.getOption( value );
103
- if( $option.prop('selected') ) {
104
- $option.prop('selected', false).trigger('change');
105
- }
106
- },
107
-
108
- getOption: function( value ){
109
- return this.$('option[value="' + value + '"]');
110
- },
111
-
112
- addOption: function( option ){
113
-
114
- // defaults
115
- option = acf.parseArgs(option, {
116
- id: '',
117
- text: '',
118
- selected: false
119
- });
120
-
121
- // vars
122
- var $option = this.getOption( option.id );
123
-
124
- // append
125
- if( !$option.length ) {
126
- $option = $('<option></option>');
127
- $option.html( option.text );
128
- $option.attr('value', option.id);
129
- $option.prop('selected', option.selected);
130
- this.$el.append($option);
131
- }
132
-
133
- // chain
134
- return $option;
135
- },
136
-
137
- getValue: function(){
138
-
139
- // vars
140
- var val = [];
141
- var $options = this.$el.find('option:selected');
142
-
143
- // bail early if no selected
144
- if( !$options.exists() ) {
145
- return val;
146
- }
147
-
148
- // sort by attribute
149
- $options = $options.sort(function(a, b) {
150
- return +a.getAttribute('data-i') - +b.getAttribute('data-i');
151
- });
152
-
153
- // loop
154
- $options.each(function(){
155
- var $el = $(this);
156
- val.push({
157
- $el: $el,
158
- id: $el.attr('value'),
159
- text: $el.text(),
160
- });
161
- });
162
-
163
- // return
164
- return val;
165
-
166
- },
167
-
168
- mergeOptions: function(){
169
-
170
- },
171
-
172
- getChoices: function(){
173
-
174
- // callback
175
- var crawl = function( $parent ){
176
-
177
- // vars
178
- var choices = [];
179
-
180
- // loop
181
- $parent.children().each(function(){
182
-
183
- // vars
184
- var $child = $(this);
185
-
186
- // optgroup
187
- if( $child.is('optgroup') ) {
188
-
189
- choices.push({
190
- text: $child.attr('label'),
191
- children: crawl( $child )
192
- });
193
-
194
- // option
195
- } else {
196
-
197
- choices.push({
198
- id: $child.attr('value'),
199
- text: $child.text()
200
- });
201
- }
202
- });
203
-
204
- // return
205
- return choices;
206
- };
207
-
208
- // crawl
209
- return crawl( this.$el );
210
- },
211
-
212
- decodeChoices: function( choices ){
213
-
214
- // callback
215
- var crawl = function( items ){
216
- items.map(function( item ){
217
- item.text = acf.decode( item.text );
218
- if( item.children ) {
219
- item.children = crawl( item.children );
220
- }
221
- return item;
222
- });
223
- return items;
224
- };
225
-
226
- // crawl
227
- return crawl( choices );
228
- },
229
-
230
- getAjaxData: function( params ){
231
-
232
- // vars
233
- var ajaxData = {
234
- action: this.get('ajaxAction'),
235
- s: params.term || '',
236
- paged: params.page || 1
237
- };
238
-
239
- // field helper
240
- var field = this.get('field');
241
- if( field ) {
242
- ajaxData.field_key = field.get('key');
243
- }
244
-
245
- // callback
246
- var callback = this.get('ajaxData');
247
- if( callback ) {
248
- ajaxData = callback.apply( this, [ajaxData, params] );
249
- }
250
-
251
- // filter
252
- ajaxData = acf.applyFilters( 'select2_ajax_data', ajaxData, this.data, this.$el, (field || false), this );
253
-
254
- // return
255
- return acf.prepareForAjax(ajaxData);
256
- },
257
-
258
- getAjaxResults: function( json, params ){
259
-
260
- // defaults
261
- json = acf.parseArgs(json, {
262
- results: false,
263
- more: false,
264
- });
265
-
266
- // decode
267
- if( json.results ) {
268
- json.results = this.decodeChoices(json.results);
269
- }
270
-
271
- // callback
272
- var callback = this.get('ajaxResults');
273
- if( callback ) {
274
- json = callback.apply( this, [json, params] );
275
- }
276
-
277
- // filter
278
- json = acf.applyFilters( 'select2_ajax_results', json, params, this );
279
-
280
- // return
281
- return json;
282
- },
283
-
284
- processAjaxResults: function( json, params ){
285
-
286
- // vars
287
- var json = this.getAjaxResults( json, params );
288
-
289
- // change more to pagination
290
- if( json.more ) {
291
- json.pagination = { more: true };
292
- }
293
-
294
- // merge together groups
295
- setTimeout($.proxy(this.mergeOptions, this), 1);
296
-
297
- // return
298
- return json;
299
- },
300
-
301
- destroy: function(){
302
-
303
- // destroy via api
304
- if( this.$el.data('select2') ) {
305
- this.$el.select2('destroy');
306
- }
307
-
308
- // destory via HTML (duplicating HTML does not contain data)
309
- this.$el.siblings('.select2-container').remove();
310
- }
311
-
312
- });
313
-
314
-
315
- /**
316
- * Select2_4
317
- *
318
- * description
319
- *
320
- * @date 13/1/18
321
- * @since 5.6.5
322
- *
323
- * @param type $var Description. Default.
324
- * @return type Description.
325
- */
326
-
327
- var Select2_4 = Select2.extend({
328
-
329
- initialize: function(){
330
-
331
- // vars
332
- var $select = this.$el;
333
- var options = {
334
- width: '100%',
335
- allowClear: this.get('allowNull'),
336
- placeholder: this.get('placeholder'),
337
- multiple: this.get('multiple'),
338
- data: [],
339
- escapeMarkup: function( m ){ return m; }
340
- };
341
-
342
- // multiple
343
- if( options.multiple ) {
344
-
345
- // reorder options
346
- this.getValue().map(function( item ){
347
- item.$el.detach().appendTo( $select );
348
- });
349
- }
350
-
351
- // remove conflicting atts
352
- $select.removeData('ajax');
353
- $select.removeAttr('data-ajax');
354
-
355
- // ajax
356
- if( this.get('ajax') ) {
357
-
358
- options.ajax = {
359
- url: acf.get('ajaxurl'),
360
- delay: 250,
361
- dataType: 'json',
362
- type: 'post',
363
- cache: false,
364
- data: $.proxy(this.getAjaxData, this),
365
- processResults: $.proxy(this.processAjaxResults, this),
366
- };
367
- }
368
-
369
- // filter for 3rd party customization
370
- //options = acf.applyFilters( 'select2_args', options, $select, this );
371
- var field = this.get('field');
372
- options = acf.applyFilters( 'select2_args', options, $select, this.data, (field || false), this );
373
-
374
- // add select2
375
- $select.select2( options );
376
-
377
- // get container (Select2 v4 does not return this from constructor)
378
- var $container = $select.next('.select2-container');
379
-
380
- // multiple
381
- if( options.multiple ) {
382
-
383
- // vars
384
- var $ul = $container.find('ul');
385
-
386
- // sortable
387
- $ul.sortable({
388
- stop: function( e ) {
389
-
390
- // loop
391
- $ul.find('.select2-selection__choice').each(function() {
392
-
393
- // vars
394
- var $option = $( $(this).data('data').element );
395
-
396
- // detach and re-append to end
397
- $option.detach().appendTo( $select );
398
- });
399
-
400
- // trigger change on input (JS error if trigger on select)
401
- $select.trigger('change');
402
- }
403
- });
404
-
405
- // on select, move to end
406
- $select.on('select2:select', this.proxy(function( e ){
407
- this.getOption( e.params.data.id ).detach().appendTo( this.$el );
408
- }));
409
- }
410
-
411
- // add class
412
- $container.addClass('-acf');
413
-
414
- // action for 3rd party customization
415
- acf.doAction('select2_init', $select, options, this.data, (field || false), this);
416
- },
417
-
418
- mergeOptions: function(){
419
-
420
- // vars
421
- var $prevOptions = false;
422
- var $prevGroup = false;
423
-
424
- // loop
425
- $('.select2-results__option[role="group"]').each(function(){
426
-
427
- // vars
428
- var $options = $(this).children('ul');
429
- var $group = $(this).children('strong');
430
-
431
- // compare to previous
432
- if( $prevGroup && $prevGroup.text() === $group.text() ) {
433
- $prevOptions.append( $options.children() );
434
- $(this).remove();
435
- return;
436
- }
437
-
438
- // update vars
439
- $prevOptions = $options;
440
- $prevGroup = $group;
441
-
442
- });
443
- },
444
-
445
- });
446
-
447
- /**
448
- * Select2_3
449
- *
450
- * description
451
- *
452
- * @date 13/1/18
453
- * @since 5.6.5
454
- *
455
- * @param type $var Description. Default.
456
- * @return type Description.
457
- */
458
-
459
- var Select2_3 = Select2.extend({
460
-
461
- initialize: function(){
462
-
463
- // vars
464
- var $select = this.$el;
465
- var value = this.getValue();
466
- var multiple = this.get('multiple');
467
- var options = {
468
- width: '100%',
469
- allowClear: this.get('allowNull'),
470
- placeholder: this.get('placeholder'),
471
- separator: '||',
472
- multiple: this.get('multiple'),
473
- data: this.getChoices(),
474
- escapeMarkup: function( m ){ return m; },
475
- dropdownCss: {
476
- 'z-index': '999999999'
477
- },
478
- initSelection: function( element, callback ) {
479
- if( multiple ) {
480
- callback( value );
481
- } else {
482
- callback( value.shift() );
483
- }
484
- }
485
- };
486
-
487
- // get hidden input
488
- var $input = $select.siblings('input');
489
- if( !$input.length ) {
490
- $input = $('<input type="hidden" />');
491
- $select.before( $input );
492
- }
493
-
494
- // set input value
495
- inputValue = value.map(function(item){ return item.id }).join('||');
496
- $input.val( inputValue );
497
-
498
- // multiple
499
- if( options.multiple ) {
500
-
501
- // reorder options
502
- value.map(function( item ){
503
- item.$el.detach().appendTo( $select );
504
- });
505
- }
506
-
507
- // remove blank option as we have a clear all button
508
- if( options.allowClear ) {
509
- options.data = options.data.filter(function(item){
510
- return item.id !== '';
511
- });
512
- }
513
-
514
- // remove conflicting atts
515
- $select.removeData('ajax');
516
- $select.removeAttr('data-ajax');
517
-
518
- // ajax
519
- if( this.get('ajax') ) {
520
-
521
- options.ajax = {
522
- url: acf.get('ajaxurl'),
523
- quietMillis: 250,
524
- dataType: 'json',
525
- type: 'post',
526
- cache: false,
527
- data: $.proxy(this.getAjaxData, this),
528
- results: $.proxy(this.processAjaxResults, this),
529
- };
530
- }
531
-
532
- // filter for 3rd party customization
533
- var field = this.get('field');
534
- options = acf.applyFilters( 'select2_args', options, $select, this.data, (field || false), this );
535
-
536
- // add select2
537
- $input.select2( options );
538
-
539
- // get container
540
- var $container = $input.select2('container');
541
-
542
- // helper to find this select's option
543
- var getOption = $.proxy(this.getOption, this);
544
-
545
- // multiple
546
- if( options.multiple ) {
547
-
548
- // vars
549
- var $ul = $container.find('ul');
550
-
551
- // sortable
552
- $ul.sortable({
553
- stop: function() {
554
-
555
- // loop
556
- $ul.find('.select2-search-choice').each(function() {
557
-
558
- // vars
559
- var data = $(this).data('select2Data');
560
- var $option = getOption( data.id );
561
-
562
- // detach and re-append to end
563
- $option.detach().appendTo( $select );
564
- });
565
-
566
- // trigger change on input (JS error if trigger on select)
567
- $select.trigger('change');
568
- }
569
- });
570
- }
571
-
572
- // on select, create option and move to end
573
- $input.on('select2-selecting', function( e ){
574
-
575
- // vars
576
- var item = e.choice;
577
- var $option = getOption( item.id );
578
-
579
- // create if doesn't exist
580
- if( !$option.length ) {
581
- $option = $('<option value="' + item.id + '">' + item.text + '</option>');
582
- }
583
-
584
- // detach and re-append to end
585
- $option.detach().appendTo( $select );
586
- });
587
-
588
- // add class
589
- $container.addClass('-acf');
590
-
591
- // action for 3rd party customization
592
- acf.doAction('select2_init', $select, options, this.data, (field || false), this);
593
-
594
- // change
595
- $input.on('change', function(){
596
- var val = $input.val();
597
- if( val.indexOf('||') ) {
598
- val = val.split('||');
599
- }
600
- $select.val( val ).trigger('change');
601
- });
602
-
603
- // hide select
604
- $select.hide();
605
- },
606
-
607
- mergeOptions: function(){
608
-
609
- // vars
610
- var $prevOptions = false;
611
- var $prevGroup = false;
612
-
613
- // loop
614
- $('#select2-drop .select2-result-with-children').each(function(){
615
-
616
- // vars
617
- var $options = $(this).children('ul');
618
- var $group = $(this).children('.select2-result-label');
619
-
620
- // compare to previous
621
- if( $prevGroup && $prevGroup.text() === $group.text() ) {
622
- $prevGroup.append( $options.children() );
623
- $(this).remove();
624
- return;
625
- }
626
-
627
- // update vars
628
- $prevOptions = $options;
629
- $prevGroup = $group;
630
-
631
- });
632
-
633
- },
634
-
635
- getAjaxData: function( term, page ){
636
-
637
- // create Select2 v4 params
638
- var params = {
639
- term: term,
640
- page: page
641
- }
642
-
643
- // return
644
- return Select2.prototype.getAjaxData.apply(this, [params]);
645
- },
646
-
647
- });
648
-
649
-
650
- // manager
651
- var select2Manager = new acf.Model({
652
- priority: 5,
653
- wait: 'prepare',
654
- initialize: function(){
655
-
656
- // vars
657
- var locale = acf.get('locale');
658
- var rtl = acf.get('rtl');
659
- var l10n = acf.get('select2L10n');
660
- var version = getVersion();
661
-
662
- // bail ealry if no l10n
663
- if( !l10n ) {
664
- return false;
665
- }
666
-
667
- // bail early if 'en'
668
- if( locale.indexOf('en') === 0 ) {
669
- return false;
670
- }
671
-
672
- // initialize
673
- if( version == 4 ) {
674
- this.addTranslations4();
675
- } else if( version == 3 ) {
676
- this.addTranslations3();
677
- }
678
- },
679
-
680
- addTranslations4: function(){
681
-
682
- // vars
683
- var l10n = acf.get('select2L10n');
684
- var locale = acf.get('locale');
685
-
686
- // modify local to match html[lang] attribute (used by Select2)
687
- locale = locale.replace('_', '-');
688
-
689
- // select2L10n
690
- var select2L10n = {
691
- errorLoading: function () {
692
- return l10n.load_fail;
693
- },
694
- inputTooLong: function (args) {
695
- var overChars = args.input.length - args.maximum;
696
- if( overChars > 1 ) {
697
- return l10n.input_too_long_n.replace( '%d', overChars );
698
- }
699
- return l10n.input_too_long_1;
700
- },
701
- inputTooShort: function( args ){
702
- var remainingChars = args.minimum - args.input.length;
703
- if( remainingChars > 1 ) {
704
- return l10n.input_too_short_n.replace( '%d', remainingChars );
705
- }
706
- return l10n.input_too_short_1;
707
- },
708
- loadingMore: function () {
709
- return l10n.load_more;
710
- },
711
- maximumSelected: function( args ) {
712
- var maximum = args.maximum;
713
- if( maximum > 1 ) {
714
- return l10n.selection_too_long_n.replace( '%d', maximum );
715
- }
716
- return l10n.selection_too_long_1;
717
- },
718
- noResults: function () {
719
- return l10n.matches_0;
720
- },
721
- searching: function () {
722
- return l10n.searching;
723
- }
724
- };
725
-
726
- // append
727
- jQuery.fn.select2.amd.define('select2/i18n/' + locale, [], function(){
728
- return select2L10n;
729
- });
730
- },
731
-
732
- addTranslations3: function(){
733
-
734
- // vars
735
- var l10n = acf.get('select2L10n');
736
- var locale = acf.get('locale');
737
-
738
- // modify local to match html[lang] attribute (used by Select2)
739
- locale = locale.replace('_', '-');
740
-
741
- // select2L10n
742
- var select2L10n = {
743
- formatMatches: function( matches ) {
744
- if( matches > 1 ) {
745
- return l10n.matches_n.replace( '%d', matches );
746
- }
747
- return l10n.matches_1;
748
- },
749
- formatNoMatches: function() {
750
- return l10n.matches_0;
751
- },
752
- formatAjaxError: function() {
753
- return l10n.load_fail;
754
- },
755
- formatInputTooShort: function( input, min ) {
756
- var remainingChars = min - input.length;
757
- if( remainingChars > 1 ) {
758
- return l10n.input_too_short_n.replace( '%d', remainingChars );
759
- }
760
- return l10n.input_too_short_1;
761
- },
762
- formatInputTooLong: function( input, max ) {
763
- var overChars = input.length - max;
764
- if( overChars > 1 ) {
765
- return l10n.input_too_long_n.replace( '%d', overChars );
766
- }
767
- return l10n.input_too_long_1;
768
- },
769
- formatSelectionTooBig: function( maximum ) {
770
- if( maximum > 1 ) {
771
- return l10n.selection_too_long_n.replace( '%d', maximum );
772
- }
773
- return l10n.selection_too_long_1;
774
- },
775
- formatLoadMore: function() {
776
- return l10n.load_more;
777
- },
778
- formatSearching: function() {
779
- return l10n.searching;
780
- }
781
- };
782
-
783
- // ensure locales exists
784
- $.fn.select2.locales = $.fn.select2.locales || {};
785
-
786
- // append
787
- $.fn.select2.locales[ locale ] = select2L10n;
788
- $.extend($.fn.select2.defaults, select2L10n);
789
- }
790
-
791
- });
792
-
793
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-tinymce.js DELETED
@@ -1,380 +0,0 @@
1
- (function($, undefined){
2
-
3
- acf.tinymce = {
4
-
5
- /*
6
- * defaults
7
- *
8
- * This function will return default mce and qt settings
9
- *
10
- * @type function
11
- * @date 18/8/17
12
- * @since 5.6.0
13
- *
14
- * @param $post_id (int)
15
- * @return $post_id (int)
16
- */
17
-
18
- defaults: function(){
19
-
20
- // bail early if no tinyMCEPreInit
21
- if( typeof tinyMCEPreInit === 'undefined' ) return false;
22
-
23
- // vars
24
- var defaults = {
25
- tinymce: tinyMCEPreInit.mceInit.acf_content,
26
- quicktags: tinyMCEPreInit.qtInit.acf_content
27
- };
28
-
29
- // return
30
- return defaults;
31
- },
32
-
33
-
34
- /*
35
- * initialize
36
- *
37
- * This function will initialize the tinymce and quicktags instances
38
- *
39
- * @type function
40
- * @date 18/8/17
41
- * @since 5.6.0
42
- *
43
- * @param $post_id (int)
44
- * @return $post_id (int)
45
- */
46
-
47
- initialize: function( id, args ){
48
-
49
- // defaults
50
- args = acf.parseArgs(args, {
51
- tinymce: true,
52
- quicktags: true,
53
- toolbar: 'full',
54
- mode: 'visual', // visual,text
55
- field: false
56
- });
57
-
58
- // tinymce
59
- if( args.tinymce ) {
60
- this.initializeTinymce( id, args );
61
- }
62
-
63
- // quicktags
64
- if( args.quicktags ) {
65
- this.initializeQuicktags( id, args );
66
- }
67
- },
68
-
69
-
70
- /*
71
- * initializeTinymce
72
- *
73
- * This function will initialize the tinymce instance
74
- *
75
- * @type function
76
- * @date 18/8/17
77
- * @since 5.6.0
78
- *
79
- * @param $post_id (int)
80
- * @return $post_id (int)
81
- */
82
-
83
- initializeTinymce: function( id, args ){
84
-
85
- // vars
86
- var $textarea = $('#'+id);
87
- var defaults = this.defaults();
88
- var toolbars = acf.get('toolbars');
89
- var field = args.field || false;
90
- var $field = field.$el || false;
91
-
92
- // bail early
93
- if( typeof tinymce === 'undefined' ) return false;
94
- if( !defaults ) return false;
95
-
96
- // check if exists
97
- if( tinymce.get(id) ) {
98
- return this.enable( id );
99
- }
100
-
101
- // settings
102
- var init = $.extend( {}, defaults.tinymce, args.tinymce );
103
- init.id = id;
104
- init.selector = '#' + id;
105
-
106
- // toolbar
107
- var toolbar = args.toolbar;
108
- if( toolbar && toolbars && toolbars[toolbar] ) {
109
-
110
- for( var i = 1; i <= 4; i++ ) {
111
- init[ 'toolbar' + i ] = toolbars[toolbar][i] || '';
112
- }
113
- }
114
-
115
- // event
116
- init.setup = function( ed ){
117
-
118
- ed.on('change', function(e) {
119
- ed.save(); // save to textarea
120
- $textarea.trigger('change');
121
- });
122
-
123
- $( ed.getWin() ).on('unload', function() {
124
- acf.tinymce.remove( id );
125
- });
126
-
127
- };
128
-
129
- // disable wp_autoresize_on (no solution yet for fixed toolbar)
130
- init.wp_autoresize_on = false;
131
-
132
- // hook for 3rd party customization
133
- init = acf.applyFilters('wysiwyg_tinymce_settings', init, id, field);
134
-
135
- // z-index fix (caused too many conflicts)
136
- //if( acf.isset(tinymce,'ui','FloatPanel') ) {
137
- // tinymce.ui.FloatPanel.zIndex = 900000;
138
- //}
139
-
140
- // store settings
141
- tinyMCEPreInit.mceInit[ id ] = init;
142
-
143
- // visual tab is active
144
- if( args.mode == 'visual' ) {
145
-
146
- // init
147
- var result = tinymce.init( init );
148
-
149
- // get editor
150
- var ed = tinymce.get( id );
151
-
152
- // validate
153
- if( !ed ) {
154
- return false;
155
- }
156
-
157
- // add reference
158
- ed.acf = args.field;
159
-
160
- // action
161
- acf.doAction('wysiwyg_tinymce_init', ed, ed.id, init, field);
162
- }
163
- },
164
-
165
- /*
166
- * initializeQuicktags
167
- *
168
- * This function will initialize the quicktags instance
169
- *
170
- * @type function
171
- * @date 18/8/17
172
- * @since 5.6.0
173
- *
174
- * @param $post_id (int)
175
- * @return $post_id (int)
176
- */
177
-
178
- initializeQuicktags: function( id, args ){
179
-
180
- // vars
181
- var defaults = this.defaults();
182
-
183
- // bail early
184
- if( typeof quicktags === 'undefined' ) return false;
185
- if( !defaults ) return false;
186
-
187
- // settings
188
- var init = $.extend( {}, defaults.quicktags, args.quicktags );
189
- init.id = id;
190
-
191
- // filter
192
- var field = args.field || false;
193
- var $field = field.$el || false;
194
- init = acf.applyFilters('wysiwyg_quicktags_settings', init, init.id, field);
195
-
196
- // store settings
197
- tinyMCEPreInit.qtInit[ id ] = init;
198
-
199
- // init
200
- var ed = quicktags( init );
201
-
202
- // validate
203
- if( !ed ) {
204
- return false;
205
- }
206
-
207
- // generate HTML
208
- this.buildQuicktags( ed );
209
-
210
- // action for 3rd party customization
211
- acf.doAction('wysiwyg_quicktags_init', ed, ed.id, init, field);
212
- },
213
-
214
-
215
- /*
216
- * buildQuicktags
217
- *
218
- * This function will build the quicktags HTML
219
- *
220
- * @type function
221
- * @date 18/8/17
222
- * @since 5.6.0
223
- *
224
- * @param $post_id (int)
225
- * @return $post_id (int)
226
- */
227
-
228
- buildQuicktags: function( ed ){
229
-
230
- var canvas, name, settings, theButtons, html, ed, id, i, use, instanceId,
231
- defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,';
232
-
233
- canvas = ed.canvas;
234
- name = ed.name;
235
- settings = ed.settings;
236
- html = '';
237
- theButtons = {};
238
- use = '';
239
- instanceId = ed.id;
240
-
241
- // set buttons
242
- if ( settings.buttons ) {
243
- use = ','+settings.buttons+',';
244
- }
245
-
246
- for ( i in edButtons ) {
247
- if ( ! edButtons[i] ) {
248
- continue;
249
- }
250
-
251
- id = edButtons[i].id;
252
- if ( use && defaults.indexOf( ',' + id + ',' ) !== -1 && use.indexOf( ',' + id + ',' ) === -1 ) {
253
- continue;
254
- }
255
-
256
- if ( ! edButtons[i].instance || edButtons[i].instance === instanceId ) {
257
- theButtons[id] = edButtons[i];
258
-
259
- if ( edButtons[i].html ) {
260
- html += edButtons[i].html( name + '_' );
261
- }
262
- }
263
- }
264
-
265
- if ( use && use.indexOf(',dfw,') !== -1 ) {
266
- theButtons.dfw = new QTags.DFWButton();
267
- html += theButtons.dfw.html( name + '_' );
268
- }
269
-
270
- if ( 'rtl' === document.getElementsByTagName( 'html' )[0].dir ) {
271
- theButtons.textdirection = new QTags.TextDirectionButton();
272
- html += theButtons.textdirection.html( name + '_' );
273
- }
274
-
275
- ed.toolbar.innerHTML = html;
276
- ed.theButtons = theButtons;
277
-
278
- if ( typeof jQuery !== 'undefined' ) {
279
- jQuery( document ).triggerHandler( 'quicktags-init', [ ed ] );
280
- }
281
-
282
- },
283
-
284
- disable: function( id ){
285
- this.destroyTinymce( id );
286
- },
287
-
288
- remove: function( id ){
289
- this.destroyTinymce( id );
290
- },
291
-
292
- destroy: function( id ){
293
- this.destroyTinymce( id );
294
- },
295
-
296
- destroyTinymce: function( id ){
297
-
298
- // bail early
299
- if( typeof tinymce === 'undefined' ) return false;
300
-
301
- // get editor
302
- var ed = tinymce.get( id );
303
-
304
- // bail early if no editor
305
- if( !ed ) return false;
306
-
307
- // save
308
- ed.save();
309
-
310
- // destroy editor
311
- ed.destroy();
312
-
313
- // return
314
- return true;
315
- },
316
-
317
- enable: function( id ){
318
- this.enableTinymce( id );
319
- },
320
-
321
- enableTinymce: function( id ){
322
-
323
- // bail early
324
- if( typeof switchEditors === 'undefined' ) return false;
325
-
326
- // bail ealry if not initialized
327
- if( typeof tinyMCEPreInit.mceInit[ id ] === 'undefined' ) return false;
328
-
329
- // toggle
330
- switchEditors.go( id, 'tmce');
331
-
332
- // return
333
- return true;
334
- }
335
- };
336
-
337
- var editorManager = new acf.Model({
338
-
339
- // hook in before fieldsEventManager, conditions, etc
340
- priority: 5,
341
-
342
- actions: {
343
- 'prepare': 'onPrepare',
344
- 'ready': 'onReady',
345
- },
346
- onPrepare: function(){
347
-
348
- // find hidden editor which may exist within a field
349
- var $div = $('#acf-hidden-wp-editor');
350
-
351
- // move to footer
352
- if( $div.exists() ) {
353
- $div.appendTo('body');
354
- }
355
- },
356
- onReady: function(){
357
-
358
- // bail early if no tinymce
359
- if( !acf.isset(window,'tinymce','on') ) return;
360
-
361
- // restore default activeEditor
362
- tinymce.on('AddEditor', function( data ){
363
-
364
- // vars
365
- var editor = data.editor;
366
-
367
- // bail early if not 'acf'
368
- if( editor.id.substr(0, 3) !== 'acf' ) return;
369
-
370
- // override if 'content' exists
371
- editor = tinymce.editors.content || editor;
372
-
373
- // update vars
374
- tinymce.activeEditor = editor;
375
- wpActiveEditor = editor.id;
376
- });
377
- }
378
- });
379
-
380
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-tooltip.js DELETED
@@ -1,323 +0,0 @@
1
- (function($, undefined){
2
-
3
- acf.newTooltip = function( props ){
4
-
5
- // ensure object
6
- if( typeof props !== 'object' ) {
7
- props = { text: props };
8
- }
9
-
10
- // confirmRemove
11
- if( props.confirmRemove !== undefined ) {
12
-
13
- props.textConfirm = acf.__('Remove');
14
- props.textCancel = acf.__('Cancel');
15
- return new TooltipConfirm( props );
16
-
17
- // confirm
18
- } else if( props.confirm !== undefined ) {
19
-
20
- return new TooltipConfirm( props );
21
-
22
- // default
23
- } else {
24
- return new Tooltip( props );
25
- }
26
-
27
- };
28
-
29
- var Tooltip = acf.Model.extend({
30
-
31
- data: {
32
- text: '',
33
- timeout: 0,
34
- target: null
35
- },
36
-
37
- tmpl: function(){
38
- return '<div class="acf-tooltip"></div>';
39
- },
40
-
41
- setup: function( props ){
42
- $.extend(this.data, props);
43
- this.$el = $(this.tmpl());
44
- },
45
-
46
- initialize: function(){
47
-
48
- // render
49
- this.render();
50
-
51
- // append
52
- this.show();
53
-
54
- // position
55
- this.position();
56
-
57
- // timeout
58
- var timeout = this.get('timeout');
59
- if( timeout ) {
60
- setTimeout( $.proxy(this.fade, this), timeout );
61
- }
62
- },
63
-
64
- update: function( props ){
65
- $.extend(this.data, props);
66
- this.initialize();
67
- },
68
-
69
- render: function(){
70
- this.html( this.get('text') );
71
- },
72
-
73
- show: function(){
74
- $('body').append( this.$el );
75
- },
76
-
77
- hide: function(){
78
- this.$el.remove();
79
- },
80
-
81
- fade: function(){
82
-
83
- // add class
84
- this.$el.addClass('acf-fade-up');
85
-
86
- // remove
87
- this.setTimeout(function(){
88
- this.remove();
89
- }, 250);
90
- },
91
-
92
- html: function( html ){
93
- this.$el.html( html );
94
- },
95
-
96
- position: function(){
97
-
98
- // vars
99
- var $tooltip = this.$el;
100
- var $target = this.get('target');
101
- if( !$target ) return;
102
-
103
- // reset class
104
- $tooltip.removeClass('right left bottom top');
105
-
106
- // position
107
- var tolerance = 10;
108
- var target_w = $target.outerWidth();
109
- var target_h = $target.outerHeight();
110
- var target_t = $target.offset().top;
111
- var target_l = $target.offset().left;
112
- var tooltip_w = $tooltip.outerWidth();
113
- var tooltip_h = $tooltip.outerHeight();
114
-
115
- // calculate top
116
- var top = target_t - tooltip_h;
117
- var left = target_l + (target_w / 2) - (tooltip_w / 2);
118
-
119
- // too far left
120
- if( left < tolerance ) {
121
-
122
- $tooltip.addClass('right');
123
- left = target_l + target_w;
124
- top = target_t + (target_h / 2) - (tooltip_h / 2);
125
-
126
- // too far right
127
- } else if( (left + tooltip_w + tolerance) > $(window).width() ) {
128
-
129
- $tooltip.addClass('left');
130
- left = target_l - tooltip_w;
131
- top = target_t + (target_h / 2) - (tooltip_h / 2);
132
-
133
- // too far top
134
- } else if( top - $(window).scrollTop() < tolerance ) {
135
-
136
- $tooltip.addClass('bottom');
137
- top = target_t + target_h;
138
-
139
- } else {
140
-
141
- $tooltip.addClass('top');
142
-
143
- }
144
-
145
- // update css
146
- $tooltip.css({ 'top': top, 'left': left });
147
- }
148
- });
149
-
150
- var TooltipConfirm = Tooltip.extend({
151
-
152
- data: {
153
- text: '',
154
- textConfirm: '',
155
- textCancel: '',
156
- target: null,
157
- targetConfirm: true,
158
- confirm: function(){},
159
- cancel: function(){},
160
- context: false
161
- },
162
-
163
- events: {
164
- 'click [data-event="cancel"]': 'onCancel',
165
- 'click [data-event="confirm"]': 'onConfirm',
166
- },
167
-
168
- addEvents: function(){
169
-
170
- // add events
171
- acf.Model.prototype.addEvents.apply(this);
172
-
173
- // vars
174
- var $document = $(document);
175
- var $target = this.get('target');
176
-
177
- // add global 'cancel' click event
178
- // - use timeout to avoid the current 'click' event triggering the onCancel function
179
- this.setTimeout(function(){
180
- this.on( $document, 'click', 'onCancel' );
181
- });
182
-
183
- // add target 'confirm' click event
184
- // - allow setting to control this feature
185
- if( this.get('targetConfirm') ) {
186
- this.on( $target, 'click', 'onConfirm' );
187
- }
188
- },
189
-
190
- removeEvents: function(){
191
-
192
- // remove events
193
- acf.Model.prototype.removeEvents.apply(this);
194
-
195
- // vars
196
- var $document = $(document);
197
- var $target = this.get('target');
198
-
199
- // remove custom events
200
- this.off( $document, 'click' );
201
- this.off( $target, 'click' );
202
- },
203
-
204
- render: function(){
205
-
206
- // defaults
207
- var text = this.get('text') || acf.__('Are you sure?');
208
- var textConfirm = this.get('textConfirm') || acf.__('Yes');
209
- var textCancel = this.get('textCancel') || acf.__('No');
210
-
211
- // html
212
- var html = [
213
- text,
214
- '<a href="#" data-event="confirm">' + textConfirm + '</a>',
215
- '<a href="#" data-event="cancel">' + textCancel + '</a>'
216
- ].join(' ');
217
-
218
- // html
219
- this.html( html );
220
-
221
- // class
222
- this.$el.addClass('-confirm');
223
- },
224
-
225
- onCancel: function( e, $el ){
226
-
227
- // prevent default
228
- e.preventDefault();
229
- e.stopImmediatePropagation();
230
-
231
- // callback
232
- var callback = this.get('cancel');
233
- var context = this.get('context') || this;
234
- callback.apply( context, arguments );
235
-
236
- //remove
237
- this.remove();
238
- },
239
-
240
- onConfirm: function( e, $el ){
241
-
242
- // prevent default
243
- e.preventDefault();
244
- e.stopImmediatePropagation();
245
-
246
- // callback
247
- var callback = this.get('confirm');
248
- var context = this.get('context') || this;
249
- callback.apply( context, arguments );
250
-
251
- //remove
252
- this.remove();
253
- }
254
- });
255
-
256
- // storage
257
- acf.models.Tooltip = Tooltip;
258
- acf.models.TooltipConfirm = TooltipConfirm;
259
-
260
-
261
- /**
262
- * tooltipManager
263
- *
264
- * description
265
- *
266
- * @date 17/4/18
267
- * @since 5.6.9
268
- *
269
- * @param type $var Description. Default.
270
- * @return type Description.
271
- */
272
-
273
- var tooltipHoverHelper = new acf.Model({
274
-
275
- tooltip: false,
276
-
277
- events: {
278
- 'mouseenter .acf-js-tooltip': 'showTitle',
279
- 'mouseup .acf-js-tooltip': 'hideTitle',
280
- 'mouseleave .acf-js-tooltip': 'hideTitle'
281
- },
282
-
283
- showTitle: function( e, $el ){
284
-
285
- // vars
286
- var title = $el.attr('title');
287
-
288
- // bail ealry if no title
289
- if( !title ) {
290
- return;
291
- }
292
-
293
- // clear title to avoid default browser tooltip
294
- $el.attr('title', '');
295
-
296
- // create
297
- if( !this.tooltip ) {
298
- this.tooltip = acf.newTooltip({
299
- text: title,
300
- target: $el
301
- });
302
-
303
- // update
304
- } else {
305
- this.tooltip.update({
306
- text: title,
307
- target: $el
308
- });
309
- }
310
-
311
- },
312
-
313
- hideTitle: function( e, $el ){
314
-
315
- // hide tooltip
316
- this.tooltip.hide();
317
-
318
- // restore title
319
- $el.attr('title', this.tooltip.get('text'));
320
- }
321
- });
322
-
323
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-unload.js DELETED
@@ -1,53 +0,0 @@
1
- (function($, undefined){
2
-
3
- acf.unload = new acf.Model({
4
-
5
- wait: 'load',
6
- active: true,
7
- changed: false,
8
-
9
- actions: {
10
- 'change_field': 'startListening',
11
- 'validation_failure': 'startListening'
12
- },
13
-
14
- events: {
15
- 'submit form': 'stopListening'
16
- },
17
-
18
- reset: function(){
19
- this.stopListening();
20
- },
21
-
22
- startListening: function(){
23
-
24
- // bail ealry if already changed, not active
25
- if( this.changed || !this.active ) {
26
- return;
27
- }
28
-
29
- // update
30
- this.changed = true;
31
-
32
- // add event
33
- $(window).on('beforeunload', this.onUnload);
34
-
35
- },
36
-
37
- stopListening: function(){
38
-
39
- // update
40
- this.changed = false;
41
-
42
- // remove event
43
- $(window).off('beforeunload', this.onUnload);
44
-
45
- },
46
-
47
- onUnload: function(){
48
- return acf.__('The changes you made will be lost if you navigate away from this page');
49
- }
50
-
51
- });
52
-
53
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf-validation.js DELETED
@@ -1,586 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * acf.validation
5
- *
6
- * Global validation logic
7
- *
8
- * @date 4/4/18
9
- * @since 5.6.9
10
- *
11
- * @param void
12
- * @return void
13
- */
14
-
15
- acf.validation = new acf.Model({
16
-
17
- // enable / disable validation logic
18
- active: true,
19
-
20
- // temp ignore flag allowing bypass of validation
21
- ignore: false,
22
-
23
- // errors
24
- errors: [],
25
-
26
- // active form
27
- form: false,
28
-
29
- // wait
30
- wait: 'prepare',
31
-
32
- actions: {
33
- 'ready': 'addInputEvents',
34
- 'append': 'addInputEvents'
35
- },
36
-
37
- events: {
38
- 'click input[type="submit"]': 'onClickSubmit',
39
- 'click button[type="submit"]': 'onClickSubmit',
40
- 'click #save-post': 'onClickSave',
41
- 'submit form': 'onSubmit',
42
- },
43
-
44
- initialize: function(){
45
-
46
- // load global setting
47
- if( !acf.get('validation') ) {
48
- this.disable();
49
- this.actions = {};
50
- this.events = {};
51
- }
52
- },
53
-
54
- getForm: function( $form ){
55
-
56
- // instantiate
57
- var form = $form.data('acf');
58
- if( !form ) {
59
- form = new Form( $form );
60
- }
61
-
62
- // store
63
- this.form = form;
64
-
65
- // return
66
- return form;
67
- },
68
-
69
- enable: function(){
70
- this.active = true;
71
- },
72
-
73
- disable: function(){
74
- this.active = false;
75
- },
76
-
77
- pass: function(){
78
- this.ignore = true;
79
- this.setTimeout(function(){
80
- this.ignore = false;
81
- }, 100);
82
- },
83
-
84
- reset: function(){
85
- this.ignore = false;
86
- this.errors = [];
87
- this.form = false;
88
- },
89
-
90
- getErrors: function(){
91
- return this.errors;
92
- },
93
-
94
- hasErrors: function(){
95
- return this.errors.length;
96
- },
97
-
98
- addErrors: function( errors ){
99
- errors.map( this.addError, this );
100
- },
101
-
102
- addError: function( error ){
103
- this.errors.push( error );
104
- },
105
-
106
- getFieldErrors: function(){
107
-
108
- // vars
109
- var errors = [];
110
- var inputs = [];
111
-
112
- // loop
113
- this.getErrors().map(function(error){
114
-
115
- // bail early if global
116
- if( !error.input ) return;
117
-
118
- // update if exists
119
- var i = inputs.indexOf(error.input);
120
- if( i > -1 ) {
121
- errors[ i ] = error;
122
-
123
- // update
124
- } else {
125
- errors.push( error );
126
- inputs.push( error.input );
127
- }
128
- });
129
-
130
- // return
131
- return errors;
132
- },
133
-
134
- getGlobalErrors: function(){
135
-
136
- // return array of errors that contain no input
137
- return this.getErrors().filter(function(error){
138
- return !error.input;
139
- });
140
- },
141
-
142
- showErrors: function( $form ){
143
-
144
- // bail early if no errors
145
- if( !this.hasErrors() ) {
146
- return;
147
- }
148
-
149
- // vars
150
- var form = this.getForm( $form );
151
- var fieldErrors = this.getFieldErrors();
152
- var globalErrors = this.getGlobalErrors();
153
-
154
- // vars
155
- var errorCount = 0;
156
- var $scrollTo = false;
157
-
158
- // loop
159
- fieldErrors.map(function( error ){
160
-
161
- // get input
162
- var $input = $form.find('[name="' + error.input + '"]').first();
163
-
164
- // if $_POST value was an array, this $input may not exist
165
- if( !$input.exists() ) {
166
- $input = $form.find('[name^="' + error.input + '"]').first();
167
- }
168
-
169
- // bail early if input doesn't exist
170
- if( !$input.exists() ) {
171
- return;
172
- }
173
-
174
- // increase
175
- errorCount++;
176
-
177
- // get field
178
- var field = acf.getClosestField( $input );
179
-
180
- // show error
181
- field.showError( error.message );
182
-
183
- // set $scrollTo
184
- if( !$scrollTo ) {
185
- $scrollTo = field.$el;
186
- }
187
- }, this);
188
-
189
- // errorMessage
190
- var errorMessage = acf.__('Validation failed');
191
- if( errorCount == 1 ) {
192
- errorMessage += '. ' + acf.__('1 field requires attention');
193
- } else if( errorCount > 1 ) {
194
- errorMessage += '. ' + acf.__('%d fields require attention').replace('%d', errorCount);
195
- }
196
-
197
- // notice
198
- if( form.notice ) {
199
- form.notice.update({
200
- type: 'error',
201
- text: errorMessage
202
- });
203
- } else {
204
- form.notice = acf.newNotice({
205
- type: 'error',
206
- text: errorMessage,
207
- target: $form
208
- });
209
- }
210
-
211
- // if no $scrollTo, set to message
212
- if( !$scrollTo ) {
213
- $scrollTo = form.notice.$el;
214
- }
215
-
216
- // timeout
217
- setTimeout(function(){
218
- $("html, body").animate({ scrollTop: $scrollTo.offset().top - ( $(window).height() / 2 ) }, 500);
219
- }, 10);
220
- },
221
-
222
- fetch: function( args ){
223
-
224
- // bail early if busy
225
- if( this.busy ) {
226
- return;
227
- }
228
-
229
- // set busy
230
- this.busy = 1;
231
-
232
- // vars
233
- args = acf.parseArgs(args, {
234
-
235
- // form element
236
- form: false,
237
-
238
- // trigger event
239
- event: false,
240
-
241
- // lock form on success
242
- lock: true,
243
-
244
- // loading callback
245
- loading: function(){},
246
-
247
- // complete callback
248
- complete: function(){},
249
-
250
- // failure callback
251
- failure: function(){},
252
-
253
- // success callback
254
- success: function( $form ){
255
- $form.submit();
256
- }
257
- });
258
-
259
- // vars
260
- var $form = args.form;
261
- var form = this.getForm( $form );
262
-
263
- // create event specific success callback
264
- if( args.event ) {
265
-
266
- // create new event to avoid conflicts with prevenDefault (as used in taxonomy form)
267
- var event = $.Event(null, args.event);
268
- args.success = function(){
269
- $(event.target).trigger( event );
270
- }
271
- }
272
-
273
- // action for 3rd party
274
- acf.doAction('validation_begin', $form);
275
-
276
- // data
277
- var data = acf.serialize( $form );
278
- data.action = 'acf/validate_save_post';
279
-
280
- // lock form
281
- this.lockForm( $form );
282
-
283
- // loading callback
284
- args.loading( $form );
285
-
286
- // success
287
- var onSuccess = function( json ){
288
-
289
- // validate
290
- if( !acf.isAjaxSuccess(json) ) {
291
- return;
292
- }
293
-
294
- // filter
295
- data = acf.applyFilters('validation_complete', json.data, $form);
296
-
297
- // add errors
298
- if( !data.valid ) {
299
- this.addErrors( data.errors );
300
- }
301
- };
302
-
303
- // complete
304
- var onComplete = function(){
305
-
306
- // set busy
307
- this.busy = 0;
308
-
309
- // unlock form
310
- this.unlockForm( $form );
311
-
312
- // failure
313
- if( this.hasErrors() ) {
314
-
315
- // action
316
- acf.doAction('validation_failure', $form);
317
-
318
- // display errors
319
- this.showErrors( $form );
320
-
321
- // failure callback
322
- args.failure( $form );
323
-
324
- // success
325
- } else {
326
-
327
- // allow for to pass
328
- this.pass();
329
-
330
- // remove previous error message
331
- if( form.notice ) {
332
- form.notice.update({
333
- type: 'success',
334
- text: acf.__('Validation successful'),
335
- timeout: 1000
336
- });
337
- }
338
-
339
- // action
340
- acf.doAction('validation_success', $form);
341
- acf.doAction('submit', $form);
342
-
343
- // success callback (submit form)
344
- args.success( $form );
345
-
346
- // lock form
347
- if( args.lock ) {
348
- this.lockForm( $form );
349
- }
350
- }
351
-
352
- // reset
353
- this.reset();
354
-
355
- // complete callback
356
- args.complete( $form );
357
- };
358
-
359
- // ajax
360
- $.ajax({
361
- url: acf.get('ajaxurl'),
362
- data: acf.prepareForAjax(data),
363
- type: 'post',
364
- dataType: 'json',
365
- context: this,
366
- success: onSuccess,
367
- complete: onComplete
368
- });
369
- },
370
-
371
- addInputEvents: function( $el ){
372
-
373
- // vars
374
- var $inputs = $('.acf-field [name]', $el);
375
-
376
- // check
377
- if( $inputs.length ) {
378
- this.on( $inputs, 'invalid', 'onInvalid' );
379
- }
380
- },
381
-
382
- onInvalid: function( e, $el ){
383
-
384
- // vars
385
- var $form = $el.closest('form');
386
-
387
- // add error
388
- this.addError({
389
- input: $el.attr('name'),
390
- message: e.target.validationMessage
391
- });
392
-
393
- // prevent default
394
- // - prevents browser error message
395
- // - also fixes chrome bug where 'hidden-by-tab' field throws focus error
396
- e.preventDefault();
397
-
398
- // trigger submit on $form
399
- // - allows for "save", "preview" and "publish" to work
400
- $form.submit();
401
- },
402
-
403
- onClickSubmit: function( e, $el ){
404
-
405
- // store the "click event" for later use in this.onSubmit()
406
- this.set('originalEvent', e);
407
- },
408
-
409
- onClickSave: function( e, $el ) {
410
-
411
- // ignore errors when saving
412
- this.pass();
413
- },
414
-
415
- onSubmit: function( e, $form ){
416
-
417
- // validate
418
- var valid = acf.validateForm({
419
- form: $form,
420
- event: this.get('originalEvent')
421
- });
422
-
423
- // if not valid, stop event and allow validation to continue
424
- if( !valid ) {
425
- e.preventDefault();
426
- }
427
- },
428
-
429
- showSpinner: function( $spinner ){
430
- $spinner.addClass('is-active'); // add class (WP > 4.2)
431
- $spinner.css('display', 'inline-block'); // css (WP < 4.2)
432
- },
433
-
434
- hideSpinner: function( $spinner ){
435
- $spinner.removeClass('is-active'); // add class (WP > 4.2)
436
- $spinner.css('display', 'none'); // css (WP < 4.2)
437
- },
438
-
439
- disableSubmit: function( $submit ){
440
- $submit.prop('disabled', true).addClass('disabled');
441
- },
442
-
443
- enableSubmit: function( $submit ){
444
- $submit.prop('disabled', false).removeClass('disabled');
445
- },
446
-
447
- findSubmitWrap: function( $form ){
448
-
449
- // default post submit div
450
- var $wrap = $('#submitdiv');
451
- if( $wrap.length ) {
452
- return $wrap;
453
- }
454
-
455
- // 3rd party publish box
456
- var $wrap = $('#submitpost');
457
- if( $wrap.length ) {
458
- return $wrap;
459
- }
460
-
461
- // term, user
462
- var $wrap = $form.find('p.submit').last();
463
- if( $wrap.length ) {
464
- return $wrap;
465
- }
466
-
467
- // front end form
468
- var $wrap = $form.find('.acf-form-submit');
469
- if( $wrap.length ) {
470
- return $wrap;
471
- }
472
-
473
- // default
474
- return $form;
475
- },
476
-
477
- lockForm: function( $form ){
478
-
479
- // vars
480
- var $wrap = this.findSubmitWrap( $form );
481
- var $submit = $wrap.find('.button, [type="submit"]');
482
- var $spinner = $wrap.find('.spinner, .acf-spinner');
483
-
484
- // hide all spinners (hides the preview spinner)
485
- this.hideSpinner( $spinner );
486
-
487
- // lock
488
- this.disableSubmit( $submit );
489
- this.showSpinner( $spinner.last() );
490
- },
491
-
492
- unlockForm: function( $form ){
493
-
494
- // vars
495
- var $wrap = this.findSubmitWrap( $form );
496
- var $submit = $wrap.find('.button, [type="submit"]');
497
- var $spinner = $wrap.find('.spinner, .acf-spinner');
498
-
499
- // unlock
500
- this.enableSubmit( $submit );
501
- this.hideSpinner( $spinner );
502
- }
503
-
504
- });
505
-
506
- /**
507
- * Form
508
- *
509
- * description
510
- *
511
- * @date 5/4/18
512
- * @since 5.6.9
513
- *
514
- * @param type $var Description. Default.
515
- * @return type Description.
516
- */
517
-
518
- var Form = acf.Model.extend({
519
- notice: false,
520
- setup: function( $form ){
521
- this.$el = $form;
522
- },
523
- lock: function(){
524
- acf.validation.lockForm( this.$el );
525
- },
526
- unlock: function(){
527
- acf.validation.unlockForm( this.$el );
528
- }
529
- });
530
-
531
- /**
532
- * acf.validateForm
533
- *
534
- * description
535
- *
536
- * @date 4/4/18
537
- * @since 5.6.9
538
- *
539
- * @param type $var Description. Default.
540
- * @return type Description.
541
- */
542
-
543
- acf.validateForm = function( args ){
544
-
545
- // bail early if no form
546
- // - return true allowing form submit
547
- if( !args.form ) {
548
- return true;
549
- }
550
-
551
- // get form
552
- var form = acf.validation.getForm( args.form );
553
-
554
- // bail early if not active
555
- // - return true allowing form submit
556
- if( !acf.validation.active ) {
557
- return true;
558
- }
559
-
560
- // bail early if ignore
561
- // - return true allowing form submit
562
- if( acf.validation.ignore ) {
563
- return true;
564
- }
565
-
566
- // bail early if is preview
567
- // - return true allowing form submit
568
- if( form.$('#wp-preview').val() ) {
569
- form.unlock();
570
- return true;
571
- }
572
-
573
- // bail early if this form does not contain ACF data
574
- // - return true allowing form submit
575
- if( !form.$('#acf-form-data').length ) {
576
- return true;
577
- }
578
-
579
- // validate
580
- acf.validation.fetch( args );
581
-
582
- // return false preventing form submit
583
- return false;
584
- };
585
-
586
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/acf.js DELETED
@@ -1,2192 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * acf
5
- *
6
- * description
7
- *
8
- * @date 14/12/17
9
- * @since 5.6.5
10
- *
11
- * @param type $var Description. Default.
12
- * @return type Description.
13
- */
14
-
15
- // The global acf object
16
- var acf = {};
17
-
18
- // Set as a browser global
19
- window.acf = acf;
20
-
21
- /** @var object Data sent from PHP */
22
- acf.data = {};
23
-
24
-
25
- /**
26
- * get
27
- *
28
- * Gets a specific data value
29
- *
30
- * @date 14/12/17
31
- * @since 5.6.5
32
- *
33
- * @param string name
34
- * @return mixed
35
- */
36
-
37
- acf.get = function( name ){
38
- return this.data[name] || null;
39
- };
40
-
41
-
42
- /**
43
- * has
44
- *
45
- * Returns `true` if the data exists and is not null
46
- *
47
- * @date 14/12/17
48
- * @since 5.6.5
49
- *
50
- * @param string name
51
- * @return boolean
52
- */
53
-
54
- acf.has = function( name ){
55
- return this.get(name) !== null;
56
- };
57
-
58
-
59
- /**
60
- * set
61
- *
62
- * Sets a specific data value
63
- *
64
- * @date 14/12/17
65
- * @since 5.6.5
66
- *
67
- * @param string name
68
- * @param mixed value
69
- * @return this
70
- */
71
-
72
- acf.set = function( name, value ){
73
- this.data[ name ] = value;
74
- return this;
75
- };
76
-
77
-
78
- /**
79
- * uniqueId
80
- *
81
- * Returns a unique ID
82
- *
83
- * @date 9/11/17
84
- * @since 5.6.3
85
- *
86
- * @param string prefix Optional prefix.
87
- * @return string
88
- */
89
-
90
- var idCounter = 0;
91
- acf.uniqueId = function(prefix){
92
- var id = ++idCounter + '';
93
- return prefix ? prefix + id : id;
94
- };
95
-
96
- /**
97
- * acf.uniqueArray
98
- *
99
- * Returns a new array with only unique values
100
- * Credit: https://stackoverflow.com/questions/1960473/get-all-unique-values-in-an-array-remove-duplicates
101
- *
102
- * @date 23/3/18
103
- * @since 5.6.9
104
- *
105
- * @param type $var Description. Default.
106
- * @return type Description.
107
- */
108
-
109
- acf.uniqueArray = function( array ){
110
- function onlyUnique(value, index, self) {
111
- return self.indexOf(value) === index;
112
- }
113
- return array.filter( onlyUnique );
114
- };
115
-
116
- /**
117
- * uniqid
118
- *
119
- * Returns a unique ID (PHP version)
120
- *
121
- * @date 9/11/17
122
- * @since 5.6.3
123
- * @source http://locutus.io/php/misc/uniqid/
124
- *
125
- * @param string prefix Optional prefix.
126
- * @return string
127
- */
128
-
129
- var uniqidSeed = '';
130
- acf.uniqid = function(prefix, moreEntropy){
131
- // discuss at: http://locutus.io/php/uniqid/
132
- // original by: Kevin van Zonneveld (http://kvz.io)
133
- // revised by: Kankrelune (http://www.webfaktory.info/)
134
- // note 1: Uses an internal counter (in locutus global) to avoid collision
135
- // example 1: var $id = uniqid()
136
- // example 1: var $result = $id.length === 13
137
- // returns 1: true
138
- // example 2: var $id = uniqid('foo')
139
- // example 2: var $result = $id.length === (13 + 'foo'.length)
140
- // returns 2: true
141
- // example 3: var $id = uniqid('bar', true)
142
- // example 3: var $result = $id.length === (23 + 'bar'.length)
143
- // returns 3: true
144
- if (typeof prefix === 'undefined') {
145
- prefix = '';
146
- }
147
-
148
- var retId;
149
- var formatSeed = function(seed, reqWidth) {
150
- seed = parseInt(seed, 10).toString(16); // to hex str
151
- if (reqWidth < seed.length) { // so long we split
152
- return seed.slice(seed.length - reqWidth);
153
- }
154
- if (reqWidth > seed.length) { // so short we pad
155
- return Array(1 + (reqWidth - seed.length)).join('0') + seed;
156
- }
157
- return seed;
158
- };
159
-
160
- if (!uniqidSeed) { // init seed with big random int
161
- uniqidSeed = Math.floor(Math.random() * 0x75bcd15);
162
- }
163
- uniqidSeed++;
164
-
165
- retId = prefix; // start with prefix, add current milliseconds hex string
166
- retId += formatSeed(parseInt(new Date().getTime() / 1000, 10), 8);
167
- retId += formatSeed(uniqidSeed, 5); // add seed hex string
168
- if (moreEntropy) {
169
- // for more entropy we add a float lower to 10
170
- retId += (Math.random() * 10).toFixed(8).toString();
171
- }
172
-
173
- return retId;
174
- };
175
-
176
-
177
- /**
178
- * strReplace
179
- *
180
- * Performs a string replace
181
- *
182
- * @date 14/12/17
183
- * @since 5.6.5
184
- *
185
- * @param string search
186
- * @param string replace
187
- * @param string subject
188
- * @return string
189
- */
190
-
191
- acf.strReplace = function( search, replace, subject ){
192
- return subject.split(search).join(replace);
193
- };
194
-
195
-
196
- /**
197
- * strCamelCase
198
- *
199
- * Converts a string into camelCase
200
- * Thanks to https://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case
201
- *
202
- * @date 14/12/17
203
- * @since 5.6.5
204
- *
205
- * @param string str
206
- * @return string
207
- */
208
-
209
- acf.strCamelCase = function( str ){
210
-
211
- // replace [_-] characters with space
212
- str = str.replace(/[_-]/g, ' ');
213
-
214
- // camelCase
215
- str = str.replace(/(?:^\w|\b\w|\s+)/g, function(match, index) {
216
- if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces
217
- return index == 0 ? match.toLowerCase() : match.toUpperCase();
218
- });
219
-
220
- // return
221
- return str;
222
- };
223
-
224
- /**
225
- * strPascalCase
226
- *
227
- * Converts a string into PascalCase
228
- * Thanks to https://stackoverflow.com/questions/1026069/how-do-i-make-the-first-letter-of-a-string-uppercase-in-javascript
229
- *
230
- * @date 14/12/17
231
- * @since 5.6.5
232
- *
233
- * @param string str
234
- * @return string
235
- */
236
-
237
- acf.strPascalCase = function( str ){
238
- var camel = acf.strCamelCase( str );
239
- return camel.charAt(0).toUpperCase() + camel.slice(1);
240
- };
241
-
242
- /**
243
- * acf.strSlugify
244
- *
245
- * Converts a string into a HTML class friendly slug
246
- *
247
- * @date 21/3/18
248
- * @since 5.6.9
249
- *
250
- * @param string str
251
- * @return string
252
- */
253
-
254
- acf.strSlugify = function( str ){
255
- return acf.strReplace( '_', '-', str.toLowerCase() );
256
- };
257
-
258
-
259
- acf.strSanitize = function( str ){
260
-
261
- // chars (https://jsperf.com/replace-foreign-characters)
262
- var map = {
263
- "À": "A",
264
- "Á": "A",
265
- "Â": "A",
266
- "Ã": "A",
267
- "Ä": "A",
268
- "Å": "A",
269
- "Æ": "AE",
270
- "Ç": "C",
271
- "È": "E",
272
- "É": "E",
273
- "Ê": "E",
274
- "Ë": "E",
275
- "Ì": "I",
276
- "Í": "I",
277
- "Î": "I",
278
- "Ï": "I",
279
- "Ð": "D",
280
- "Ñ": "N",
281
- "Ò": "O",
282
- "Ó": "O",
283
- "Ô": "O",
284
- "Õ": "O",
285
- "Ö": "O",
286
- "Ø": "O",
287
- "Ù": "U",
288
- "Ú": "U",
289
- "Û": "U",
290
- "Ü": "U",
291
- "Ý": "Y",
292
- "ß": "s",
293
- "à": "a",
294
- "á": "a",
295
- "â": "a",
296
- "ã": "a",
297
- "ä": "a",
298
- "å": "a",
299
- "æ": "ae",
300
- "ç": "c",
301
- "è": "e",
302
- "é": "e",
303
- "ê": "e",
304
- "ë": "e",
305
- "ì": "i",
306
- "í": "i",
307
- "î": "i",
308
- "ï": "i",
309
- "ñ": "n",
310
- "ò": "o",
311
- "ó": "o",
312
- "ô": "o",
313
- "õ": "o",
314
- "ö": "o",
315
- "ø": "o",
316
- "ù": "u",
317
- "ú": "u",
318
- "û": "u",
319
- "ü": "u",
320
- "ý": "y",
321
- "ÿ": "y",
322
- "Ā": "A",
323
- "ā": "a",
324
- "Ă": "A",
325
- "ă": "a",
326
- "Ą": "A",
327
- "ą": "a",
328
- "Ć": "C",
329
- "ć": "c",
330
- "Ĉ": "C",
331
- "ĉ": "c",
332
- "Ċ": "C",
333
- "ċ": "c",
334
- "Č": "C",
335
- "č": "c",
336
- "Ď": "D",
337
- "ď": "d",
338
- "Đ": "D",
339
- "đ": "d",
340
- "Ē": "E",
341
- "ē": "e",
342
- "Ĕ": "E",
343
- "ĕ": "e",
344
- "Ė": "E",
345
- "ė": "e",
346
- "Ę": "E",
347
- "ę": "e",
348
- "Ě": "E",
349
- "ě": "e",
350
- "Ĝ": "G",
351
- "ĝ": "g",
352
- "Ğ": "G",
353
- "ğ": "g",
354
- "Ġ": "G",
355
- "ġ": "g",
356
- "Ģ": "G",
357
- "ģ": "g",
358
- "Ĥ": "H",
359
- "ĥ": "h",
360
- "Ħ": "H",
361
- "ħ": "h",
362
- "Ĩ": "I",
363
- "ĩ": "i",
364
- "Ī": "I",
365
- "ī": "i",
366
- "Ĭ": "I",
367
- "ĭ": "i",
368
- "Į": "I",
369
- "į": "i",
370
- "İ": "I",
371
- "ı": "i",
372
- "IJ": "IJ",
373
- "ij": "ij",
374
- "Ĵ": "J",
375
- "ĵ": "j",
376
- "Ķ": "K",
377
- "ķ": "k",
378
- "Ĺ": "L",
379
- "ĺ": "l",
380
- "Ļ": "L",
381
- "ļ": "l",
382
- "Ľ": "L",
383
- "ľ": "l",
384
- "Ŀ": "L",
385
- "ŀ": "l",
386
- "Ł": "l",
387
- "ł": "l",
388
- "Ń": "N",
389
- "ń": "n",
390
- "Ņ": "N",
391
- "ņ": "n",
392
- "Ň": "N",
393
- "ň": "n",
394
- "ʼn": "n",
395
- "Ō": "O",
396
- "ō": "o",
397
- "Ŏ": "O",
398
- "ŏ": "o",
399
- "Ő": "O",
400
- "ő": "o",
401
- "Œ": "OE",
402
- "œ": "oe",
403
- "Ŕ": "R",
404
- "ŕ": "r",
405
- "Ŗ": "R",
406
- "ŗ": "r",
407
- "Ř": "R",
408
- "ř": "r",
409
- "Ś": "S",
410
- "ś": "s",
411
- "Ŝ": "S",
412
- "ŝ": "s",
413
- "Ş": "S",
414
- "ş": "s",
415
- "Š": "S",
416
- "š": "s",
417
- "Ţ": "T",
418
- "ţ": "t",
419
- "Ť": "T",
420
- "ť": "t",
421
- "Ŧ": "T",
422
- "ŧ": "t",
423
- "Ũ": "U",
424
- "ũ": "u",
425
- "Ū": "U",
426
- "ū": "u",
427
- "Ŭ": "U",
428
- "ŭ": "u",
429
- "Ů": "U",
430
- "ů": "u",
431
- "Ű": "U",
432
- "ű": "u",
433
- "Ų": "U",
434
- "ų": "u",
435
- "Ŵ": "W",
436
- "ŵ": "w",
437
- "Ŷ": "Y",
438
- "ŷ": "y",
439
- "Ÿ": "Y",
440
- "Ź": "Z",
441
- "ź": "z",
442
- "Ż": "Z",
443
- "ż": "z",
444
- "Ž": "Z",
445
- "ž": "z",
446
- "ſ": "s",
447
- "ƒ": "f",
448
- "Ơ": "O",
449
- "ơ": "o",
450
- "Ư": "U",
451
- "ư": "u",
452
- "Ǎ": "A",
453
- "ǎ": "a",
454
- "Ǐ": "I",
455
- "ǐ": "i",
456
- "Ǒ": "O",
457
- "ǒ": "o",
458
- "Ǔ": "U",
459
- "ǔ": "u",
460
- "Ǖ": "U",
461
- "ǖ": "u",
462
- "Ǘ": "U",
463
- "ǘ": "u",
464
- "Ǚ": "U",
465
- "ǚ": "u",
466
- "Ǜ": "U",
467
- "ǜ": "u",
468
- "Ǻ": "A",
469
- "ǻ": "a",
470
- "Ǽ": "AE",
471
- "ǽ": "ae",
472
- "Ǿ": "O",
473
- "ǿ": "o",
474
-
475
- // extra
476
- ' ': '_',
477
- "'": '',
478
- '?': '',
479
- '/': '',
480
- '\\': '',
481
- '.': '',
482
- ',': '',
483
- '`': '',
484
- '>': '',
485
- '<': '',
486
- '"': '',
487
- '[': '',
488
- ']': '',
489
- '|': '',
490
- '{': '',
491
- '}': '',
492
- '(': '',
493
- ')': ''
494
- };
495
-
496
- // vars
497
- var nonWord = /\W/g;
498
- var mapping = function (c) {
499
- return (map[c] !== undefined) ? map[c] : c;
500
- };
501
-
502
- // replace
503
- str = str.replace(nonWord, mapping);
504
-
505
- // lowercase
506
- str = str.toLowerCase();
507
-
508
- // return
509
- return str;
510
- };
511
-
512
- /**
513
- * acf.strMatch
514
- *
515
- * Returns the number of characters that match between two strings
516
- *
517
- * @date 1/2/18
518
- * @since 5.6.5
519
- *
520
- * @param type $var Description. Default.
521
- * @return type Description.
522
- */
523
-
524
- acf.strMatch = function( s1, s2 ){
525
-
526
- // vars
527
- var val = 0;
528
- var min = Math.min( s1.length, s2.length );
529
-
530
- // loop
531
- for( var i = 0; i < min; i++ ) {
532
- if( s1[i] !== s2[i] ) {
533
- break;
534
- }
535
- val++;
536
- }
537
-
538
- // return
539
- return val;
540
- };
541
-
542
- /**
543
- * acf.decode
544
- *
545
- * description
546
- *
547
- * @date 13/1/18
548
- * @since 5.6.5
549
- *
550
- * @param type $var Description. Default.
551
- * @return type Description.
552
- */
553
-
554
- acf.decode = function( string ){
555
- return $('<textarea/>').html( string ).text();
556
- };
557
-
558
- /**
559
- * acf.strEscape
560
- *
561
- * description
562
- *
563
- * @date 3/2/18
564
- * @since 5.6.5
565
- *
566
- * @param type $var Description. Default.
567
- * @return type Description.
568
- */
569
-
570
- acf.strEscape = function( string ){
571
-
572
- var entityMap = {
573
- '&': '&amp;',
574
- '<': '&lt;',
575
- '>': '&gt;',
576
- '"': '&quot;',
577
- "'": '&#39;',
578
- '/': '&#x2F;',
579
- '`': '&#x60;',
580
- '=': '&#x3D;'
581
- };
582
-
583
- return String(string).replace(/[&<>"'`=\/]/g, function (s) {
584
- return entityMap[s];
585
- });
586
- };
587
-
588
- /**
589
- * parseArgs
590
- *
591
- * Merges together defaults and args much like the WP wp_parse_args function
592
- *
593
- * @date 14/12/17
594
- * @since 5.6.5
595
- *
596
- * @param object args
597
- * @param object defaults
598
- * @return object
599
- */
600
-
601
- acf.parseArgs = function( args, defaults ){
602
- if( typeof args !== 'object' ) args = {};
603
- if( typeof defaults !== 'object' ) defaults = {};
604
- return $.extend({}, defaults, args);
605
- }
606
-
607
- /**
608
- * __
609
- *
610
- * Retrieve the translation of $text.
611
- *
612
- * @date 16/4/18
613
- * @since 5.6.9
614
- *
615
- * @param string text Text to translate.
616
- * @return string Translated text.
617
- */
618
-
619
- if( window.acfL10n == undefined ) {
620
- acfL10n = {};
621
- }
622
-
623
- acf.__ = function( text ){
624
- return acfL10n[ text ] || text;
625
- };
626
-
627
- /**
628
- * _x
629
- *
630
- * Retrieve translated string with gettext context.
631
- *
632
- * @date 16/4/18
633
- * @since 5.6.9
634
- *
635
- * @param string text Text to translate.
636
- * @param string context Context information for the translators.
637
- * @return string Translated text.
638
- */
639
-
640
- acf._x = function( text, context ){
641
- return acfL10n[ text + '.' + context ] || acfL10n[ text ] || text;
642
- };
643
-
644
- /**
645
- * _n
646
- *
647
- * Retrieve the plural or single form based on the amount.
648
- *
649
- * @date 16/4/18
650
- * @since 5.6.9
651
- *
652
- * @param string single Single text to translate.
653
- * @param string plural Plural text to translate.
654
- * @param int number The number to compare against.
655
- * @return string Translated text.
656
- */
657
-
658
- acf._n = function( single, plural, number ){
659
- if( number == 1 ) {
660
- return acf.__(single);
661
- } else {
662
- return acf.__(plural);
663
- }
664
- };
665
-
666
- acf.isArray = function( a ){
667
- return Array.isArray(a);
668
- };
669
-
670
- acf.isObject = function( a ){
671
- return ( typeof a === 'object' );
672
- }
673
-
674
- /**
675
- * serialize
676
- *
677
- * description
678
- *
679
- * @date 24/12/17
680
- * @since 5.6.5
681
- *
682
- * @param type $var Description. Default.
683
- * @return type Description.
684
- */
685
-
686
- var buildObject = function( obj, name, value ){
687
-
688
- // replace [] with placeholder
689
- name = name.replace('[]', '[%%index%%]');
690
-
691
- // vars
692
- var keys = name.match(/([^\[\]])+/g);
693
- if( !keys ) return;
694
- var length = keys.length;
695
- var ref = obj;
696
-
697
- // loop
698
- for( var i = 0; i < length; i++ ) {
699
-
700
- // vars
701
- var key = String( keys[i] );
702
-
703
- // value
704
- if( i == length - 1 ) {
705
-
706
- // %%index%%
707
- if( key === '%%index%%' ) {
708
- ref.push( value );
709
-
710
- // default
711
- } else {
712
- ref[ key ] = value;
713
- }
714
-
715
- // path
716
- } else {
717
-
718
- // array
719
- if( keys[i+1] === '%%index%%' ) {
720
- if( !acf.isArray(ref[ key ]) ) {
721
- ref[ key ] = [];
722
- }
723
-
724
- // object
725
- } else {
726
- if( !acf.isObject(ref[ key ]) ) {
727
- ref[ key ] = {};
728
- }
729
- }
730
-
731
- // crawl
732
- ref = ref[ key ];
733
- }
734
- }
735
- };
736
-
737
- acf.serialize = function( $el, prefix ){
738
-
739
- // vars
740
- var obj = {};
741
- var inputs = acf.serializeArray( $el );
742
-
743
- // prefix
744
- if( prefix !== undefined ) {
745
-
746
- // filter and modify
747
- inputs = inputs.filter(function( item ){
748
- return item.name.indexOf(prefix) === 0;
749
- }).map(function( item ){
750
- item.name = item.name.slice(prefix.length);
751
- return item;
752
- });
753
- }
754
-
755
- // loop
756
- for( var i = 0; i < inputs.length; i++ ) {
757
- buildObject( obj, inputs[i].name, inputs[i].value );
758
- }
759
-
760
- // return
761
- return obj;
762
- };
763
-
764
- /**
765
- * acf.serializeArray
766
- *
767
- * Similar to $.serializeArray() but works with a parent wrapping element.
768
- *
769
- * @date 19/8/18
770
- * @since 5.7.3
771
- *
772
- * @param jQuery $el The element or form to serialize.
773
- * @return array
774
- */
775
-
776
- acf.serializeArray = function( $el ){
777
- return $el.find('select, textarea, input').serializeArray();
778
- }
779
-
780
-
781
- /**
782
- * acf.serializeAjax
783
- *
784
- * Returns an object containing name => value data ready to be encoded for Ajax.
785
- *
786
- * @date 15/8/18
787
- * @since 5.7.3
788
- *
789
- * @param jQUery $el The element or form to serialize.
790
- * @param string prefix The input prefix to scope to.
791
- * @return object
792
- */
793
-
794
- /*
795
- acf.serializeAjax = function( $el, prefix ){
796
-
797
- // vars
798
- var data = {};
799
- var index = {};
800
- var inputs = $el.find('select, textarea, input').serializeArray();
801
-
802
- // remove prefix
803
- if( prefix !== undefined ) {
804
-
805
- // filter and modify
806
- inputs = inputs.filter(function( item ){
807
- return item.name.indexOf(prefix) === 0;
808
- }).map(function( item ){
809
-
810
- // remove prefix from name
811
- item.name = item.name.slice(prefix.length);
812
-
813
- // fix [foo][bar] to foo[bar]
814
- if( item.name.slice(0, 1) == '[' ) {
815
- item.name = item.name.slice(1).replace(']', '');
816
- }
817
- return item;
818
- });
819
- }
820
-
821
- // build object
822
- inputs.map(function( item ){
823
-
824
- // fix foo[] to foo[0], foo[1], etc
825
- if( item.name.slice(-2) === '[]' ) {
826
-
827
- // ensure index exists
828
- index[ item.name ] = index[ item.name ] || 0;
829
- index[ item.name ]++;
830
-
831
- // replace [] with [0]
832
- item.name = item.name.replace('[]', '[' + (index[ item.name ]-1) + ']');
833
- }
834
-
835
- // append to data
836
- data[ item.name ] = item.value;
837
- });
838
-
839
- // return
840
- return data;
841
- };
842
- */
843
-
844
- /**
845
- * addAction
846
- *
847
- * Wrapper for acf.hooks.addAction
848
- *
849
- * @date 14/12/17
850
- * @since 5.6.5
851
- *
852
- * @param n/a
853
- * @return this
854
- */
855
-
856
- /*
857
- var prefixAction = function( action ){
858
- return 'acf_' + action;
859
- }
860
- */
861
-
862
- acf.addAction = function( action, callback, priority, context ){
863
- //action = prefixAction(action);
864
- acf.hooks.addAction.apply(this, arguments);
865
- return this;
866
- };
867
-
868
-
869
- /**
870
- * removeAction
871
- *
872
- * Wrapper for acf.hooks.removeAction
873
- *
874
- * @date 14/12/17
875
- * @since 5.6.5
876
- *
877
- * @param n/a
878
- * @return this
879
- */
880
-
881
- acf.removeAction = function( action, callback ){
882
- //action = prefixAction(action);
883
- acf.hooks.removeAction.apply(this, arguments);
884
- return this;
885
- };
886
-
887
-
888
- /**
889
- * doAction
890
- *
891
- * Wrapper for acf.hooks.doAction
892
- *
893
- * @date 14/12/17
894
- * @since 5.6.5
895
- *
896
- * @param n/a
897
- * @return this
898
- */
899
-
900
- var actionHistory = {};
901
- //var currentAction = false;
902
- acf.doAction = function( action ){
903
- //action = prefixAction(action);
904
- //currentAction = action;
905
- actionHistory[ action ] = 1;
906
- acf.hooks.doAction.apply(this, arguments);
907
- actionHistory[ action ] = 0;
908
- return this;
909
- };
910
-
911
-
912
- /**
913
- * doingAction
914
- *
915
- * Return true if doing action
916
- *
917
- * @date 14/12/17
918
- * @since 5.6.5
919
- *
920
- * @param n/a
921
- * @return this
922
- */
923
-
924
- acf.doingAction = function( action ){
925
- //action = prefixAction(action);
926
- return (actionHistory[ action ] === 1);
927
- };
928
-
929
-
930
- /**
931
- * didAction
932
- *
933
- * Wrapper for acf.hooks.doAction
934
- *
935
- * @date 14/12/17
936
- * @since 5.6.5
937
- *
938
- * @param n/a
939
- * @return this
940
- */
941
-
942
- acf.didAction = function( action ){
943
- //action = prefixAction(action);
944
- return (actionHistory[ action ] !== undefined);
945
- };
946
-
947
- /**
948
- * currentAction
949
- *
950
- * Wrapper for acf.hooks.doAction
951
- *
952
- * @date 14/12/17
953
- * @since 5.6.5
954
- *
955
- * @param n/a
956
- * @return this
957
- */
958
-
959
- acf.currentAction = function(){
960
- for( var k in actionHistory ) {
961
- if( actionHistory[k] ) {
962
- return k;
963
- }
964
- }
965
- return false;
966
- };
967
-
968
- /**
969
- * addFilter
970
- *
971
- * Wrapper for acf.hooks.addFilter
972
- *
973
- * @date 14/12/17
974
- * @since 5.6.5
975
- *
976
- * @param n/a
977
- * @return this
978
- */
979
-
980
- acf.addFilter = function( action ){
981
- //action = prefixAction(action);
982
- acf.hooks.addFilter.apply(this, arguments);
983
- return this;
984
- };
985
-
986
-
987
- /**
988
- * removeFilter
989
- *
990
- * Wrapper for acf.hooks.removeFilter
991
- *
992
- * @date 14/12/17
993
- * @since 5.6.5
994
- *
995
- * @param n/a
996
- * @return this
997
- */
998
-
999
- acf.removeFilter = function( action ){
1000
- //action = prefixAction(action);
1001
- acf.hooks.removeFilter.apply(this, arguments);
1002
- return this;
1003
- };
1004
-
1005
-
1006
- /**
1007
- * applyFilters
1008
- *
1009
- * Wrapper for acf.hooks.applyFilters
1010
- *
1011
- * @date 14/12/17
1012
- * @since 5.6.5
1013
- *
1014
- * @param n/a
1015
- * @return this
1016
- */
1017
-
1018
- acf.applyFilters = function( action ){
1019
- //action = prefixAction(action);
1020
- return acf.hooks.applyFilters.apply(this, arguments);
1021
- };
1022
-
1023
-
1024
- /**
1025
- * getArgs
1026
- *
1027
- * description
1028
- *
1029
- * @date 15/12/17
1030
- * @since 5.6.5
1031
- *
1032
- * @param type $var Description. Default.
1033
- * @return type Description.
1034
- */
1035
-
1036
- acf.arrayArgs = function( args ){
1037
- return Array.prototype.slice.call( args );
1038
- };
1039
-
1040
-
1041
- /**
1042
- * extendArgs
1043
- *
1044
- * description
1045
- *
1046
- * @date 15/12/17
1047
- * @since 5.6.5
1048
- *
1049
- * @param type $var Description. Default.
1050
- * @return type Description.
1051
- */
1052
-
1053
- /*
1054
- acf.extendArgs = function( ){
1055
- var args = Array.prototype.slice.call( arguments );
1056
- var realArgs = args.shift();
1057
-
1058
- Array.prototype.push.call(arguments, 'bar')
1059
- return Array.prototype.push.apply( args, arguments );
1060
- };
1061
- */
1062
-
1063
- // Preferences
1064
- // - use try/catch to avoid JS error if cookies are disabled on front-end form
1065
- try {
1066
- var preferences = JSON.parse(localStorage.getItem('acf')) || {};
1067
- } catch(e) {
1068
- var preferences = {};
1069
- }
1070
-
1071
-
1072
- /**
1073
- * getPreferenceName
1074
- *
1075
- * Gets the true preference name.
1076
- * Converts "this.thing" to "thing-123" if editing post 123.
1077
- *
1078
- * @date 11/11/17
1079
- * @since 5.6.5
1080
- *
1081
- * @param string name
1082
- * @return string
1083
- */
1084
-
1085
- var getPreferenceName = function( name ){
1086
- if( name.substr(0, 5) === 'this.' ) {
1087
- name = name.substr(5) + '-' + acf.get('post_id');
1088
- }
1089
- return name;
1090
- };
1091
-
1092
-
1093
- /**
1094
- * acf.getPreference
1095
- *
1096
- * Gets a preference setting or null if not set.
1097
- *
1098
- * @date 11/11/17
1099
- * @since 5.6.5
1100
- *
1101
- * @param string name
1102
- * @return mixed
1103
- */
1104
-
1105
- acf.getPreference = function( name ){
1106
- name = getPreferenceName( name );
1107
- return preferences[ name ] || null;
1108
- }
1109
-
1110
-
1111
- /**
1112
- * acf.setPreference
1113
- *
1114
- * Sets a preference setting.
1115
- *
1116
- * @date 11/11/17
1117
- * @since 5.6.5
1118
- *
1119
- * @param string name
1120
- * @param mixed value
1121
- * @return n/a
1122
- */
1123
-
1124
- acf.setPreference = function( name, value ){
1125
- name = getPreferenceName( name );
1126
- if( value === null ) {
1127
- delete preferences[ name ];
1128
- } else {
1129
- preferences[ name ] = value;
1130
- }
1131
- localStorage.setItem('acf', JSON.stringify(preferences));
1132
- }
1133
-
1134
-
1135
- /**
1136
- * acf.removePreference
1137
- *
1138
- * Removes a preference setting.
1139
- *
1140
- * @date 11/11/17
1141
- * @since 5.6.5
1142
- *
1143
- * @param string name
1144
- * @return n/a
1145
- */
1146
-
1147
- acf.removePreference = function( name ){
1148
- acf.setPreference(name, null);
1149
- };
1150
-
1151
-
1152
- /**
1153
- * remove
1154
- *
1155
- * Removes an element with fade effect
1156
- *
1157
- * @date 1/1/18
1158
- * @since 5.6.5
1159
- *
1160
- * @param type $var Description. Default.
1161
- * @return type Description.
1162
- */
1163
-
1164
- acf.remove = function( props ){
1165
-
1166
- // allow jQuery
1167
- if( props instanceof jQuery ) {
1168
- props = {
1169
- target: props
1170
- };
1171
- }
1172
-
1173
- // defaults
1174
- props = acf.parseArgs(props, {
1175
- target: false,
1176
- endHeight: 0,
1177
- complete: function(){}
1178
- });
1179
-
1180
- // action
1181
- acf.doAction('remove', props.target);
1182
-
1183
- // tr
1184
- if( props.target.is('tr') ) {
1185
- removeTr( props );
1186
-
1187
- // div
1188
- } else {
1189
- removeDiv( props );
1190
- }
1191
-
1192
- };
1193
-
1194
- /**
1195
- * removeDiv
1196
- *
1197
- * description
1198
- *
1199
- * @date 16/2/18
1200
- * @since 5.6.9
1201
- *
1202
- * @param type $var Description. Default.
1203
- * @return type Description.
1204
- */
1205
-
1206
- var removeDiv = function( props ){
1207
-
1208
- // vars
1209
- var $el = props.target;
1210
- var height = $el.height();
1211
- var width = $el.width();
1212
- var margin = $el.css('margin');
1213
- var outerHeight = $el.outerHeight(true);
1214
- var style = $el.attr('style') + ''; // needed to copy
1215
-
1216
- // wrap
1217
- $el.wrap('<div class="acf-temp-remove" style="height:' + outerHeight + 'px"></div>');
1218
- var $wrap = $el.parent();
1219
-
1220
- // set pos
1221
- $el.css({
1222
- height: height,
1223
- width: width,
1224
- margin: margin,
1225
- position: 'absolute'
1226
- });
1227
-
1228
- // fade wrap
1229
- setTimeout(function(){
1230
-
1231
- $wrap.css({
1232
- opacity: 0,
1233
- height: props.endHeight
1234
- });
1235
-
1236
- }, 50);
1237
-
1238
- // remove
1239
- setTimeout(function(){
1240
-
1241
- $el.attr('style', style);
1242
- $wrap.remove();
1243
- props.complete();
1244
-
1245
- }, 301);
1246
- };
1247
-
1248
- /**
1249
- * removeTr
1250
- *
1251
- * description
1252
- *
1253
- * @date 16/2/18
1254
- * @since 5.6.9
1255
- *
1256
- * @param type $var Description. Default.
1257
- * @return type Description.
1258
- */
1259
-
1260
- var removeTr = function( props ){
1261
-
1262
- // vars
1263
- var $tr = props.target;
1264
- var height = $tr.height();
1265
- var children = $tr.children().length;
1266
-
1267
- // create dummy td
1268
- var $td = $('<td class="acf-temp-remove" style="padding:0; height:' + height + 'px" colspan="' + children + '"></td>');
1269
-
1270
- // fade away tr
1271
- $tr.addClass('acf-remove-element');
1272
-
1273
- // update HTML after fade animation
1274
- setTimeout(function(){
1275
- $tr.html( $td );
1276
- }, 251);
1277
-
1278
- // allow .acf-temp-remove to exist before changing CSS
1279
- setTimeout(function(){
1280
-
1281
- // remove class
1282
- $tr.removeClass('acf-remove-element');
1283
-
1284
- // collapse
1285
- $td.css({
1286
- height: props.endHeight
1287
- });
1288
-
1289
- }, 300);
1290
-
1291
- // remove
1292
- setTimeout(function(){
1293
-
1294
- $tr.remove();
1295
- props.complete();
1296
-
1297
- }, 451);
1298
- };
1299
-
1300
- /**
1301
- * duplicate
1302
- *
1303
- * description
1304
- *
1305
- * @date 3/1/18
1306
- * @since 5.6.5
1307
- *
1308
- * @param type $var Description. Default.
1309
- * @return type Description.
1310
- */
1311
-
1312
- acf.duplicate = function( args ){
1313
-
1314
- // allow jQuery
1315
- if( args instanceof jQuery ) {
1316
- args = {
1317
- target: args
1318
- };
1319
- }
1320
-
1321
- // vars
1322
- var timeout = 0;
1323
-
1324
- // defaults
1325
- args = acf.parseArgs(args, {
1326
- target: false,
1327
- search: '',
1328
- replace: '',
1329
- before: function( $el ){},
1330
- after: function( $el, $el2 ){},
1331
- append: function( $el, $el2 ){
1332
- $el.after( $el2 );
1333
- timeout = 1;
1334
- }
1335
- });
1336
-
1337
- // compatibility
1338
- args.target = args.target || args.$el;
1339
-
1340
- // vars
1341
- var $el = args.target;
1342
-
1343
- // search
1344
- args.search = args.search || $el.attr('data-id');
1345
- args.replace = args.replace || acf.uniqid();
1346
-
1347
- // before
1348
- // - allow acf to modify DOM
1349
- // - fixes bug where select field option is not selected
1350
- args.before( $el );
1351
- acf.doAction('before_duplicate', $el);
1352
-
1353
- // clone
1354
- var $el2 = $el.clone();
1355
-
1356
- // rename
1357
- acf.rename({
1358
- target: $el2,
1359
- search: args.search,
1360
- replace: args.replace,
1361
- });
1362
-
1363
- // remove classes
1364
- $el2.removeClass('acf-clone');
1365
- $el2.find('.ui-sortable').removeClass('ui-sortable');
1366
-
1367
- // after
1368
- // - allow acf to modify DOM
1369
- args.after( $el, $el2 );
1370
- acf.doAction('after_duplicate', $el, $el2 );
1371
-
1372
- // append
1373
- args.append( $el, $el2 );
1374
-
1375
- // append
1376
- // - allow element to be moved into a visible position before fire action
1377
- //var callback = function(){
1378
- acf.doAction('append', $el2);
1379
- //};
1380
- //if( timeout ) {
1381
- // setTimeout(callback, timeout);
1382
- //} else {
1383
- // callback();
1384
- //}
1385
-
1386
- // return
1387
- return $el2;
1388
- };
1389
-
1390
- /**
1391
- * rename
1392
- *
1393
- * description
1394
- *
1395
- * @date 7/1/18
1396
- * @since 5.6.5
1397
- *
1398
- * @param type $var Description. Default.
1399
- * @return type Description.
1400
- */
1401
-
1402
- acf.rename = function( args ){
1403
-
1404
- // allow jQuery
1405
- if( args instanceof jQuery ) {
1406
- args = {
1407
- target: args
1408
- };
1409
- }
1410
-
1411
- // defaults
1412
- args = acf.parseArgs(args, {
1413
- target: false,
1414
- destructive: false,
1415
- search: '',
1416
- replace: '',
1417
- });
1418
-
1419
- // vars
1420
- var $el = args.target;
1421
- var search = args.search || $el.attr('data-id');
1422
- var replace = args.replace || acf.uniqid('acf');
1423
- var replaceAttr = function(i, value){
1424
- return value.replace( search, replace );
1425
- }
1426
-
1427
- // replace (destructive)
1428
- if( args.destructive ) {
1429
- var html = $el.outerHTML();
1430
- html = acf.strReplace( search, replace, html );
1431
- $el.replaceWith( html );
1432
-
1433
- // replace
1434
- } else {
1435
- $el.attr('data-id', replace);
1436
- $el.find('[id*="' + search + '"]').attr('id', replaceAttr);
1437
- $el.find('[for*="' + search + '"]').attr('for', replaceAttr);
1438
- $el.find('[name*="' + search + '"]').attr('name', replaceAttr);
1439
- }
1440
-
1441
- // return
1442
- return $el;
1443
- };
1444
-
1445
-
1446
- /**
1447
- * acf.prepareForAjax
1448
- *
1449
- * description
1450
- *
1451
- * @date 4/1/18
1452
- * @since 5.6.5
1453
- *
1454
- * @param type $var Description. Default.
1455
- * @return type Description.
1456
- */
1457
-
1458
- acf.prepareForAjax = function( data ){
1459
-
1460
- // required
1461
- data.nonce = acf.get('nonce');
1462
- data.post_id = acf.get('post_id');
1463
-
1464
- // filter for 3rd party customization
1465
- data = acf.applyFilters('prepare_for_ajax', data);
1466
-
1467
- // return
1468
- return data;
1469
- };
1470
-
1471
-
1472
- /**
1473
- * acf.startButtonLoading
1474
- *
1475
- * description
1476
- *
1477
- * @date 5/1/18
1478
- * @since 5.6.5
1479
- *
1480
- * @param type $var Description. Default.
1481
- * @return type Description.
1482
- */
1483
-
1484
- acf.startButtonLoading = function( $el ){
1485
- $el.prop('disabled', true);
1486
- $el.after(' <i class="acf-loading"></i>');
1487
- }
1488
-
1489
- acf.stopButtonLoading = function( $el ){
1490
- $el.prop('disabled', false);
1491
- $el.next('.acf-loading').remove();
1492
- }
1493
-
1494
-
1495
- /**
1496
- * acf.showLoading
1497
- *
1498
- * description
1499
- *
1500
- * @date 12/1/18
1501
- * @since 5.6.5
1502
- *
1503
- * @param type $var Description. Default.
1504
- * @return type Description.
1505
- */
1506
-
1507
- acf.showLoading = function( $el ){
1508
- $el.append('<div class="acf-loading-overlay"><i class="acf-loading"></i></div>');
1509
- };
1510
-
1511
- acf.hideLoading = function( $el ){
1512
- $el.children('.acf-loading-overlay').remove();
1513
- };
1514
-
1515
-
1516
- /**
1517
- * acf.updateUserSetting
1518
- *
1519
- * description
1520
- *
1521
- * @date 5/1/18
1522
- * @since 5.6.5
1523
- *
1524
- * @param type $var Description. Default.
1525
- * @return type Description.
1526
- */
1527
-
1528
- acf.updateUserSetting = function( name, value ){
1529
-
1530
- var ajaxData = {
1531
- action: 'acf/ajax/user_setting',
1532
- name: name,
1533
- value: value
1534
- };
1535
-
1536
- $.ajax({
1537
- url: acf.get('ajaxurl'),
1538
- data: acf.prepareForAjax(ajaxData),
1539
- type: 'post',
1540
- dataType: 'html'
1541
- });
1542
-
1543
- };
1544
-
1545
-
1546
- /**
1547
- * acf.val
1548
- *
1549
- * description
1550
- *
1551
- * @date 8/1/18
1552
- * @since 5.6.5
1553
- *
1554
- * @param type $var Description. Default.
1555
- * @return type Description.
1556
- */
1557
-
1558
- acf.val = function( $input, value, silent ){
1559
-
1560
- // vars
1561
- var prevValue = $input.val();
1562
-
1563
- // bail if no change
1564
- if( value === prevValue ) {
1565
- return false
1566
- }
1567
-
1568
- // update value
1569
- $input.val( value );
1570
-
1571
- // prevent select elements displaying blank value if option doesn't exist
1572
- if( $input.is('select') && $input.val() === null ) {
1573
- $input.val( prevValue );
1574
- return false;
1575
- }
1576
-
1577
- // update with trigger
1578
- if( silent !== true ) {
1579
- $input.trigger('change');
1580
- }
1581
-
1582
- // return
1583
- return true;
1584
- };
1585
-
1586
- /**
1587
- * acf.show
1588
- *
1589
- * description
1590
- *
1591
- * @date 9/2/18
1592
- * @since 5.6.5
1593
- *
1594
- * @param type $var Description. Default.
1595
- * @return type Description.
1596
- */
1597
-
1598
- acf.show = function( $el, lockKey ){
1599
-
1600
- // unlock
1601
- if( lockKey ) {
1602
- acf.unlock($el, 'hidden', lockKey);
1603
- }
1604
-
1605
- // bail early if $el is still locked
1606
- if( acf.isLocked($el, 'hidden') ) {
1607
- //console.log( 'still locked', getLocks( $el, 'hidden' ));
1608
- return false;
1609
- }
1610
-
1611
- // $el is hidden, remove class and return true due to change in visibility
1612
- if( $el.hasClass('acf-hidden') ) {
1613
- $el.removeClass('acf-hidden');
1614
- return true;
1615
-
1616
- // $el is visible, return false due to no change in visibility
1617
- } else {
1618
- return false;
1619
- }
1620
- };
1621
-
1622
-
1623
- /**
1624
- * acf.hide
1625
- *
1626
- * description
1627
- *
1628
- * @date 9/2/18
1629
- * @since 5.6.5
1630
- *
1631
- * @param type $var Description. Default.
1632
- * @return type Description.
1633
- */
1634
-
1635
- acf.hide = function( $el, lockKey ){
1636
-
1637
- // lock
1638
- if( lockKey ) {
1639
- acf.lock($el, 'hidden', lockKey);
1640
- }
1641
-
1642
- // $el is hidden, return false due to no change in visibility
1643
- if( $el.hasClass('acf-hidden') ) {
1644
- return false;
1645
-
1646
- // $el is visible, add class and return true due to change in visibility
1647
- } else {
1648
- $el.addClass('acf-hidden');
1649
- return true;
1650
- }
1651
- };
1652
-
1653
-
1654
- /**
1655
- * acf.isHidden
1656
- *
1657
- * description
1658
- *
1659
- * @date 9/2/18
1660
- * @since 5.6.5
1661
- *
1662
- * @param type $var Description. Default.
1663
- * @return type Description.
1664
- */
1665
-
1666
- acf.isHidden = function( $el ){
1667
- return $el.hasClass('acf-hidden');
1668
- };
1669
-
1670
-
1671
- /**
1672
- * acf.isVisible
1673
- *
1674
- * description
1675
- *
1676
- * @date 9/2/18
1677
- * @since 5.6.5
1678
- *
1679
- * @param type $var Description. Default.
1680
- * @return type Description.
1681
- */
1682
-
1683
- acf.isVisible = function( $el ){
1684
- return !acf.isHidden( $el );
1685
- };
1686
-
1687
-
1688
- /**
1689
- * enable
1690
- *
1691
- * description
1692
- *
1693
- * @date 12/3/18
1694
- * @since 5.6.9
1695
- *
1696
- * @param type $var Description. Default.
1697
- * @return type Description.
1698
- */
1699
-
1700
- var enable = function( $el, lockKey ){
1701
-
1702
- // check class. Allow .acf-disabled to overrule all JS
1703
- if( $el.hasClass('acf-disabled') ) {
1704
- return false;
1705
- }
1706
-
1707
- // unlock
1708
- if( lockKey ) {
1709
- acf.unlock($el, 'disabled', lockKey);
1710
- }
1711
-
1712
- // bail early if $el is still locked
1713
- if( acf.isLocked($el, 'disabled') ) {
1714
- return false;
1715
- }
1716
-
1717
- // $el is disabled, remove prop and return true due to change
1718
- if( $el.prop('disabled') ) {
1719
- $el.prop('disabled', false);
1720
- return true;
1721
-
1722
- // $el is enabled, return false due to no change
1723
- } else {
1724
- return false;
1725
- }
1726
- };
1727
-
1728
- /**
1729
- * acf.enable
1730
- *
1731
- * description
1732
- *
1733
- * @date 9/2/18
1734
- * @since 5.6.5
1735
- *
1736
- * @param type $var Description. Default.
1737
- * @return type Description.
1738
- */
1739
-
1740
- acf.enable = function( $el, lockKey ){
1741
-
1742
- // enable single input
1743
- if( $el.attr('name') ) {
1744
- return enable( $el, lockKey );
1745
- }
1746
-
1747
- // find and enable child inputs
1748
- // return true if any inputs have changed
1749
- var results = false;
1750
- $el.find('[name]').each(function(){
1751
- var result = enable( $(this), lockKey );
1752
- if( result ) {
1753
- results = true;
1754
- }
1755
- });
1756
- return results;
1757
- };
1758
-
1759
-
1760
- /**
1761
- * disable
1762
- *
1763
- * description
1764
- *
1765
- * @date 12/3/18
1766
- * @since 5.6.9
1767
- *
1768
- * @param type $var Description. Default.
1769
- * @return type Description.
1770
- */
1771
-
1772
- var disable = function( $el, lockKey ){
1773
-
1774
- // lock
1775
- if( lockKey ) {
1776
- acf.lock($el, 'disabled', lockKey);
1777
- }
1778
-
1779
- // $el is disabled, return false due to no change
1780
- if( $el.prop('disabled') ) {
1781
- return false;
1782
-
1783
- // $el is enabled, add prop and return true due to change
1784
- } else {
1785
- $el.prop('disabled', true);
1786
- return true;
1787
- }
1788
- };
1789
-
1790
-
1791
- /**
1792
- * acf.disable
1793
- *
1794
- * description
1795
- *
1796
- * @date 9/2/18
1797
- * @since 5.6.5
1798
- *
1799
- * @param type $var Description. Default.
1800
- * @return type Description.
1801
- */
1802
-
1803
- acf.disable = function( $el, lockKey ){
1804
-
1805
- // disable single input
1806
- if( $el.attr('name') ) {
1807
- return disable( $el, lockKey );
1808
- }
1809
-
1810
- // find and enable child inputs
1811
- // return true if any inputs have changed
1812
- var results = false;
1813
- $el.find('[name]').each(function(){
1814
- var result = disable( $(this), lockKey );
1815
- if( result ) {
1816
- results = true;
1817
- }
1818
- });
1819
- return results;
1820
- };
1821
-
1822
-
1823
- /**
1824
- * acf.isset
1825
- *
1826
- * description
1827
- *
1828
- * @date 10/1/18
1829
- * @since 5.6.5
1830
- *
1831
- * @param type $var Description. Default.
1832
- * @return type Description.
1833
- */
1834
-
1835
- acf.isset = function( obj /*, level1, level2, ... */ ) {
1836
- for( var i = 1; i < arguments.length; i++ ) {
1837
- if( !obj || !obj.hasOwnProperty(arguments[i]) ) {
1838
- return false;
1839
- }
1840
- obj = obj[ arguments[i] ];
1841
- }
1842
- return true;
1843
- };
1844
-
1845
- /**
1846
- * acf.isget
1847
- *
1848
- * description
1849
- *
1850
- * @date 10/1/18
1851
- * @since 5.6.5
1852
- *
1853
- * @param type $var Description. Default.
1854
- * @return type Description.
1855
- */
1856
-
1857
- acf.isget = function( obj /*, level1, level2, ... */ ) {
1858
- for( var i = 1; i < arguments.length; i++ ) {
1859
- if( !obj || !obj.hasOwnProperty(arguments[i]) ) {
1860
- return null;
1861
- }
1862
- obj = obj[ arguments[i] ];
1863
- }
1864
- return obj;
1865
- };
1866
-
1867
- /**
1868
- * acf.getFileInputData
1869
- *
1870
- * description
1871
- *
1872
- * @date 10/1/18
1873
- * @since 5.6.5
1874
- *
1875
- * @param type $var Description. Default.
1876
- * @return type Description.
1877
- */
1878
-
1879
- acf.getFileInputData = function( $input, callback ){
1880
-
1881
- // vars
1882
- var value = $input.val();
1883
-
1884
- // bail early if no value
1885
- if( !value ) {
1886
- return false;
1887
- }
1888
-
1889
- // data
1890
- var data = {
1891
- url: value
1892
- };
1893
-
1894
- // modern browsers
1895
- var file = acf.isget( $input[0], 'files', 0);
1896
- if( file ){
1897
-
1898
- // update data
1899
- data.size = file.size;
1900
- data.type = file.type;
1901
-
1902
- // image
1903
- if( file.type.indexOf('image') > -1 ) {
1904
-
1905
- // vars
1906
- var windowURL = window.URL || window.webkitURL;
1907
- var img = new Image();
1908
-
1909
- img.onload = function() {
1910
-
1911
- // update
1912
- data.width = this.width;
1913
- data.height = this.height;
1914
-
1915
- callback( data );
1916
- };
1917
- img.src = windowURL.createObjectURL( file );
1918
- } else {
1919
- callback( data );
1920
- }
1921
- } else {
1922
- callback( data );
1923
- }
1924
- };
1925
-
1926
- /**
1927
- * acf.isAjaxSuccess
1928
- *
1929
- * description
1930
- *
1931
- * @date 18/1/18
1932
- * @since 5.6.5
1933
- *
1934
- * @param type $var Description. Default.
1935
- * @return type Description.
1936
- */
1937
-
1938
- acf.isAjaxSuccess = function( json ){
1939
- return ( json && json.success );
1940
- };
1941
-
1942
- /**
1943
- * acf.getAjaxMessage
1944
- *
1945
- * description
1946
- *
1947
- * @date 18/1/18
1948
- * @since 5.6.5
1949
- *
1950
- * @param type $var Description. Default.
1951
- * @return type Description.
1952
- */
1953
-
1954
- acf.getAjaxMessage = function( json ){
1955
- return acf.isget( json, 'data', 'message' );
1956
- };
1957
-
1958
- /**
1959
- * acf.getAjaxError
1960
- *
1961
- * description
1962
- *
1963
- * @date 18/1/18
1964
- * @since 5.6.5
1965
- *
1966
- * @param type $var Description. Default.
1967
- * @return type Description.
1968
- */
1969
-
1970
- acf.getAjaxError = function( json ){
1971
- return acf.isget( json, 'data', 'error' );
1972
- };
1973
-
1974
-
1975
- /**
1976
- * acf.renderSelect
1977
- *
1978
- * Renders the innter html for a select field.
1979
- *
1980
- * @date 19/2/18
1981
- * @since 5.6.9
1982
- *
1983
- * @param jQuery $select The select element.
1984
- * @param array choices An array of choices.
1985
- * @return void
1986
- */
1987
-
1988
- acf.renderSelect = function( $select, choices ){
1989
-
1990
- // vars
1991
- var value = $select.val();
1992
- var values = [];
1993
-
1994
- // callback
1995
- var crawl = function( items ){
1996
-
1997
- // vars
1998
- var itemsHtml = '';
1999
-
2000
- // loop
2001
- items.map(function( item ){
2002
-
2003
- // vars
2004
- var text = item.text || item.label || '';
2005
- var id = item.id || item.value || '';
2006
-
2007
- // append
2008
- values.push(id);
2009
-
2010
- // optgroup
2011
- if( item.children ) {
2012
- itemsHtml += '<optgroup label="' + acf.strEscape(text) + '">' + crawl( item.children ) + '</optgroup>';
2013
-
2014
- // option
2015
- } else {
2016
- itemsHtml += '<option value="' + id + '"' + (item.disabled ? ' disabled="disabled"' : '') + '>' + acf.strEscape(text) + '</option>';
2017
- }
2018
- });
2019
-
2020
- // return
2021
- return itemsHtml;
2022
- };
2023
-
2024
- // update HTML
2025
- $select.html( crawl(choices) );
2026
-
2027
- // update value
2028
- if( values.indexOf(value) > -1 ){
2029
- $select.val( value );
2030
- }
2031
-
2032
- // return selected value
2033
- return $select.val();
2034
- };
2035
-
2036
- /**
2037
- * acf.lock
2038
- *
2039
- * Creates a "lock" on an element for a given type and key
2040
- *
2041
- * @date 22/2/18
2042
- * @since 5.6.9
2043
- *
2044
- * @param jQuery $el The element to lock.
2045
- * @param string type The type of lock such as "condition" or "visibility".
2046
- * @param string key The key that will be used to unlock.
2047
- * @return void
2048
- */
2049
-
2050
- var getLocks = function( $el, type ){
2051
- return $el.data('acf-lock-'+type) || [];
2052
- };
2053
-
2054
- var setLocks = function( $el, type, locks ){
2055
- $el.data('acf-lock-'+type, locks);
2056
- }
2057
-
2058
- acf.lock = function( $el, type, key ){
2059
- var locks = getLocks( $el, type );
2060
- var i = locks.indexOf(key);
2061
- if( i < 0 ) {
2062
- locks.push( key );
2063
- setLocks( $el, type, locks );
2064
- }
2065
- };
2066
-
2067
- /**
2068
- * acf.unlock
2069
- *
2070
- * Unlocks a "lock" on an element for a given type and key
2071
- *
2072
- * @date 22/2/18
2073
- * @since 5.6.9
2074
- *
2075
- * @param jQuery $el The element to lock.
2076
- * @param string type The type of lock such as "condition" or "visibility".
2077
- * @param string key The key that will be used to unlock.
2078
- * @return void
2079
- */
2080
-
2081
- acf.unlock = function( $el, type, key ){
2082
- var locks = getLocks( $el, type );
2083
- var i = locks.indexOf(key);
2084
- if( i > -1 ) {
2085
- locks.splice(i, 1);
2086
- setLocks( $el, type, locks );
2087
- }
2088
-
2089
- // return true if is unlocked (no locks)
2090
- return (locks.length === 0);
2091
- };
2092
-
2093
- /**
2094
- * acf.isLocked
2095
- *
2096
- * Returns true if a lock exists for a given type
2097
- *
2098
- * @date 22/2/18
2099
- * @since 5.6.9
2100
- *
2101
- * @param jQuery $el The element to lock.
2102
- * @param string type The type of lock such as "condition" or "visibility".
2103
- * @return void
2104
- */
2105
-
2106
- acf.isLocked = function( $el, type ){
2107
- return ( getLocks( $el, type ).length > 0 );
2108
- };
2109
-
2110
- /*
2111
- * exists
2112
- *
2113
- * This function will return true if a jQuery selection exists
2114
- *
2115
- * @type function
2116
- * @date 8/09/2014
2117
- * @since 5.0.0
2118
- *
2119
- * @param n/a
2120
- * @return (boolean)
2121
- */
2122
-
2123
- $.fn.exists = function() {
2124
- return $(this).length>0;
2125
- };
2126
-
2127
-
2128
- /*
2129
- * outerHTML
2130
- *
2131
- * This function will return a string containing the HTML of the selected element
2132
- *
2133
- * @type function
2134
- * @date 19/11/2013
2135
- * @since 5.0.0
2136
- *
2137
- * @param $.fn
2138
- * @return (string)
2139
- */
2140
-
2141
- $.fn.outerHTML = function() {
2142
- return $(this).get(0).outerHTML;
2143
- };
2144
-
2145
- /*
2146
- * indexOf
2147
- *
2148
- * This function will provide compatibility for ie8
2149
- *
2150
- * @type function
2151
- * @date 5/3/17
2152
- * @since 5.5.10
2153
- *
2154
- * @param n/a
2155
- * @return n/a
2156
- */
2157
-
2158
- if( !Array.prototype.indexOf ) {
2159
-
2160
- Array.prototype.indexOf = function(val) {
2161
- return $.inArray(val, this);
2162
- };
2163
-
2164
- }
2165
-
2166
-
2167
- // Set up actions from events
2168
- $(document).ready(function(){
2169
- acf.doAction('ready');
2170
- });
2171
-
2172
- $(window).on('load', function(){
2173
- acf.doAction('load');
2174
- });
2175
-
2176
- $(window).on('beforeunload', function(){
2177
- acf.doAction('unload');
2178
- });
2179
-
2180
- $(window).on('resize', function(){
2181
- acf.doAction('resize');
2182
- });
2183
-
2184
- $(document).on('sortstart', function( event, ui ) {
2185
- acf.doAction('sortstart', ui.item, ui.placeholder);
2186
- });
2187
-
2188
- $(document).on('sortstop', function( event, ui ) {
2189
- acf.doAction('sortstop', ui.item, ui.placeholder);
2190
- });
2191
-
2192
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/field-group-compatibility.js DELETED
@@ -1,281 +0,0 @@
1
- (function($, undefined){
2
-
3
- var _acf = acf.getCompatibility( acf );
4
-
5
- /**
6
- * fieldGroupCompatibility
7
- *
8
- * Compatibility layer for extinct acf.field_group
9
- *
10
- * @date 15/12/17
11
- * @since 5.7.0
12
- *
13
- * @param void
14
- * @return void
15
- */
16
-
17
- _acf.field_group = {
18
-
19
- save_field: function( $field, type ){
20
- type = (type !== undefined) ? type : 'settings';
21
- acf.getFieldObject( $field ).save( type );
22
- },
23
-
24
- delete_field: function( $field, animate ){
25
- animate = (animate !== undefined) ? animate : true;
26
- acf.getFieldObject( $field ).delete({
27
- animate: animate
28
- });
29
- },
30
-
31
- update_field_meta: function( $field, name, value ){
32
- acf.getFieldObject( $field ).prop( name, value );
33
- },
34
-
35
- delete_field_meta: function( $field, name ){
36
- acf.getFieldObject( $field ).prop( name, null );
37
- }
38
- };
39
-
40
- /**
41
- * fieldGroupCompatibility.field_object
42
- *
43
- * Compatibility layer for extinct acf.field_group.field_object
44
- *
45
- * @date 15/12/17
46
- * @since 5.7.0
47
- *
48
- * @param void
49
- * @return void
50
- */
51
-
52
- _acf.field_group.field_object = acf.model.extend({
53
-
54
- // vars
55
- type: '',
56
- o: {},
57
- $field: null,
58
- $settings: null,
59
-
60
- tag: function( tag ) {
61
-
62
- // vars
63
- var type = this.type;
64
-
65
-
66
- // explode, add 'field' and implode
67
- // - open => open_field
68
- // - change_type => change_field_type
69
- var tags = tag.split('_');
70
- tags.splice(1, 0, 'field');
71
- tag = tags.join('_');
72
-
73
-
74
- // add type
75
- if( type ) {
76
- tag += '/type=' + type;
77
- }
78
-
79
-
80
- // return
81
- return tag;
82
-
83
- },
84
-
85
- selector: function(){
86
-
87
- // vars
88
- var selector = '.acf-field-object';
89
- var type = this.type;
90
-
91
-
92
- // add type
93
- if( type ) {
94
- selector += '-' + type;
95
- selector = acf.str_replace('_', '-', selector);
96
- }
97
-
98
-
99
- // return
100
- return selector;
101
-
102
- },
103
-
104
- _add_action: function( name, callback ) {
105
-
106
- // vars
107
- var model = this;
108
-
109
-
110
- // add action
111
- acf.add_action( this.tag(name), function( $field ){
112
-
113
- // focus
114
- model.set('$field', $field);
115
-
116
-
117
- // callback
118
- model[ callback ].apply(model, arguments);
119
-
120
- });
121
-
122
- },
123
-
124
- _add_filter: function( name, callback ) {
125
-
126
- // vars
127
- var model = this;
128
-
129
-
130
- // add action
131
- acf.add_filter( this.tag(name), function( $field ){
132
-
133
- // focus
134
- model.set('$field', $field);
135
-
136
-
137
- // callback
138
- model[ callback ].apply(model, arguments);
139
-
140
- });
141
-
142
- },
143
-
144
- _add_event: function( name, callback ) {
145
-
146
- // vars
147
- var model = this;
148
- var event = name.substr(0,name.indexOf(' '));
149
- var selector = name.substr(name.indexOf(' ')+1);
150
- var context = this.selector();
151
-
152
-
153
- // add event
154
- $(document).on(event, context + ' ' + selector, function( e ){
155
-
156
- // append $el to event object
157
- e.$el = $(this);
158
- e.$field = e.$el.closest('.acf-field-object');
159
-
160
-
161
- // focus
162
- model.set('$field', e.$field);
163
-
164
-
165
- // callback
166
- model[ callback ].apply(model, [e]);
167
-
168
- });
169
-
170
- },
171
-
172
- _set_$field: function(){
173
-
174
- // vars
175
- this.o = this.$field.data();
176
-
177
-
178
- // els
179
- this.$settings = this.$field.find('> .settings > table > tbody');
180
-
181
-
182
- // focus
183
- this.focus();
184
-
185
- },
186
-
187
- focus: function(){
188
-
189
- // do nothing
190
-
191
- },
192
-
193
- setting: function( name ) {
194
-
195
- return this.$settings.find('> .acf-field-setting-' + name);
196
-
197
- }
198
-
199
- });
200
-
201
-
202
- /*
203
- * field
204
- *
205
- * This model fires actions and filters for registered fields
206
- *
207
- * @type function
208
- * @date 21/02/2014
209
- * @since 3.5.1
210
- *
211
- * @param n/a
212
- * @return n/a
213
- */
214
-
215
- var actionManager = new acf.Model({
216
-
217
- actions: {
218
- 'open_field_object': 'onOpenFieldObject',
219
- 'close_field_object': 'onCloseFieldObject',
220
- 'add_field_object': 'onAddFieldObject',
221
- 'duplicate_field_object': 'onDuplicateFieldObject',
222
- 'delete_field_object': 'onDeleteFieldObject',
223
- 'change_field_object_type': 'onChangeFieldObjectType',
224
- 'change_field_object_label': 'onChangeFieldObjectLabel',
225
- 'change_field_object_name': 'onChangeFieldObjectName',
226
- 'change_field_object_parent': 'onChangeFieldObjectParent',
227
- 'sortstop_field_object': 'onChangeFieldObjectParent'
228
- },
229
-
230
- onOpenFieldObject: function( field ){
231
- acf.doAction('open_field', field.$el);
232
- acf.doAction('open_field/type=' + field.get('type'), field.$el);
233
-
234
- acf.doAction('render_field_settings', field.$el);
235
- acf.doAction('render_field_settings/type=' + field.get('type'), field.$el);
236
- },
237
-
238
- onCloseFieldObject: function( field ){
239
- acf.doAction('close_field', field.$el);
240
- acf.doAction('close_field/type=' + field.get('type'), field.$el);
241
- },
242
-
243
- onAddFieldObject: function( field ){
244
- acf.doAction('add_field', field.$el);
245
- acf.doAction('add_field/type=' + field.get('type'), field.$el);
246
- },
247
-
248
- onDuplicateFieldObject: function( field ){
249
- acf.doAction('duplicate_field', field.$el);
250
- acf.doAction('duplicate_field/type=' + field.get('type'), field.$el);
251
- },
252
-
253
- onDeleteFieldObject: function( field ){
254
- acf.doAction('delete_field', field.$el);
255
- acf.doAction('delete_field/type=' + field.get('type'), field.$el);
256
- },
257
-
258
- onChangeFieldObjectType: function( field ){
259
- acf.doAction('change_field_type', field.$el);
260
- acf.doAction('change_field_type/type=' + field.get('type'), field.$el);
261
-
262
- acf.doAction('render_field_settings', field.$el);
263
- acf.doAction('render_field_settings/type=' + field.get('type'), field.$el);
264
- },
265
-
266
- onChangeFieldObjectLabel: function( field ){
267
- acf.doAction('change_field_label', field.$el);
268
- acf.doAction('change_field_label/type=' + field.get('type'), field.$el);
269
- },
270
-
271
- onChangeFieldObjectName: function( field ){
272
- acf.doAction('change_field_name', field.$el);
273
- acf.doAction('change_field_name/type=' + field.get('type'), field.$el);
274
- },
275
-
276
- onChangeFieldObjectParent: function( field ){
277
- acf.doAction('update_field_parent', field.$el);
278
- }
279
- });
280
-
281
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/field-group-conditions.js DELETED
@@ -1,403 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * ConditionalLogicFieldSetting
5
- *
6
- * description
7
- *
8
- * @date 3/2/18
9
- * @since 5.6.5
10
- *
11
- * @param type $var Description. Default.
12
- * @return type Description.
13
- */
14
-
15
- var ConditionalLogicFieldSetting = acf.FieldSetting.extend({
16
- type: '',
17
- name: 'conditional_logic',
18
- events: {
19
- 'change .conditions-toggle': 'onChangeToggle',
20
- 'click .add-conditional-group': 'onClickAddGroup',
21
- 'focus .condition-rule-field': 'onFocusField',
22
- 'change .condition-rule-field': 'onChangeField',
23
- 'change .condition-rule-operator': 'onChangeOperator',
24
- 'click .add-conditional-rule': 'onClickAdd',
25
- 'click .remove-conditional-rule': 'onClickRemove'
26
- },
27
-
28
- $rule: false,
29
-
30
- scope: function( $rule ){
31
- this.$rule = $rule;
32
- return this;
33
- },
34
-
35
- ruleData: function( name, value ){
36
- return this.$rule.data.apply( this.$rule, arguments );
37
- },
38
-
39
- $input: function( name ){
40
- return this.$rule.find('.condition-rule-' + name);
41
- },
42
-
43
- $td: function( name ){
44
- return this.$rule.find('td.' + name);
45
- },
46
-
47
- $toggle: function(){
48
- return this.$('.conditions-toggle');
49
- },
50
-
51
- $control: function(){
52
- return this.$('.rule-groups');
53
- },
54
-
55
- $groups: function(){
56
- return this.$('.rule-group');
57
- },
58
-
59
- $rules: function(){
60
- return this.$('.rule');
61
- },
62
-
63
- open: function(){
64
- var $div = this.$control();
65
- $div.show();
66
- acf.enable( $div );
67
- },
68
-
69
- close: function(){
70
- var $div = this.$control();
71
- $div.hide();
72
- acf.disable( $div );
73
- },
74
-
75
- render: function(){
76
-
77
- // show
78
- if( this.$toggle().prop('checked') ) {
79
- this.renderRules();
80
- this.open();
81
-
82
- // hide
83
- } else {
84
- this.close();
85
- }
86
- },
87
-
88
- renderRules: function(){
89
-
90
- // vars
91
- var self = this;
92
-
93
- // loop
94
- this.$rules().each(function(){
95
- self.renderRule( $(this) );
96
- });
97
- },
98
-
99
- renderRule: function( $rule ){
100
- this.scope( $rule );
101
- this.renderField();
102
- this.renderOperator();
103
- this.renderValue();
104
- },
105
-
106
- renderField: function(){
107
-
108
- // vars
109
- var choices = [];
110
- var validFieldTypes = [];
111
- var cid = this.fieldObject.cid;
112
- var $select = this.$input('field');
113
-
114
- // loop
115
- acf.getFieldObjects().map(function( fieldObject ){
116
-
117
- // vars
118
- var choice = {
119
- id: fieldObject.getKey(),
120
- text: fieldObject.getLabel()
121
- };
122
-
123
- // bail early if is self
124
- if( fieldObject.cid === cid ) {
125
- choice.text += acf.__('(this field)');
126
- choice.disabled = true;
127
- }
128
-
129
- // get selected field conditions
130
- var conditionTypes = acf.getConditionTypes({
131
- fieldType: fieldObject.getType()
132
- });
133
-
134
- // bail early if no types
135
- if( !conditionTypes.length ) {
136
- choice.disabled = true;
137
- }
138
-
139
- // calulate indents
140
- var indents = fieldObject.getParents().length;
141
- choice.text = '- '.repeat(indents) + choice.text;
142
-
143
- // append
144
- choices.push(choice);
145
- });
146
-
147
- // allow for scenario where only one field exists
148
- if( !choices.length ) {
149
- choices.push({
150
- id: '',
151
- text: acf.__('No toggle fields available'),
152
- });
153
- }
154
-
155
- // render
156
- acf.renderSelect( $select, choices );
157
-
158
- // set
159
- this.ruleData('field', $select.val());
160
- },
161
-
162
- renderOperator: function(){
163
-
164
- // bail early if no field selected
165
- if( !this.ruleData('field') ) {
166
- return;
167
- }
168
-
169
- // vars
170
- var $select = this.$input('operator');
171
- var val = $select.val();
172
- var choices = [];
173
-
174
- // set saved value on first render
175
- // - this allows the 2nd render to correctly select an option
176
- if( $select.val() === null ) {
177
- acf.renderSelect($select, [{
178
- id: this.ruleData('operator'),
179
- text: ''
180
- }]);
181
- }
182
-
183
- // get selected field
184
- var $field = acf.findFieldObject( this.ruleData('field') );
185
- var field = acf.getFieldObject( $field );
186
-
187
- // get selected field conditions
188
- var conditionTypes = acf.getConditionTypes({
189
- fieldType: field.getType()
190
- });
191
-
192
- // html
193
- conditionTypes.map(function( model ){
194
- choices.push({
195
- id: model.prototype.operator,
196
- text: acf.strEscape(model.prototype.label)
197
- });
198
- });
199
-
200
- // render
201
- acf.renderSelect( $select, choices );
202
-
203
- // set
204
- this.ruleData('operator', $select.val());
205
- },
206
-
207
- renderValue: function(){
208
-
209
- // bail early if no field selected
210
- if( !this.ruleData('field') || !this.ruleData('operator') ) {
211
- return;
212
- }
213
-
214
- // vars
215
- var $select = this.$input('value');
216
- var $td = this.$td('value');
217
- var val = $select.val();
218
-
219
- // get selected field
220
- var $field = acf.findFieldObject( this.ruleData('field') );
221
- var field = acf.getFieldObject( $field );
222
-
223
- // get selected field conditions
224
- var conditionTypes = acf.getConditionTypes({
225
- fieldType: field.getType(),
226
- operator: this.ruleData('operator')
227
- });
228
-
229
- // html
230
- var conditionType = conditionTypes[0].prototype;
231
- var choices = conditionType.choices( field );
232
-
233
- // create html: array
234
- if( choices instanceof Array ) {
235
- var $newSelect = $('<select></select>');
236
- acf.renderSelect( $newSelect, choices );
237
-
238
- // create html: string (<input />)
239
- } else {
240
- var $newSelect = $(choices);
241
- }
242
-
243
- // append
244
- $select.detach();
245
- $td.html( $newSelect );
246
-
247
- // copy attrs
248
- // timeout needed to avoid browser bug where "disabled" attribute is not applied
249
- setTimeout(function(){
250
- ['class', 'name', 'id'].map(function( attr ){
251
- $newSelect.attr( attr, $select.attr(attr));
252
- });
253
- }, 0);
254
-
255
- // select existing value (if not a disabled input)
256
- if( !$newSelect.prop('disabled') ) {
257
- acf.val( $newSelect, val, true );
258
- }
259
-
260
- // set
261
- this.ruleData('value', $newSelect.val());
262
- },
263
-
264
- onChangeToggle: function(){
265
- this.render();
266
- },
267
-
268
- onClickAddGroup: function( e, $el ){
269
- this.addGroup();
270
- },
271
-
272
- addGroup: function(){
273
-
274
- // vars
275
- var $group = this.$('.rule-group:last');
276
-
277
- // duplicate
278
- var $group2 = acf.duplicate( $group );
279
-
280
- // update h4
281
- $group2.find('h4').text( acf.__('or') );
282
-
283
- // remove all tr's except the first one
284
- $group2.find('tr').not(':first').remove();
285
-
286
- // save field
287
- this.fieldObject.save();
288
- },
289
-
290
- onFocusField: function( e, $el ){
291
- this.renderField();
292
- },
293
-
294
- onChangeField: function( e, $el ){
295
-
296
- // scope
297
- this.scope( $el.closest('.rule') );
298
-
299
- // set data
300
- this.ruleData('field', $el.val());
301
-
302
- // render
303
- this.renderOperator();
304
- this.renderValue();
305
- },
306
-
307
- onChangeOperator: function( e, $el ){
308
-
309
- // scope
310
- this.scope( $el.closest('.rule') );
311
-
312
- // set data
313
- this.ruleData('operator', $el.val());
314
-
315
- // render
316
- this.renderValue();
317
- },
318
-
319
- onClickAdd: function( e, $el ){
320
-
321
- // duplciate
322
- var $rule = acf.duplicate( $el.closest('.rule') );
323
-
324
- // render
325
- this.renderRule( $rule );
326
- },
327
-
328
- onClickRemove: function( e, $el ){
329
-
330
- // vars
331
- var $rule = $el.closest('.rule');
332
-
333
- // save field
334
- this.fieldObject.save();
335
-
336
- // remove group
337
- if( $rule.siblings('.rule').length == 0 ) {
338
- $rule.closest('.rule-group').remove();
339
- }
340
-
341
- // remove
342
- $rule.remove();
343
- }
344
- });
345
-
346
- acf.registerFieldSetting( ConditionalLogicFieldSetting );
347
-
348
-
349
- /**
350
- * conditionalLogicHelper
351
- *
352
- * description
353
- *
354
- * @date 20/4/18
355
- * @since 5.6.9
356
- *
357
- * @param type $var Description. Default.
358
- * @return type Description.
359
- */
360
-
361
- var conditionalLogicHelper = new acf.Model({
362
- actions: {
363
- 'duplicate_field_objects': 'onDuplicateFieldObjects',
364
- },
365
-
366
- onDuplicateFieldObjects: function( children, newField, prevField ){
367
-
368
- // vars
369
- var data = {};
370
- var $selects = $();
371
-
372
- // reference change in key
373
- children.map(function( child ){
374
-
375
- // store reference of changed key
376
- data[ child.get('prevKey') ] = child.get('key');
377
-
378
- // append condition select
379
- $selects = $selects.add( child.$('.condition-rule-field') );
380
- });
381
-
382
- // loop
383
- $selects.each(function(){
384
-
385
- // vars
386
- var $select = $(this);
387
- var val = $select.val();
388
-
389
- // bail early if val is not a ref key
390
- if( !val || !data[val] ) {
391
- return;
392
- }
393
-
394
- // modify selected option
395
- $select.find('option:selected').attr('value', data[val]);
396
-
397
- // set new val
398
- $select.val( data[val] );
399
-
400
- });
401
- },
402
- });
403
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/field-group-field.js DELETED
@@ -1,809 +0,0 @@
1
- (function($, undefined){
2
-
3
- acf.FieldObject = acf.Model.extend({
4
-
5
- // class used to avoid nested event triggers
6
- eventScope: '.acf-field-object',
7
-
8
- // events
9
- events: {
10
- 'click .edit-field': 'onClickEdit',
11
- 'click .delete-field': 'onClickDelete',
12
- 'click .duplicate-field': 'duplicate',
13
- 'click .move-field': 'move',
14
-
15
- 'change .field-type': 'onChangeType',
16
- 'change .field-required': 'onChangeRequired',
17
- 'blur .field-label': 'onChangeLabel',
18
- 'blur .field-name': 'onChangeName',
19
-
20
- 'change': 'onChange',
21
- 'changed': 'onChanged',
22
- },
23
-
24
- // data
25
- data: {
26
-
27
- // Similar to ID, but used for HTML puposes.
28
- // It is possbile for a new field to have an ID of 0, but an id of 'field_123' */
29
- id: 0,
30
-
31
- // The field key ('field_123')
32
- key: '',
33
-
34
- // The field type (text, image, etc)
35
- type: '',
36
-
37
- // The $post->ID of this field
38
- //ID: 0,
39
-
40
- // The field's parent
41
- //parent: 0,
42
-
43
- // The menu order
44
- //menu_order: 0
45
- },
46
-
47
- setup: function( $field ){
48
-
49
- // set $el
50
- this.$el = $field;
51
-
52
- // inherit $field data (id, key, type)
53
- this.inherit( $field );
54
-
55
- // load additional props
56
- // - this won't trigger 'changed'
57
- this.prop('ID');
58
- this.prop('parent');
59
- this.prop('menu_order');
60
- },
61
-
62
- $input: function( name ){
63
- return $('#' + this.getInputId() + '-' + name);
64
- },
65
-
66
- $meta: function(){
67
- return this.$('.meta:first');
68
- },
69
-
70
- $handle: function(){
71
- return this.$('.handle:first');
72
- },
73
-
74
- $settings: function(){
75
- return this.$('.settings:first');
76
- },
77
-
78
- $setting: function( name ){
79
- return this.$('.acf-field-settings:first > .acf-field-setting-' + name);
80
- },
81
-
82
- getParent: function(){
83
- return acf.getFieldObjects({ child: this.$el, limit: 1 }).pop();
84
- },
85
-
86
- getParents: function(){
87
- return acf.getFieldObjects({ child: this.$el });
88
- },
89
-
90
- getFields: function(){
91
- return acf.getFieldObjects({ parent: this.$el });
92
- },
93
-
94
- getInputName: function(){
95
- return 'acf_fields[' + this.get('id') + ']';
96
- },
97
-
98
- getInputId: function(){
99
- return 'acf_fields-' + this.get('id');
100
- },
101
-
102
- newInput: function( name, value ){
103
-
104
- // vars
105
- var inputId = this.getInputId();
106
- var inputName = this.getInputName();
107
-
108
- // append name
109
- if( name ) {
110
- inputId += '-'+name;
111
- inputName += '['+name+']';
112
- }
113
-
114
- // create input (avoid HTML + JSON value issues)
115
- var $input = $('<input />').attr({
116
- id: inputId,
117
- name: inputName,
118
- value: value
119
- });
120
- this.$('> .meta').append( $input );
121
-
122
- // return
123
- return $input;
124
- },
125
-
126
- getProp: function( name ){
127
-
128
- // check data
129
- if( this.has(name) ) {
130
- return this.get(name);
131
- }
132
-
133
- // get input value
134
- var $input = this.$input( name );
135
- //console.log($input );
136
- var value = $input.length ? $input.val() : null;
137
-
138
- // set data silently (cache)
139
- this.set(name, value, true);
140
-
141
- // return
142
- return value;
143
- },
144
-
145
- setProp: function( name, value ) {
146
-
147
- // get input
148
- var $input = this.$input( name );
149
- var prevVal = $input.val();
150
-
151
- // create if new
152
- if( !$input.length ) {
153
- $input = this.newInput( name, value );
154
- }
155
-
156
- // remove
157
- if( value === null ) {
158
- $input.remove();
159
-
160
- // update
161
- } else {
162
- $input.val( value );
163
- }
164
-
165
- //console.log('setProp', name, value, this);
166
-
167
- // set data silently (cache)
168
- if( !this.has(name) ) {
169
- //console.log('setting silently');
170
- this.set(name, value, true);
171
-
172
- // set data allowing 'change' event to fire
173
- } else {
174
- //console.log('setting loudly!');
175
- this.set(name, value);
176
- }
177
-
178
- // return
179
- return this;
180
-
181
- },
182
-
183
- prop: function( name, value ){
184
- if( value !== undefined ) {
185
- return this.setProp( name, value );
186
- } else {
187
- return this.getProp( name );
188
- }
189
- },
190
-
191
- props: function( props ){
192
- Object.keys( props ).map(function( key ){
193
- this.setProp( key, props[key] );
194
- }, this);
195
- },
196
-
197
- getLabel: function(){
198
-
199
- // get label with empty default
200
- var label = this.prop('label');
201
- if( label === '' ) {
202
- label = acf.__('(no label)')
203
- }
204
-
205
- // return
206
- return label;
207
- },
208
-
209
- getName: function(){
210
- return this.prop('name');
211
- },
212
-
213
- getType: function(){
214
- return this.prop('type');
215
- },
216
-
217
- getTypeLabel: function(){
218
- var type = this.prop('type');
219
- var types = acf.get('fieldTypes');
220
- return ( types[type] ) ? types[type].label : type;
221
- },
222
-
223
- getKey: function(){
224
- return this.prop('key');
225
- },
226
-
227
- initialize: function(){
228
- // do nothing
229
- },
230
-
231
- render: function(){
232
-
233
- // vars
234
- var $handle = this.$('.handle:first');
235
- var menu_order = this.prop('menu_order');
236
- var label = this.getLabel();
237
- var name = this.prop('name');
238
- var type = this.getTypeLabel();
239
- var key = this.prop('key');
240
- var required = this.$input('required').prop('checked');
241
-
242
- // update menu order
243
- $handle.find('.acf-icon').html( parseInt(menu_order) + 1 );
244
-
245
- // update required
246
- if( required ) {
247
- label += ' <span class="acf-required">*</span>';
248
- }
249
-
250
- // update label
251
- $handle.find('.li-field-label strong a').html( label );
252
-
253
- // update name
254
- $handle.find('.li-field-name').text( name );
255
-
256
- // update type
257
- $handle.find('.li-field-type').text( type );
258
-
259
- // update key
260
- $handle.find('.li-field-key').text( key );
261
-
262
- // action for 3rd party customization
263
- acf.doAction('render_field_object', this);
264
- },
265
-
266
- refresh: function(){
267
- acf.doAction('refresh_field_object', this);
268
- },
269
-
270
- isOpen: function() {
271
- return this.$el.hasClass('open');
272
- },
273
-
274
- onClickEdit: function( e ){
275
- this.isOpen() ? this.close() : this.open();
276
- },
277
-
278
- open: function(){
279
-
280
- // vars
281
- var $settings = this.$el.children('.settings');
282
-
283
- // open
284
- $settings.slideDown();
285
- this.$el.addClass('open');
286
-
287
- // action (open)
288
- acf.doAction('open_field_object', this);
289
- this.trigger('openFieldObject');
290
-
291
- // action (show)
292
- acf.doAction('show', $settings);
293
- },
294
-
295
- close: function(){
296
-
297
- // vars
298
- var $settings = this.$el.children('.settings');
299
-
300
- // close
301
- $settings.slideUp();
302
- this.$el.removeClass('open');
303
-
304
- // action (close)
305
- acf.doAction('close_field_object', this);
306
- this.trigger('closeFieldObject');
307
-
308
- // action (hide)
309
- acf.doAction('hide', $settings);
310
- },
311
-
312
- serialize: function(){
313
- return acf.serialize( this.$el, this.getInputName() );
314
- },
315
-
316
- save: function( type ){
317
-
318
- // defaults
319
- type = type || 'settings'; // meta, settings
320
-
321
- // vars
322
- var save = this.getProp('save');
323
-
324
- // bail if already saving settings
325
- if( save === 'settings' ) {
326
- return;
327
- }
328
-
329
- // prop
330
- this.setProp('save', type);
331
-
332
- // debug
333
- this.$el.attr('data-save', type);
334
-
335
- // action
336
- acf.doAction('save_field_object', this, type);
337
- },
338
-
339
- submit: function(){
340
-
341
- // vars
342
- var inputName = this.getInputName();
343
- var save = this.get('save');
344
-
345
- // close
346
- if( this.isOpen() ) {
347
- this.close();
348
- }
349
-
350
- // allow all inputs to save
351
- if( save == 'settings' ) {
352
- // do nothing
353
-
354
- // allow only meta inputs to save
355
- } else if( save == 'meta' ) {
356
- this.$('> .settings [name^="' + inputName + '"]').remove();
357
-
358
- // prevent all inputs from saving
359
- } else {
360
- this.$('[name^="' + inputName + '"]').remove();
361
- }
362
-
363
- // action
364
- acf.doAction('submit_field_object', this);
365
- },
366
-
367
- onChange: function( e, $el ){
368
-
369
- // save settings
370
- this.save();
371
-
372
- // action for 3rd party customization
373
- acf.doAction('change_field_object', this);
374
- },
375
-
376
- onChanged: function( e, $el, name, value ){
377
-
378
- // ignore 'save'
379
- if( name == 'save' ) {
380
- return;
381
- }
382
-
383
- // save meta
384
- if( ['menu_order', 'parent'].indexOf(name) > -1 ) {
385
- this.save('meta');
386
-
387
- // save field
388
- } else {
389
- this.save();
390
- }
391
-
392
- // render
393
- if( ['menu_order', 'label', 'required', 'name', 'type', 'key'].indexOf(name) > -1 ) {
394
- this.render();
395
- }
396
-
397
- // action for 3rd party customization
398
- acf.doAction('change_field_object_' + name, this, value);
399
- },
400
-
401
- onChangeLabel: function( e, $el ){
402
-
403
- // set
404
- var label = $el.val();
405
- this.set('label', label);
406
-
407
- // render name
408
- if( this.prop('name') == '' ) {
409
- var name = acf.applyFilters('generate_field_object_name', acf.strSanitize(label), this);
410
- this.prop('name', name);
411
- }
412
- },
413
-
414
- onChangeName: function( e, $el){
415
-
416
- // set
417
- var name = $el.val();
418
- this.set('name', name);
419
-
420
- // error
421
- if( name.substr(0, 6) === 'field_' ) {
422
- alert( acf.__('The string "field_" may not be used at the start of a field name') );
423
- }
424
- },
425
-
426
- onChangeRequired: function( e, $el ){
427
-
428
- // set
429
- var required = $el.prop('checked') ? 1 : 0;
430
- this.set('required', required);
431
- },
432
-
433
- delete: function( args ){
434
-
435
- // defaults
436
- args = acf.parseArgs(args, {
437
- animate: true
438
- });
439
-
440
- // add to remove list
441
- var id = this.prop('ID');
442
-
443
- if( id ) {
444
- var $input = $('#_acf_delete_fields');
445
- var newVal = $input.val() + '|' + id;
446
- $input.val( newVal );
447
- }
448
-
449
- // action
450
- acf.doAction('delete_field_object', this);
451
-
452
- // animate
453
- if( args.animate ) {
454
- this.removeAnimate();
455
- } else {
456
- this.remove();
457
- }
458
- },
459
-
460
- onClickDelete: function( e, $el ){
461
-
462
- // add class
463
- this.$el.addClass('-hover');
464
-
465
- // add tooltip
466
- var self = this;
467
- var tooltip = acf.newTooltip({
468
- confirmRemove: true,
469
- target: $el,
470
- confirm: function(){
471
- self.delete( true );
472
- },
473
- cancel: function(){
474
- self.$el.removeClass('-hover');
475
- }
476
- });
477
- },
478
-
479
- removeAnimate: function(){
480
-
481
- // vars
482
- var field = this;
483
- var $list = this.$el.parent();
484
- var $fields = acf.findFieldObjects({
485
- sibling: this.$el
486
- });
487
-
488
- // remove
489
- acf.remove({
490
- target: this.$el,
491
- endHeight: $fields.length ? 0 : 50,
492
- complete: function(){
493
- field.remove();
494
- acf.doAction('removed_field_object', field, $list);
495
- }
496
- });
497
-
498
- // action
499
- acf.doAction('remove_field_object', field, $list);
500
- },
501
-
502
- duplicate: function(){
503
-
504
- // vars
505
- var newKey = acf.uniqid('field_');
506
-
507
- // duplicate
508
- var $newField = acf.duplicate({
509
- target: this.$el,
510
- search: this.get('id'),
511
- replace: newKey,
512
- });
513
-
514
- // set new key
515
- $newField.attr('data-key', newKey);
516
-
517
- // get instance
518
- var newField = acf.getFieldObject( $newField );
519
-
520
- // open / close
521
- if( this.isOpen() ) {
522
- this.close();
523
- } else {
524
- newField.open();
525
- }
526
-
527
- // focus label
528
- var $label = newField.$setting('label input');
529
- setTimeout(function(){
530
- $label.focus();
531
- }, 251);
532
-
533
- // update newField label / name
534
- var label = newField.prop('label');
535
- var name = newField.prop('name');
536
- var end = name.split('_').pop();
537
- var copy = acf.__('copy');
538
-
539
- // increase suffix "1"
540
- if( $.isNumeric(end) ) {
541
- var i = (end*1) + 1;
542
- label = label.replace( end, i );
543
- name = name.replace( end, i );
544
-
545
- // increase suffix "(copy1)"
546
- } else if( end.indexOf(copy) === 0 ) {
547
- var i = end.replace(copy, '') * 1;
548
- i = i ? i+1 : 2;
549
-
550
- // replace
551
- label = label.replace( end, copy + i );
552
- name = name.replace( end, copy + i );
553
-
554
- // add default "(copy)"
555
- } else {
556
- label += ' (' + copy + ')';
557
- name += '_' + copy;
558
- }
559
-
560
- newField.prop('ID', 0);
561
- newField.prop('label', label);
562
- newField.prop('name', name);
563
- newField.prop('key', newKey);
564
-
565
- // action
566
- acf.doAction('duplicate_field_object', this, newField);
567
- acf.doAction('append_field_object', newField);
568
- },
569
-
570
- wipe: function(){
571
-
572
- // vars
573
- var prevId = this.get('id');
574
- var prevKey = this.get('key');
575
- var newKey = acf.uniqid('field_');
576
-
577
- // rename
578
- acf.rename({
579
- target: this.$el,
580
- search: prevId,
581
- replace: newKey,
582
- });
583
-
584
- // data
585
- this.set('id', newKey);
586
- this.set('prevId', prevId);
587
- this.set('prevKey', prevKey);
588
-
589
- // props
590
- this.prop('key', newKey);
591
- this.prop('ID', 0);
592
-
593
- // attr
594
- this.$el.attr('data-key', newKey);
595
- this.$el.attr('data-id', newKey);
596
-
597
- // action
598
- acf.doAction('wipe_field_object', this);
599
- },
600
-
601
- move: function(){
602
-
603
- // helper
604
- var hasChanged = function( field ){
605
- return (field.get('save') == 'settings');
606
- };
607
-
608
- // vars
609
- var changed = hasChanged(this);
610
-
611
- // has sub fields changed
612
- if( !changed ) {
613
- acf.getFieldObjects({
614
- parent: this.$el
615
- }).map(function( field ){
616
- changed = hasChanged(field) || field.changed;
617
- });
618
- }
619
-
620
- // bail early if changed
621
- if( changed ) {
622
- alert( acf.__('This field cannot be moved until its changes have been saved') );
623
- return;
624
- }
625
-
626
- // step 1.
627
- var id = this.prop('ID');
628
- var field = this;
629
- var popup = false;
630
- var step1 = function(){
631
-
632
- // popup
633
- popup = acf.newPopup({
634
- title: acf.__('Move Custom Field'),
635
- loading: true,
636
- width: '300px'
637
- });
638
-
639
- // ajax
640
- var ajaxData = {
641
- action: 'acf/field_group/move_field',
642
- field_id: id
643
- };
644
-
645
- // get HTML
646
- $.ajax({
647
- url: acf.get('ajaxurl'),
648
- data: acf.prepareForAjax(ajaxData),
649
- type: 'post',
650
- dataType: 'html',
651
- success: step2
652
- });
653
- };
654
-
655
- var step2 = function( html ){
656
-
657
- // update popup
658
- popup.loading(false);
659
- popup.content(html);
660
-
661
- // submit form
662
- popup.on('submit', 'form', step3);
663
- };
664
-
665
- var step3 = function( e, $el ){
666
-
667
- // prevent
668
- e.preventDefault();
669
-
670
- // disable
671
- acf.startButtonLoading( popup.$('.button') );
672
-
673
- // ajax
674
- var ajaxData = {
675
- action: 'acf/field_group/move_field',
676
- field_id: id,
677
- field_group_id: popup.$('select').val()
678
- };
679
-
680
- // get HTML
681
- $.ajax({
682
- url: acf.get('ajaxurl'),
683
- data: acf.prepareForAjax(ajaxData),
684
- type: 'post',
685
- dataType: 'html',
686
- success: step4
687
- });
688
- };
689
-
690
- var step4 = function( html ){
691
-
692
- // update popup
693
- popup.content(html);
694
-
695
- // remove element
696
- field.removeAnimate();
697
- };
698
-
699
- // start
700
- step1();
701
-
702
- },
703
-
704
- onChangeType: function( e, $el ){
705
-
706
- // clea previous timout
707
- if( this.changeTimeout ) {
708
- clearTimeout(this.changeTimeout);
709
- }
710
-
711
- // set new timeout
712
- // - prevents changing type multiple times whilst user types in newType
713
- this.changeTimeout = this.setTimeout(function(){
714
- this.changeType( $el.val() );
715
- }, 300);
716
- },
717
-
718
- changeType: function( newType ){
719
-
720
- // vars
721
- var prevType = this.prop('type');
722
- var prevClass = acf.strSlugify( 'acf-field-object-' + prevType );
723
- var newClass = acf.strSlugify( 'acf-field-object-' + newType );
724
-
725
- // update props
726
- this.$el.removeClass(prevClass).addClass(newClass);
727
- this.$el.attr('data-type', newType);
728
- this.$el.data('type', newType);
729
-
730
- // abort XHR if this field is already loading AJAX data
731
- if( this.has('xhr') ) {
732
- this.get('xhr').abort();
733
- }
734
-
735
- // store settings
736
- var $tbody = this.$('> .settings > table > tbody');
737
- var $settings = $tbody.children('[data-setting="' + prevType + '"]');
738
- this.set( 'settings-' + prevType, $settings );
739
- $settings.detach();
740
-
741
- // show settings
742
- if( this.has('settings-' + newType) ) {
743
- var $newSettings = this.get('settings-' + newType);
744
- this.$setting('conditional_logic').before( $newSettings );
745
- this.set('type', newType);
746
- //this.refresh();
747
- return;
748
- }
749
-
750
- // load settings
751
- var $loading = $('<tr class="acf-field"><td class="acf-label"></td><td class="acf-input"><div class="acf-loading"></div></td></tr>');
752
- this.$setting('conditional_logic').before( $loading );
753
-
754
- // ajax
755
- var ajaxData = {
756
- action: 'acf/field_group/render_field_settings',
757
- field: this.serialize(),
758
- prefix: this.getInputName()
759
- };
760
-
761
- // ajax
762
- var xhr = $.ajax({
763
- url: acf.get('ajaxurl'),
764
- data: acf.prepareForAjax(ajaxData),
765
- type: 'post',
766
- dataType: 'html',
767
- context: this,
768
- success: function( html ){
769
-
770
- // bail early if no settings
771
- if( !html ) return;
772
-
773
- // append settings
774
- $loading.after( html );
775
-
776
- // events
777
- acf.doAction('append', $tbody);
778
- },
779
- complete: function(){
780
- // also triggered by xhr.abort();
781
- $loading.remove();
782
- this.set('type', newType);
783
- //this.refresh();
784
- }
785
- });
786
-
787
- // set
788
- this.set('xhr', xhr);
789
-
790
- },
791
-
792
- updateParent: function(){
793
-
794
- // vars
795
- var ID = acf.get('post_id');
796
-
797
- // check parent
798
- var parent = this.getParent();
799
- if( parent ) {
800
- ID = parent.prop('ID') || parent.prop('key');
801
- }
802
-
803
- // update
804
- this.prop('parent', ID);
805
- }
806
-
807
- });
808
-
809
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/field-group-fields.js DELETED
@@ -1,468 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * acf.findFieldObject
5
- *
6
- * Returns a single fieldObject $el for a given field key
7
- *
8
- * @date 1/2/18
9
- * @since 5.7.0
10
- *
11
- * @param string key The field key
12
- * @return jQuery
13
- */
14
-
15
- acf.findFieldObject = function( key ){
16
- return acf.findFieldObjects({
17
- key: key,
18
- limit: 1
19
- });
20
- };
21
-
22
- /**
23
- * acf.findFieldObjects
24
- *
25
- * Returns an array of fieldObject $el for the given args
26
- *
27
- * @date 1/2/18
28
- * @since 5.7.0
29
- *
30
- * @param object args
31
- * @return jQuery
32
- */
33
-
34
- acf.findFieldObjects = function( args ){
35
-
36
- // vars
37
- args = args || {};
38
- var selector = '.acf-field-object';
39
- var $fields = false;
40
-
41
- // args
42
- args = acf.parseArgs(args, {
43
- id: '',
44
- key: '',
45
- type: '',
46
- limit: false,
47
- list: null,
48
- parent: false,
49
- sibling: false,
50
- child: false,
51
- });
52
-
53
- // id
54
- if( args.id ) {
55
- selector += '[data-id="' + args.id + '"]';
56
- }
57
-
58
- // key
59
- if( args.key ) {
60
- selector += '[data-key="' + args.key + '"]';
61
- }
62
-
63
- // type
64
- if( args.type ) {
65
- selector += '[data-type="' + args.type + '"]';
66
- }
67
-
68
- // query
69
- if( args.list ) {
70
- $fields = args.list.children( selector );
71
- } else if( args.parent ) {
72
- $fields = args.parent.find( selector );
73
- } else if( args.sibling ) {
74
- $fields = args.sibling.siblings( selector );
75
- } else if( args.child ) {
76
- $fields = args.child.parents( selector );
77
- } else {
78
- $fields = $( selector );
79
- }
80
-
81
- // limit
82
- if( args.limit ) {
83
- $fields = $fields.slice( 0, args.limit );
84
- }
85
-
86
- // return
87
- return $fields;
88
- };
89
-
90
- /**
91
- * acf.getFieldObject
92
- *
93
- * Returns a single fieldObject instance for a given $el|key
94
- *
95
- * @date 1/2/18
96
- * @since 5.7.0
97
- *
98
- * @param string|jQuery $field The field $el or key
99
- * @return jQuery
100
- */
101
-
102
- acf.getFieldObject = function( $field ){
103
-
104
- // allow key
105
- if( typeof $field === 'string' ) {
106
- $field = acf.findFieldObject( $field );
107
- }
108
-
109
- // instantiate
110
- var field = $field.data('acf');
111
- if( !field ) {
112
- field = acf.newFieldObject( $field );
113
- }
114
-
115
- // return
116
- return field;
117
- };
118
-
119
- /**
120
- * acf.getFieldObjects
121
- *
122
- * Returns an array of fieldObject instances for the given args
123
- *
124
- * @date 1/2/18
125
- * @since 5.7.0
126
- *
127
- * @param object args
128
- * @return array
129
- */
130
-
131
- acf.getFieldObjects = function( args ){
132
-
133
- // query
134
- var $fields = acf.findFieldObjects( args );
135
-
136
- // loop
137
- var fields = [];
138
- $fields.each(function(){
139
- var field = acf.getFieldObject( $(this) );
140
- fields.push( field );
141
- });
142
-
143
- // return
144
- return fields;
145
- };
146
-
147
- /**
148
- * acf.newFieldObject
149
- *
150
- * Initializes and returns a new FieldObject instance
151
- *
152
- * @date 1/2/18
153
- * @since 5.7.0
154
- *
155
- * @param jQuery $field The field $el
156
- * @return object
157
- */
158
-
159
- acf.newFieldObject = function( $field ){
160
-
161
- // instantiate
162
- var field = new acf.FieldObject( $field );
163
-
164
- // action
165
- acf.doAction('new_field_object', field);
166
-
167
- // return
168
- return field;
169
- };
170
-
171
- /**
172
- * actionManager
173
- *
174
- * description
175
- *
176
- * @date 15/12/17
177
- * @since 5.6.5
178
- *
179
- * @param type $var Description. Default.
180
- * @return type Description.
181
- */
182
-
183
- var eventManager = new acf.Model({
184
-
185
- priority: 5,
186
-
187
- initialize: function(){
188
-
189
- // actions
190
- var actions = [
191
- 'prepare',
192
- 'ready',
193
- 'append',
194
- 'remove'
195
- ];
196
-
197
- // loop
198
- actions.map(function( action ){
199
- this.addFieldActions( action );
200
- }, this);
201
- },
202
-
203
- addFieldActions: function( action ){
204
-
205
- // vars
206
- var pluralAction = action + '_field_objects'; // ready_field_objects
207
- var singleAction = action + '_field_object'; // ready_field_object
208
- var singleEvent = action + 'FieldObject'; // readyFieldObject
209
-
210
- // global action
211
- var callback = function( $el /*, arg1, arg2, etc*/ ){
212
-
213
- // vars
214
- var fieldObjects = acf.getFieldObjects({ parent: $el });
215
-
216
- // call plural
217
- if( fieldObjects.length ) {
218
-
219
- /// get args [$el, arg1]
220
- var args = acf.arrayArgs( arguments );
221
-
222
- // modify args [pluralAction, fields, arg1]
223
- args.splice(0, 1, pluralAction, fieldObjects);
224
- acf.doAction.apply(null, args);
225
- }
226
- };
227
-
228
- // plural action
229
- var pluralCallback = function( fieldObjects /*, arg1, arg2, etc*/ ){
230
-
231
- /// get args [fields, arg1]
232
- var args = acf.arrayArgs( arguments );
233
-
234
- // modify args [singleAction, fields, arg1]
235
- args.unshift(singleAction);
236
-
237
- // loop
238
- fieldObjects.map(function( fieldObject ){
239
-
240
- // modify args [singleAction, field, arg1]
241
- args[1] = fieldObject;
242
- acf.doAction.apply(null, args);
243
- });
244
- };
245
-
246
- // single action
247
- var singleCallback = function( fieldObject /*, arg1, arg2, etc*/ ){
248
-
249
- /// get args [$field, arg1]
250
- var args = acf.arrayArgs( arguments );
251
-
252
- // modify args [singleAction, $field, arg1]
253
- args.unshift(singleAction);
254
-
255
- // action variations (ready_field/type=image)
256
- var variations = ['type', 'name', 'key'];
257
- variations.map(function( variation ){
258
- args[0] = singleAction + '/' + variation + '=' + fieldObject.get(variation);
259
- acf.doAction.apply(null, args);
260
- });
261
-
262
- // modify args [arg1]
263
- args.splice(0, 2);
264
-
265
- // event
266
- fieldObject.trigger(singleEvent, args);
267
- };
268
-
269
- // add actions
270
- acf.addAction(action, callback, 5);
271
- acf.addAction(pluralAction, pluralCallback, 5);
272
- acf.addAction(singleAction, singleCallback, 5);
273
-
274
- }
275
- });
276
-
277
- /**
278
- * fieldManager
279
- *
280
- * description
281
- *
282
- * @date 4/1/18
283
- * @since 5.6.5
284
- *
285
- * @param type $var Description. Default.
286
- * @return type Description.
287
- */
288
-
289
- var fieldManager = new acf.Model({
290
-
291
- id: 'fieldManager',
292
-
293
- events: {
294
- 'submit #post': 'onSubmit',
295
- 'mouseenter .acf-field-list': 'onHoverSortable',
296
- 'click .add-field': 'onClickAdd',
297
- },
298
-
299
- actions: {
300
- 'removed_field_object': 'onRemovedField',
301
- 'sortstop_field_object': 'onReorderField',
302
- 'delete_field_object': 'onDeleteField',
303
- 'change_field_object_type': 'onChangeFieldType',
304
- 'duplicate_field_object': 'onDuplicateField'
305
- },
306
-
307
- onSubmit: function( e, $el ){
308
-
309
- // vars
310
- var fields = acf.getFieldObjects();
311
-
312
- // loop
313
- fields.map(function( field ){
314
- field.submit();
315
- });
316
- },
317
-
318
- setFieldMenuOrder: function( field ){
319
- this.renderFields( field.$el.parent() );
320
- },
321
-
322
- onHoverSortable: function( e, $el ){
323
-
324
- // bail early if already sortable
325
- if( $el.hasClass('ui-sortable') ) return;
326
-
327
- // sortable
328
- $el.sortable({
329
- handle: '.acf-sortable-handle',
330
- connectWith: '.acf-field-list',
331
- start: function( e, ui ){
332
- var field = acf.getFieldObject( ui.item );
333
- ui.placeholder.height( ui.item.height() );
334
- acf.doAction('sortstart_field_object', field, $el);
335
- },
336
- update: function( e, ui ){
337
- var field = acf.getFieldObject( ui.item );
338
- acf.doAction('sortstop_field_object', field, $el);
339
- }
340
- });
341
- },
342
-
343
- onRemovedField: function( field, $list ){
344
- this.renderFields( $list );
345
- },
346
-
347
- onReorderField: function( field, $list ){
348
- field.updateParent();
349
- this.renderFields( $list );
350
- },
351
-
352
- onDeleteField: function( field ){
353
-
354
- // delete children
355
- field.getFields().map(function( child ){
356
- child.delete({ animate: false });
357
- });
358
- },
359
-
360
- onChangeFieldType: function( field ){
361
- // this caused sub fields to disapear if changing type back...
362
- //this.onDeleteField( field );
363
- },
364
-
365
- onDuplicateField: function( field, newField ){
366
-
367
- // check for children
368
- var children = newField.getFields();
369
- if( children.length ) {
370
-
371
- // loop
372
- children.map(function( child ){
373
-
374
- // wipe field
375
- child.wipe();
376
-
377
- // update parent
378
- child.updateParent();
379
- });
380
-
381
- // action
382
- acf.doAction('duplicate_field_objects', children, newField, field);
383
- }
384
-
385
- // set menu order
386
- this.setFieldMenuOrder( newField );
387
- },
388
-
389
- renderFields: function( $list ){
390
-
391
- // vars
392
- var fields = acf.getFieldObjects({
393
- list: $list
394
- });
395
-
396
- // no fields
397
- if( !fields.length ) {
398
- $list.addClass('-empty');
399
- return;
400
- }
401
-
402
- // has fields
403
- $list.removeClass('-empty');
404
-
405
- // prop
406
- fields.map(function( field, i ){
407
- field.prop('menu_order', i);
408
- });
409
- },
410
-
411
- onClickAdd: function( e, $el ){
412
- var $list = $el.closest('.acf-tfoot').siblings('.acf-field-list');
413
- this.addField( $list );
414
- },
415
-
416
- addField: function( $list ){
417
-
418
- // vars
419
- var html = $('#tmpl-acf-field').html();
420
- var $el = $(html);
421
- var prevId = $el.data('id');
422
- var newKey = acf.uniqid('field_');
423
-
424
- // duplicate
425
- var $newField = acf.duplicate({
426
- target: $el,
427
- search: prevId,
428
- replace: newKey,
429
- append: function( $el, $el2 ){
430
- $list.append( $el2 );
431
- }
432
- });
433
-
434
- // get instance
435
- var newField = acf.getFieldObject( $newField );
436
-
437
- // props
438
- newField.prop('key', newKey);
439
- newField.prop('ID', 0);
440
- newField.prop('label', '');
441
- newField.prop('name', '');
442
-
443
- // attr
444
- $newField.attr('data-key', newKey);
445
- $newField.attr('data-id', newKey);
446
-
447
- // update parent prop
448
- newField.updateParent();
449
-
450
- // focus label
451
- var $label = newField.$input('label');
452
- setTimeout(function(){
453
- $label.focus();
454
- }, 251);
455
-
456
- // open
457
- newField.open();
458
-
459
- // set menu order
460
- this.renderFields( $list );
461
-
462
- // action
463
- acf.doAction('add_field_object', newField);
464
- acf.doAction('append_field_object', newField);
465
- }
466
- });
467
-
468
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/field-group-locations.js DELETED
@@ -1,104 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * locationManager
5
- *
6
- * Field group location rules functionality
7
- *
8
- * @date 15/12/17
9
- * @since 5.7.0
10
- *
11
- * @param void
12
- * @return void
13
- */
14
-
15
- var locationManager = new acf.Model({
16
-
17
- id: 'locationManager',
18
- wait: 'ready',
19
-
20
- events: {
21
- 'click .add-location-rule': 'onClickAddRule',
22
- 'click .add-location-group': 'onClickAddGroup',
23
- 'click .remove-location-rule': 'onClickRemoveRule',
24
- 'change .refresh-location-rule': 'onChangeRemoveRule'
25
- },
26
-
27
- initialize: function(){
28
- this.$el = $('#acf-field-group-locations');
29
- },
30
-
31
- onClickAddRule: function( e, $el ){
32
- this.addRule( $el.closest('tr') );
33
- },
34
-
35
- onClickRemoveRule: function( e, $el ){
36
- this.removeRule( $el.closest('tr') );
37
- },
38
-
39
- onChangeRemoveRule: function( e, $el ){
40
- this.changeRule( $el.closest('tr') );
41
- },
42
-
43
- onClickAddGroup: function( e, $el ){
44
- this.addGroup();
45
- },
46
-
47
- addRule: function( $tr ){
48
- acf.duplicate( $tr );
49
- },
50
-
51
- removeRule: function( $tr ){
52
- if( $tr.siblings('tr').length == 0 ) {
53
- $tr.closest('.rule-group').remove();
54
- } else {
55
- $tr.remove();
56
- }
57
- },
58
-
59
- changeRule: function( $rule ){
60
-
61
- // vars
62
- var $group = $rule.closest('.rule-group');
63
- var prefix = $rule.find('td.param select').attr('name').replace('[param]', '');
64
-
65
- // ajaxdata
66
- var ajaxdata = {};
67
- ajaxdata.action = 'acf/field_group/render_location_rule';
68
- ajaxdata.rule = acf.serialize( $rule, prefix );
69
- ajaxdata.rule.id = $rule.data('id');
70
- ajaxdata.rule.group = $group.data('id');
71
-
72
- // temp disable
73
- acf.disable( $rule.find('td.value') );
74
-
75
- // ajax
76
- $.ajax({
77
- url: acf.get('ajaxurl'),
78
- data: acf.prepareForAjax(ajaxdata),
79
- type: 'post',
80
- dataType: 'html',
81
- success: function( html ){
82
- if( !html ) return;
83
- $rule.replaceWith( html );
84
- }
85
- });
86
- },
87
-
88
- addGroup: function(){
89
-
90
- // vars
91
- var $group = this.$('.rule-group:last');
92
-
93
- // duplicate
94
- $group2 = acf.duplicate( $group );
95
-
96
- // update h4
97
- $group2.find('h4').text( acf.__('or') );
98
-
99
- // remove all tr's except the first one
100
- $group2.find('tr').not(':first').remove();
101
- }
102
- });
103
-
104
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/field-group-settings.js DELETED
@@ -1,248 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * mid
5
- *
6
- * Calculates the model ID for a field type
7
- *
8
- * @date 15/12/17
9
- * @since 5.6.5
10
- *
11
- * @param string type
12
- * @return string
13
- */
14
-
15
- var modelId = function( type ) {
16
- return acf.strPascalCase( type || '' ) + 'FieldSetting';
17
- };
18
-
19
- /**
20
- * registerFieldType
21
- *
22
- * description
23
- *
24
- * @date 14/12/17
25
- * @since 5.6.5
26
- *
27
- * @param type $var Description. Default.
28
- * @return type Description.
29
- */
30
-
31
- acf.registerFieldSetting = function( model ){
32
- var proto = model.prototype;
33
- var mid = modelId(proto.type + ' ' + proto.name);
34
- this.models[ mid ] = model;
35
- };
36
-
37
- /**
38
- * newField
39
- *
40
- * description
41
- *
42
- * @date 14/12/17
43
- * @since 5.6.5
44
- *
45
- * @param type $var Description. Default.
46
- * @return type Description.
47
- */
48
-
49
- acf.newFieldSetting = function( field ){
50
-
51
- // vars
52
- var type = field.get('setting') || '';
53
- var name = field.get('name') || '';
54
- var mid = modelId( type + ' ' + name );
55
- var model = acf.models[ mid ] || null;
56
-
57
- // bail ealry if no setting
58
- if( model === null ) return false;
59
-
60
- // instantiate
61
- var setting = new model( field );
62
-
63
- // return
64
- return setting;
65
- };
66
-
67
- /**
68
- * acf.getFieldSetting
69
- *
70
- * description
71
- *
72
- * @date 19/4/18
73
- * @since 5.6.9
74
- *
75
- * @param type $var Description. Default.
76
- * @return type Description.
77
- */
78
-
79
- acf.getFieldSetting = function( field ) {
80
-
81
- // allow jQuery
82
- if( field instanceof jQuery ) {
83
- field = acf.getField(field);
84
- }
85
-
86
- // return
87
- return field.setting;
88
- };
89
-
90
- /**
91
- * settingsManager
92
- *
93
- * description
94
- *
95
- * @date 6/1/18
96
- * @since 5.6.5
97
- *
98
- * @param type $var Description. Default.
99
- * @return type Description.
100
- */
101
-
102
- var settingsManager = new acf.Model({
103
- actions: {
104
- 'new_field': 'onNewField'
105
- },
106
- onNewField: function( field ){
107
- field.setting = acf.newFieldSetting( field );
108
- }
109
- });
110
-
111
- /**
112
- * acf.FieldSetting
113
- *
114
- * description
115
- *
116
- * @date 6/1/18
117
- * @since 5.6.5
118
- *
119
- * @param type $var Description. Default.
120
- * @return type Description.
121
- */
122
-
123
- acf.FieldSetting = acf.Model.extend({
124
-
125
- field: false,
126
- type: '',
127
- name: '',
128
- wait: 'ready',
129
- eventScope: '.acf-field',
130
-
131
- events: {
132
- 'change': 'render'
133
- },
134
-
135
- setup: function( field ){
136
-
137
- // vars
138
- var $field = field.$el;
139
-
140
- // set props
141
- this.$el = $field;
142
- this.field = field;
143
- this.$fieldObject = $field.closest('.acf-field-object');
144
- this.fieldObject = acf.getFieldObject( this.$fieldObject );
145
-
146
- // inherit data
147
- $.extend(this.data, field.data);
148
- },
149
-
150
- initialize: function(){
151
- this.render();
152
- },
153
-
154
- render: function(){
155
- // do nothing
156
- }
157
- });
158
-
159
- /*
160
- * Date Picker
161
- *
162
- * This field type requires some extra logic for its settings
163
- *
164
- * @type function
165
- * @date 24/10/13
166
- * @since 5.0.0
167
- *
168
- * @param n/a
169
- * @return n/a
170
- */
171
-
172
- var DisplayFormatFieldSetting = acf.FieldSetting.extend({
173
- type: '',
174
- name: '',
175
- render: function(){
176
- var $input = this.$('input[type="radio"]:checked');
177
- if( $input.val() != 'other' ) {
178
- this.$('input[type="text"]').val( $input.val() );
179
- }
180
- }
181
- });
182
-
183
- var DatePickerDisplayFormatFieldSetting = DisplayFormatFieldSetting.extend({
184
- type: 'date_picker',
185
- name: 'display_format'
186
- });
187
-
188
- var DatePickerReturnFormatFieldSetting = DisplayFormatFieldSetting.extend({
189
- type: 'date_picker',
190
- name: 'return_format'
191
- });
192
-
193
- acf.registerFieldSetting( DatePickerDisplayFormatFieldSetting );
194
- acf.registerFieldSetting( DatePickerReturnFormatFieldSetting );
195
-
196
- /*
197
- * Date Time Picker
198
- *
199
- * This field type requires some extra logic for its settings
200
- *
201
- * @type function
202
- * @date 24/10/13
203
- * @since 5.0.0
204
- *
205
- * @param n/a
206
- * @return n/a
207
- */
208
-
209
- var DateTimePickerDisplayFormatFieldSetting = DisplayFormatFieldSetting.extend({
210
- type: 'date_time_picker',
211
- name: 'display_format'
212
- });
213
-
214
- var DateTimePickerReturnFormatFieldSetting = DisplayFormatFieldSetting.extend({
215
- type: 'date_time_picker',
216
- name: 'return_format'
217
- });
218
-
219
- acf.registerFieldSetting( DateTimePickerDisplayFormatFieldSetting );
220
- acf.registerFieldSetting( DateTimePickerReturnFormatFieldSetting );
221
-
222
- /*
223
- * Time Picker
224
- *
225
- * This field type requires some extra logic for its settings
226
- *
227
- * @type function
228
- * @date 24/10/13
229
- * @since 5.0.0
230
- *
231
- * @param n/a
232
- * @return n/a
233
- */
234
-
235
- var TimePickerDisplayFormatFieldSetting = DisplayFormatFieldSetting.extend({
236
- type: 'time_picker',
237
- name: 'display_format'
238
- });
239
-
240
- var TimePickerReturnFormatFieldSetting = DisplayFormatFieldSetting.extend({
241
- name: 'time_picker',
242
- name: 'return_format'
243
- });
244
-
245
- acf.registerFieldSetting( TimePickerDisplayFormatFieldSetting );
246
- acf.registerFieldSetting( TimePickerReturnFormatFieldSetting );
247
-
248
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/_build/js/field-group.js DELETED
@@ -1,182 +0,0 @@
1
- (function($, undefined){
2
-
3
- /**
4
- * fieldGroupManager
5
- *
6
- * Generic field group functionality
7
- *
8
- * @date 15/12/17
9
- * @since 5.7.0
10
- *
11
- * @param void
12
- * @return void
13
- */
14
-
15
- var fieldGroupManager = new acf.Model({
16
-
17
- id: 'fieldGroupManager',
18
-
19
- events: {
20
- 'submit #post': 'onSubmit',
21
- 'click a[href="#"]': 'onClick',
22
- 'click .submitdelete': 'onClickTrash',
23
- },
24
-
25
- filters: {
26
- 'find_fields_args': 'filterFindFieldArgs'
27
- },
28
-
29
- onSubmit: function( e, $el ){
30
-
31
- // vars
32
- var $title = $('#titlewrap #title');
33
-
34
- // empty
35
- if( !$title.val() ) {
36
-
37
- // prevent default
38
- e.preventDefault();
39
-
40
- // unlock form
41
- acf.validation.unlockForm( $el );
42
-
43
- // alert
44
- alert( acf.__('Field group title is required') );
45
-
46
- // focus
47
- $title.focus();
48
- }
49
- },
50
-
51
- onClick: function( e ){
52
- e.preventDefault();
53
- },
54
-
55
- onClickTrash: function( e ){
56
- var result = confirm( acf.__('Move to trash. Are you sure?') );
57
- if( !result ) {
58
- e.preventDefault();
59
- }
60
- },
61
-
62
- filterFindFieldArgs: function( args ){
63
- args.visible = true;
64
- return args;
65
- }
66
- });
67
-
68
-
69
- /**
70
- * screenOptionsManager
71
- *
72
- * Screen options functionality
73
- *
74
- * @date 15/12/17
75
- * @since 5.7.0
76
- *
77
- * @param void
78
- * @return void
79
- */
80
-
81
- var screenOptionsManager = new acf.Model({
82
-
83
- id: 'screenOptionsManager',
84
- wait: 'prepare',
85
-
86
- events: {
87
- 'change': 'onChange'
88
- },
89
-
90
- initialize: function(){
91
-
92
- // vars
93
- var $div = $('#adv-settings');
94
- var $append = $('#acf-append-show-on-screen');
95
-
96
- // append
97
- $div.find('.metabox-prefs').append( $append.html() );
98
- $div.find('.metabox-prefs br').remove();
99
-
100
- // clean up
101
- $append.remove();
102
-
103
- // initialize
104
- this.$el = $('#acf-field-key-hide');
105
-
106
- // render
107
- this.render();
108
- },
109
-
110
- isChecked: function(){
111
- return this.$el.prop('checked');
112
- },
113
-
114
- onChange: function( e, $el ) {
115
- var val = this.isChecked() ? 1 : 0;
116
- acf.updateUserSetting('show_field_keys', val);
117
- this.render();
118
- },
119
-
120
- render: function(){
121
- if( this.isChecked() ) {
122
- $('#acf-field-group-fields').addClass('show-field-keys');
123
- } else {
124
- $('#acf-field-group-fields').removeClass('show-field-keys');
125
- }
126
- }
127
-
128
- });
129
-
130
-
131
- /**
132
- * appendFieldManager
133
- *
134
- * Appends fields together
135
- *
136
- * @date 15/12/17
137
- * @since 5.7.0
138
- *
139
- * @param void
140
- * @return void
141
- */
142
-
143
- var appendFieldManager = new acf.Model({
144
-
145
- actions: {
146
- 'new_field' : 'onNewField'
147
- },
148
-
149
- onNewField: function( field ){
150
-
151
- // bail ealry if not append
152
- if( !field.has('append') ) return;
153
-
154
- // vars
155
- var append = field.get('append');
156
- var $sibling = field.$el.siblings('[data-name="' + append + '"]').first();
157
-
158
- // bail early if no sibling
159
- if( !$sibling.length ) return;
160
-
161
- // ul
162
- var $div = $sibling.children('.acf-input');
163
- var $ul = $div.children('ul');
164
-
165
- // create ul
166
- if( !$ul.length ) {
167
- $div.wrapInner('<ul class="acf-hl"><li></li></ul>');
168
- $ul = $div.children('ul');
169
- }
170
-
171
- // li
172
- var html = field.$('.acf-input').html();
173
- var $li = $('<li>' + html + '</li>');
174
- $ul.append( $li );
175
- $ul.attr('data-cols', $ul.children().length );
176
-
177
- // clean up
178
- field.remove();
179
- }
180
- });
181
-
182
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/css/acf-dark.css CHANGED
@@ -1 +1 @@
1
- .acf-box{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-box .footer,.acf-box .title{border-color:#23282d}.acf-box h2{color:#bbc8d4}.acf-box table,.acf-box tbody,.acf-box tr{background:0 0!important}.acf-thead{color:#bbc8d4;border-color:#191f25}.acf-tfoot{background-color:#2d3136;border-color:#23282d}.acf-table.-clear,.acf-table.-clear tr{background:0 0!important}.acf-loading-overlay{background:rgba(0,0,0,.5)}.acf-fields>.acf-field{border-color:#23282d}.acf-fields.-left>.acf-field:before{background:rgba(0,0,0,.1);border-color:#23282d}.acf-fields.-border{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-field[data-width]+.acf-field[data-width]{border-color:#23282d}.acf-input-append,.acf-input-prepend{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-fields>.acf-tab-wrap{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-fields>.acf-tab-wrap .acf-tab-group{background-color:#2d3136;border-color:#23282d}.acf-fields>.acf-tab-wrap .acf-tab-group li a{background-color:#2d3136;border-color:#23282d}.acf-fields>.acf-tab-wrap .acf-tab-group li a:hover{background-color:#2d3136;border-color:#23282d;color:#bbc8d4}.acf-fields>.acf-tab-wrap .acf-tab-group li.active a{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-file-uploader .show-if-value{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-file-uploader .show-if-value .file-icon{background-color:#2d3136;border-color:#23282d}.acf-oembed{background-color:#2d3136;border-color:#23282d}.acf-oembed .title{background-color:#50626f;border-color:#191f25;color:#fff}.acf-gallery{background-color:#2d3136;border-color:#23282d}.acf-gallery .acf-gallery-main{background:#23282d}.acf-gallery .acf-gallery-attachment .margin{background-color:#2d3136;border-color:#23282d}.acf-gallery .acf-gallery-side{background-color:#2d3136;border-color:#23282d}.acf-gallery .acf-gallery-side .acf-gallery-side-info{background-color:#2d3136;border-color:#23282d}.acf-gallery .acf-gallery-toolbar{background-color:#2d3136;border-color:#23282d}.acf-button-group label:not(.selected){background-color:#2d3136;border-color:#23282d}.acf-switch:not(.-on){background-color:#2d3136;border-color:#23282d}.acf-switch:not(.-on) .acf-switch-slider{background-color:#50626f;border-color:#191f25;color:#fff}.acf-link .link-wrap{background-color:#2d3136;border-color:#23282d}.acf-relationship .filters{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-relationship .selection{background-color:#2d3136;border-color:#23282d}.acf-relationship .selection .choices,.acf-relationship .selection .choices-list,.acf-relationship .selection .values{background-color:#2d3136;border-color:#23282d}.acf-taxonomy-field .categorychecklist-holder{background-color:#2d3136;border-color:#23282d}.acf-google-map{background-color:#2d3136;border-color:#23282d}.acf-google-map .title{background-color:#50626f;border-color:#191f25;color:#fff}.acf-accordion{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-field.acf-accordion .acf-accordion-content>.acf-fields{border-color:#191f25}.acf-flexible-content .layout{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-flexible-content .layout .acf-fc-layout-handle{background-color:#2d3136;border-color:#23282d}#wpbody .acf-repeater>.acf-table{background-color:#2d3136;border-color:#23282d}#wpbody .acf-repeater>.acf-table>tbody>tr,#wpbody .acf-repeater>.acf-table>thead>tr{background:0 0}#wpbody .acf-repeater>.acf-table>tbody>tr>td,#wpbody .acf-repeater>.acf-table>tbody>tr>th,#wpbody .acf-repeater>.acf-table>thead>tr>td,#wpbody .acf-repeater>.acf-table>thead>tr>th{border-color:#191f25}#acf-field-group-fields .acf-field-list-wrap{background-color:#32373c;border-color:#191f25;color:#bbc8d4}#acf-field-group-fields .acf-field-object{background-color:#32373c;border-color:#191f25;color:#bbc8d4;border-color:#23282d}#acf-field-group-fields .acf-field-object table,#acf-field-group-fields .acf-field-object tbody,#acf-field-group-fields .acf-field-object td,#acf-field-group-fields .acf-field-object th,#acf-field-group-fields .acf-field-object tr{background:0 0;border-color:#23282d}#acf-field-group-fields .acf-field-object .acf-field .acf-label{background-color:#2d3136;border-color:#23282d}#acf-field-group-fields .acf-field-object.ui-sortable-helper{border-color:#191f25;box-shadow:none}#acf-field-group-fields .acf-field-object.ui-sortable-placeholder{background-color:#2d3136;border-color:#23282d;box-shadow:none}#acf-field-group-fields .acf-field-object+.acf-field-object-accordion::before,#acf-field-group-fields .acf-field-object+.acf-field-object-tab::before{background-color:#2d3136;border-color:#23282d}.acf-meta-box-wrap .acf-fields{background-color:#50626f;border-color:#191f25;color:#fff;background:0 0}
1
+ .acf-box{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-box .footer,.acf-box .title{border-color:#23282d}.acf-box h2{color:#bbc8d4}.acf-box table,.acf-box tbody,.acf-box tr{background:0 0!important}.acf-thead{color:#bbc8d4;border-color:#191f25}.acf-tfoot{background-color:#2d3136;border-color:#23282d}.acf-table.-clear,.acf-table.-clear tr{background:0 0!important}.acf-loading-overlay{background:rgba(0,0,0,.5)}.acf-fields>.acf-field{border-color:#23282d}.acf-fields.-left>.acf-field:before{background:rgba(0,0,0,.1);border-color:#23282d}.acf-fields.-border{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-field[data-width]+.acf-field[data-width]{border-color:#23282d}.acf-input-append,.acf-input-prepend{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-fields>.acf-tab-wrap{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-fields>.acf-tab-wrap .acf-tab-group{background-color:#2d3136;border-color:#23282d}.acf-fields>.acf-tab-wrap .acf-tab-group li a{background-color:#2d3136;border-color:#23282d}.acf-fields>.acf-tab-wrap .acf-tab-group li a:hover{background-color:#2d3136;border-color:#23282d;color:#bbc8d4}.acf-fields>.acf-tab-wrap .acf-tab-group li.active a{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-fields.-sidebar:before{background-color:#2d3136;border-color:#23282d}.acf-fields.-sidebar.-left:before{background-color:#2d3136;border-color:#23282d;background:#23282d}.acf-fields.-sidebar.-left>.acf-tab-wrap.-left .acf-tab-group li a{background-color:#2d3136;border-color:#23282d}.acf-fields.-sidebar.-left>.acf-tab-wrap.-left .acf-tab-group li.active a{background-color:#2d3136;border-color:#23282d}.acf-file-uploader .show-if-value{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-file-uploader .show-if-value .file-icon{background-color:#2d3136;border-color:#23282d}.acf-oembed{background-color:#2d3136;border-color:#23282d}.acf-oembed .title{background-color:#50626f;border-color:#191f25;color:#fff}.acf-gallery{background-color:#2d3136;border-color:#23282d}.acf-gallery .acf-gallery-main{background:#23282d}.acf-gallery .acf-gallery-attachment .margin{background-color:#2d3136;border-color:#23282d}.acf-gallery .acf-gallery-side{background-color:#2d3136;border-color:#23282d}.acf-gallery .acf-gallery-side .acf-gallery-side-info{background-color:#2d3136;border-color:#23282d}.acf-gallery .acf-gallery-toolbar{background-color:#2d3136;border-color:#23282d}.acf-button-group label:not(.selected){background-color:#2d3136;border-color:#23282d}.acf-switch:not(.-on){background-color:#2d3136;border-color:#23282d}.acf-switch:not(.-on) .acf-switch-slider{background-color:#50626f;border-color:#191f25;color:#fff}.acf-link .link-wrap{background-color:#2d3136;border-color:#23282d}.acf-relationship .filters{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-relationship .selection{background-color:#2d3136;border-color:#23282d}.acf-relationship .selection .choices,.acf-relationship .selection .choices-list,.acf-relationship .selection .values{background-color:#2d3136;border-color:#23282d}.acf-taxonomy-field .categorychecklist-holder{background-color:#2d3136;border-color:#23282d}.acf-google-map{background-color:#2d3136;border-color:#23282d}.acf-google-map .title{background-color:#50626f;border-color:#191f25;color:#fff}.acf-accordion{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-field.acf-accordion .acf-accordion-content>.acf-fields{border-color:#191f25}.acf-flexible-content .layout{background-color:#32373c;border-color:#191f25;color:#bbc8d4}.acf-flexible-content .layout .acf-fc-layout-handle{background-color:#2d3136;border-color:#23282d}.acf-flexible-content .layout .acf-fc-layout-handle .acf-fc-layout-order{background-color:#32373c;border-color:#191f25;color:#bbc8d4}#wpbody .acf-table{background-color:#2d3136;border-color:#23282d}#wpbody .acf-table>tbody>tr,#wpbody .acf-table>thead>tr{background:0 0}#wpbody .acf-table>tbody>tr>td,#wpbody .acf-table>tbody>tr>th,#wpbody .acf-table>thead>tr>td,#wpbody .acf-table>thead>tr>th{border-color:#191f25}.acf-field select optgroup,.acf-field select optgroup:nth-child(2n){background:#50626f}#acf-field-group-fields .acf-field-list-wrap{background-color:#32373c;border-color:#191f25;color:#bbc8d4}#acf-field-group-fields .acf-field-list .no-fields-message{background-color:#32373c;border-color:#191f25;color:#bbc8d4}#acf-field-group-fields .acf-field-object{background-color:#32373c;border-color:#191f25;color:#bbc8d4;border-color:#23282d}#acf-field-group-fields .acf-field-object table,#acf-field-group-fields .acf-field-object tbody,#acf-field-group-fields .acf-field-object td,#acf-field-group-fields .acf-field-object th,#acf-field-group-fields .acf-field-object tr{background:0 0;border-color:#23282d}#acf-field-group-fields .acf-field-object .acf-field .acf-label{background-color:#2d3136;border-color:#23282d}#acf-field-group-fields .acf-field-object.ui-sortable-helper{border-color:#191f25;box-shadow:none}#acf-field-group-fields .acf-field-object.ui-sortable-placeholder{background-color:#2d3136;border-color:#23282d;box-shadow:none}#acf-field-group-fields .acf-field-object+.acf-field-object-accordion::before,#acf-field-group-fields .acf-field-object+.acf-field-object-tab::before{background-color:#2d3136;border-color:#23282d}.acf-meta-box-wrap .acf-fields{background-color:#50626f;border-color:#191f25;color:#fff;background:0 0}
assets/css/acf-global.css CHANGED
@@ -563,28 +563,6 @@ a.acf-icon.-cancel.grey:hover {
563
  }
564
  /*--------------------------------------------------------------------------------------------
565
  *
566
- * Sprite
567
- *
568
- *--------------------------------------------------------------------------------------------*/
569
- [class^="acf-sprite-"] {
570
- display: inline-block;
571
- width: 16px;
572
- height: 16px;
573
- background: url(../images/sprite.png);
574
- }
575
- .acf-icon [class^="acf-sprite-"] {
576
- margin: 1px auto 0;
577
- }
578
- .acf-sprite-logo {
579
- background-position: 0 0;
580
- width: 100px;
581
- height: 46px;
582
- }
583
- .acf-icon .acf-sprite-logo {
584
- margin-top: 52px;
585
- }
586
- /*--------------------------------------------------------------------------------------------
587
- *
588
  * acf-box
589
  *
590
  *--------------------------------------------------------------------------------------------*/
@@ -1062,23 +1040,41 @@ html[dir="rtl"] #acf-popup .acf-popup-box .title .acf-icon {
1062
  *
1063
  *--------------------------------------------------------------------------------------------*/
1064
  #acf-upgrade-notice {
1065
- margin-left: -20px;
1066
  background: #fff;
1067
- border-bottom: #E5E5E5 solid 1px;
1068
- }
1069
- #acf-upgrade-notice .inner {
1070
  padding: 20px;
1071
  }
1072
- #acf-upgrade-notice .logo {
1073
- position: relative;
 
 
 
 
1074
  float: left;
 
 
 
 
 
 
1075
  }
1076
- #acf-upgrade-notice .content {
1077
- margin-left: 170px;
1078
- max-width: 710px;
 
 
 
 
 
 
1079
  }
1080
  #acf-upgrade-notice p {
1081
- font-size: 14px;
 
 
 
 
1082
  }
1083
  /*--------------------------------------------------------------------------------------------
1084
  *
@@ -1101,34 +1097,10 @@ html[dir="rtl"] #acf-popup .acf-popup-box .title .acf-icon {
1101
  text-align: center;
1102
  }
1103
  .acf-wrap .feature-section {
1104
- margin-top: 40px;
1105
- padding-bottom: 20px;
1106
  }
1107
- .acf-three-col img {
1108
- border: #DDDDDD solid 1px;
1109
- margin: 0 0 20px;
1110
- }
1111
- .acf-three-col {
1112
- position: relative;
1113
- overflow: hidden;
1114
- }
1115
- .acf-three-col > div {
1116
- float: left;
1117
- margin: 0 0 15px 5%;
1118
- position: relative;
1119
- width: 30%;
1120
- }
1121
- .acf-three-col > div:first-child,
1122
- .acf-three-col > br + div {
1123
- margin-left: 0;
1124
- clear: left;
1125
- }
1126
- .acf-three-col > br {
1127
- display: none;
1128
- }
1129
- .acf-wrap .acf-three-col h3,
1130
- .acf-wrap .acf-three-col h4 {
1131
- margin-top: 0;
1132
  }
1133
  .acf-wrap .changelog {
1134
  list-style: disc;
@@ -1137,6 +1109,40 @@ html[dir="rtl"] #acf-popup .acf-popup-box .title .acf-icon {
1137
  .acf-wrap .changelog li {
1138
  margin: 0 0 0.75em;
1139
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1140
  /*--------------------------------------------------------------------------------------------
1141
  *
1142
  * acf-hl cols
@@ -1485,11 +1491,6 @@ html[dir="rtl"] .acf-table > tbody > tr > td.order + td {
1485
  *
1486
  *---------------------------------------------------------------------------------------------*/
1487
  @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
1488
- [class^="acf-sprite-"],
1489
- [class*=" acf-sprite-"] {
1490
- background-image: url(../images/sprite@2x.png);
1491
- background-size: 250px 250px;
1492
- }
1493
  .acf-loading,
1494
  .acf-spinner {
1495
  background-image: url(../images/spinner@2x.gif);
563
  }
564
  /*--------------------------------------------------------------------------------------------
565
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
566
  * acf-box
567
  *
568
  *--------------------------------------------------------------------------------------------*/
1040
  *
1041
  *--------------------------------------------------------------------------------------------*/
1042
  #acf-upgrade-notice {
1043
+ position: relative;
1044
  background: #fff;
1045
+ border-left: 4px solid #00a0d2;
 
 
1046
  padding: 20px;
1047
  }
1048
+ #acf-upgrade-notice:after {
1049
+ clear: both;
1050
+ content: "";
1051
+ display: table;
1052
+ }
1053
+ #acf-upgrade-notice .col-content {
1054
  float: left;
1055
+ width: 65%;
1056
+ }
1057
+ #acf-upgrade-notice .col-actions {
1058
+ float: right;
1059
+ text-align: center;
1060
+ padding: 10px;
1061
  }
1062
+ #acf-upgrade-notice img {
1063
+ float: left;
1064
+ width: 70px;
1065
+ height: 70px;
1066
+ margin: 0 20px 0 0;
1067
+ }
1068
+ #acf-upgrade-notice h2 {
1069
+ font-size: 16px;
1070
+ margin: 0;
1071
  }
1072
  #acf-upgrade-notice p {
1073
+ padding: 0;
1074
+ margin-bottom: 0;
1075
+ }
1076
+ #acf-upgrade-notice .button:before {
1077
+ margin-top: 11px;
1078
  }
1079
  /*--------------------------------------------------------------------------------------------
1080
  *
1097
  text-align: center;
1098
  }
1099
  .acf-wrap .feature-section {
1100
+ padding: 40px 0;
 
1101
  }
1102
+ .acf-wrap .feature-section h2 {
1103
+ margin-top: 20px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1104
  }
1105
  .acf-wrap .changelog {
1106
  list-style: disc;
1109
  .acf-wrap .changelog li {
1110
  margin: 0 0 0.75em;
1111
  }
1112
+ .acf-wrap .acf-three-col {
1113
+ display: flex;
1114
+ flex-wrap: wrap;
1115
+ justify-content: space-between;
1116
+ }
1117
+ .acf-wrap .acf-three-col > div {
1118
+ flex: 1;
1119
+ align-self: flex-start;
1120
+ min-width: 31%;
1121
+ max-width: 31%;
1122
+ }
1123
+ @media screen and (max-width: 880px) {
1124
+ .acf-wrap .acf-three-col > div {
1125
+ min-width: 48%;
1126
+ }
1127
+ }
1128
+ @media screen and (max-width: 640px) {
1129
+ .acf-wrap .acf-three-col > div {
1130
+ min-width: 100%;
1131
+ }
1132
+ }
1133
+ .acf-wrap .acf-three-col h3 .badge {
1134
+ display: inline-block;
1135
+ vertical-align: top;
1136
+ border-radius: 5px;
1137
+ background: #fc9700;
1138
+ color: #fff;
1139
+ font-weight: normal;
1140
+ font-size: 12px;
1141
+ padding: 2px 5px;
1142
+ }
1143
+ .acf-wrap .acf-three-col img + h3 {
1144
+ margin-top: 0.5em;
1145
+ }
1146
  /*--------------------------------------------------------------------------------------------
1147
  *
1148
  * acf-hl cols
1491
  *
1492
  *---------------------------------------------------------------------------------------------*/
1493
  @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
 
 
 
 
 
1494
  .acf-loading,
1495
  .acf-spinner {
1496
  background-image: url(../images/spinner@2x.gif);
assets/images/acf-logo.png ADDED
Binary file
assets/images/sprite.png DELETED
Binary file
assets/images/sprite@2x.png DELETED
Binary file
assets/js/acf-field-group.js CHANGED
@@ -315,7 +315,6 @@
315
 
316
  // get input value
317
  var $input = this.$input( name );
318
- //console.log($input );
319
  var value = $input.length ? $input.val() : null;
320
 
321
  // set data silently (cache)
@@ -980,7 +979,7 @@
980
  // check parent
981
  var parent = this.getParent();
982
  if( parent ) {
983
- ID = parent.prop('ID') || parent.prop('key');
984
  }
985
 
986
  // update
315
 
316
  // get input value
317
  var $input = this.$input( name );
 
318
  var value = $input.length ? $input.val() : null;
319
 
320
  // set data silently (cache)
979
  // check parent
980
  var parent = this.getParent();
981
  if( parent ) {
982
+ ID = parseInt(parent.prop('ID')) || parent.prop('key');
983
  }
984
 
985
  // update
assets/js/acf-field-group.min.js CHANGED
@@ -1 +1 @@
1
- !function($,e){var t=new acf.Model({id:"fieldGroupManager",events:{"submit #post":"onSubmit",'click a[href="#"]':"onClick","click .submitdelete":"onClickTrash"},filters:{find_fields_args:"filterFindFieldArgs"},onSubmit:function(e,t){var i=$("#titlewrap #title");i.val()||(e.preventDefault(),acf.validation.unlockForm(t),alert(acf.__("Field group title is required")),i.focus())},onClick:function(e){e.preventDefault()},onClickTrash:function(e){confirm(acf.__("Move to trash. Are you sure?"))||e.preventDefault()},filterFindFieldArgs:function(e){return e.visible=!0,e}}),i=new acf.Model({id:"screenOptionsManager",wait:"prepare",events:{change:"onChange"},initialize:function(){var e=$("#adv-settings"),t=$("#acf-append-show-on-screen");e.find(".metabox-prefs").append(t.html()),e.find(".metabox-prefs br").remove(),t.remove(),this.$el=$("#acf-field-key-hide"),this.render()},isChecked:function(){return this.$el.prop("checked")},onChange:function(e,t){var i=this.isChecked()?1:0;acf.updateUserSetting("show_field_keys",i),this.render()},render:function(){this.isChecked()?$("#acf-field-group-fields").addClass("show-field-keys"):$("#acf-field-group-fields").removeClass("show-field-keys")}}),n=new acf.Model({actions:{new_field:"onNewField"},onNewField:function(e){if(e.has("append")){var t=e.get("append"),i=e.$el.siblings('[data-name="'+t+'"]').first();if(i.length){var n=i.children(".acf-input"),a=n.children("ul");a.length||(n.wrapInner('<ul class="acf-hl"><li></li></ul>'),a=n.children("ul"));var c=e.$(".acf-input").html(),l=$("<li>"+c+"</li>");a.append(l),a.attr("data-cols",a.children().length),e.remove()}}}})}(jQuery),function($,e){acf.FieldObject=acf.Model.extend({eventScope:".acf-field-object",events:{"click .edit-field":"onClickEdit","click .delete-field":"onClickDelete","click .duplicate-field":"duplicate","click .move-field":"move","change .field-type":"onChangeType","change .field-required":"onChangeRequired","blur .field-label":"onChangeLabel","blur .field-name":"onChangeName",change:"onChange",changed:"onChanged"},data:{id:0,key:"",type:""},setup:function(e){this.$el=e,this.inherit(e),this.prop("ID"),this.prop("parent"),this.prop("menu_order")},$input:function(e){return $("#"+this.getInputId()+"-"+e)},$meta:function(){return this.$(".meta:first")},$handle:function(){return this.$(".handle:first")},$settings:function(){return this.$(".settings:first")},$setting:function(e){return this.$(".acf-field-settings:first > .acf-field-setting-"+e)},getParent:function(){return acf.getFieldObjects({child:this.$el,limit:1}).pop()},getParents:function(){return acf.getFieldObjects({child:this.$el})},getFields:function(){return acf.getFieldObjects({parent:this.$el})},getInputName:function(){return"acf_fields["+this.get("id")+"]"},getInputId:function(){return"acf_fields-"+this.get("id")},newInput:function(e,t){var i=this.getInputId(),n=this.getInputName();e&&(i+="-"+e,n+="["+e+"]");var a=$("<input />").attr({id:i,name:n,value:t});return this.$("> .meta").append(a),a},getProp:function(e){if(this.has(e))return this.get(e);var t=this.$input(e),i=t.length?t.val():null;return this.set(e,i,!0),i},setProp:function(e,t){var i=this.$input(e),n=i.val();return i.length||(i=this.newInput(e,t)),null===t?i.remove():i.val(t),this.has(e)?this.set(e,t):this.set(e,t,!0),this},prop:function(e,t){return void 0!==t?this.setProp(e,t):this.getProp(e)},props:function(e){Object.keys(e).map(function(t){this.setProp(t,e[t])},this)},getLabel:function(){var e=this.prop("label");return""===e&&(e=acf.__("(no label)")),e},getName:function(){return this.prop("name")},getType:function(){return this.prop("type")},getTypeLabel:function(){var e=this.prop("type"),t=acf.get("fieldTypes");return t[e]?t[e].label:e},getKey:function(){return this.prop("key")},initialize:function(){},render:function(){var e=this.$(".handle:first"),t=this.prop("menu_order"),i=this.getLabel(),n=this.prop("name"),a=this.getTypeLabel(),c=this.prop("key"),l=this.$input("required").prop("checked");e.find(".acf-icon").html(parseInt(t)+1),l&&(i+=' <span class="acf-required">*</span>'),e.find(".li-field-label strong a").html(i),e.find(".li-field-name").text(n),e.find(".li-field-type").text(a),e.find(".li-field-key").text(c),acf.doAction("render_field_object",this)},refresh:function(){acf.doAction("refresh_field_object",this)},isOpen:function(){return this.$el.hasClass("open")},onClickEdit:function(e){this.isOpen()?this.close():this.open()},open:function(){var e=this.$el.children(".settings");e.slideDown(),this.$el.addClass("open"),acf.doAction("open_field_object",this),this.trigger("openFieldObject"),acf.doAction("show",e)},close:function(){var e=this.$el.children(".settings");e.slideUp(),this.$el.removeClass("open"),acf.doAction("close_field_object",this),this.trigger("closeFieldObject"),acf.doAction("hide",e)},serialize:function(){return acf.serialize(this.$el,this.getInputName())},save:function(e){e=e||"settings","settings"!==this.getProp("save")&&(this.setProp("save",e),this.$el.attr("data-save",e),acf.doAction("save_field_object",this,e))},submit:function(){var e=this.getInputName(),t=this.get("save");this.isOpen()&&this.close(),"settings"==t||("meta"==t?this.$('> .settings [name^="'+e+'"]').remove():this.$('[name^="'+e+'"]').remove()),acf.doAction("submit_field_object",this)},onChange:function(e,t){this.save(),acf.doAction("change_field_object",this)},onChanged:function(e,t,i,n){"save"!=i&&(["menu_order","parent"].indexOf(i)>-1?this.save("meta"):this.save(),["menu_order","label","required","name","type","key"].indexOf(i)>-1&&this.render(),acf.doAction("change_field_object_"+i,this,n))},onChangeLabel:function(e,t){var i=t.val();if(this.set("label",i),""==this.prop("name")){var n=acf.applyFilters("generate_field_object_name",acf.strSanitize(i),this);this.prop("name",n)}},onChangeName:function(e,t){var i=t.val();this.set("name",i),"field_"===i.substr(0,6)&&alert(acf.__('The string "field_" may not be used at the start of a field name'))},onChangeRequired:function(e,t){var i=t.prop("checked")?1:0;this.set("required",i)},delete:function(e){e=acf.parseArgs(e,{animate:!0});var t=this.prop("ID");if(t){var i=$("#_acf_delete_fields"),n=i.val()+"|"+t;i.val(n)}acf.doAction("delete_field_object",this),e.animate?this.removeAnimate():this.remove()},onClickDelete:function(e,t){this.$el.addClass("-hover");var i=this,n=acf.newTooltip({confirmRemove:!0,target:t,confirm:function(){i.delete(!0)},cancel:function(){i.$el.removeClass("-hover")}})},removeAnimate:function(){var e=this,t=this.$el.parent(),i=acf.findFieldObjects({sibling:this.$el});acf.remove({target:this.$el,endHeight:i.length?0:50,complete:function(){e.remove(),acf.doAction("removed_field_object",e,t)}}),acf.doAction("remove_field_object",e,t)},duplicate:function(){var e=acf.uniqid("field_"),t=acf.duplicate({target:this.$el,search:this.get("id"),replace:e});t.attr("data-key",e);var i=acf.getFieldObject(t);this.isOpen()?this.close():i.open();var n=i.$setting("label input");setTimeout(function(){n.focus()},251);var a=i.prop("label"),c=i.prop("name"),l=c.split("_").pop(),o=acf.__("copy");if($.isNumeric(l)){var r=1*l+1;a=a.replace(l,r),c=c.replace(l,r)}else if(0===l.indexOf(o)){var r=1*l.replace(o,"");r=r?r+1:2,a=a.replace(l,o+r),c=c.replace(l,o+r)}else a+=" ("+o+")",c+="_"+o;i.prop("ID",0),i.prop("label",a),i.prop("name",c),i.prop("key",e),acf.doAction("duplicate_field_object",this,i),acf.doAction("append_field_object",i)},wipe:function(){var e=this.get("id"),t=this.get("key"),i=acf.uniqid("field_");acf.rename({target:this.$el,search:e,replace:i}),this.set("id",i),this.set("prevId",e),this.set("prevKey",t),this.prop("key",i),this.prop("ID",0),this.$el.attr("data-key",i),this.$el.attr("data-id",i),acf.doAction("wipe_field_object",this)},move:function(){var e=function(e){return"settings"==e.get("save")},t=e(this);if(t||acf.getFieldObjects({parent:this.$el}).map(function(i){t=e(i)||i.changed}),t)return void alert(acf.__("This field cannot be moved until its changes have been saved"));var i=this.prop("ID"),n=this,a=!1,c=function(e){a.loading(!1),a.content(e),a.on("submit","form",l)},l=function(e,t){e.preventDefault(),acf.startButtonLoading(a.$(".button"));var n={action:"acf/field_group/move_field",field_id:i,field_group_id:a.$("select").val()};$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(n),type:"post",dataType:"html",success:o})},o=function(e){a.content(e),n.removeAnimate()};!function(){a=acf.newPopup({title:acf.__("Move Custom Field"),loading:!0,width:"300px"});var e={action:"acf/field_group/move_field",field_id:i};$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(e),type:"post",dataType:"html",success:c})}()},onChangeType:function(e,t){this.changeTimeout&&clearTimeout(this.changeTimeout),this.changeTimeout=this.setTimeout(function(){this.changeType(t.val())},300)},changeType:function(e){var t=this.prop("type"),i=acf.strSlugify("acf-field-object-"+t),n=acf.strSlugify("acf-field-object-"+e);this.$el.removeClass(i).addClass(n),this.$el.attr("data-type",e),this.$el.data("type",e),this.has("xhr")&&this.get("xhr").abort();var a=this.$("> .settings > table > tbody"),c=a.children('[data-setting="'+t+'"]');if(this.set("settings-"+t,c),c.detach(),this.has("settings-"+e)){var l=this.get("settings-"+e);return this.$setting("conditional_logic").before(l),void this.set("type",e)}var o=$('<tr class="acf-field"><td class="acf-label"></td><td class="acf-input"><div class="acf-loading"></div></td></tr>');this.$setting("conditional_logic").before(o);var r={action:"acf/field_group/render_field_settings",field:this.serialize(),prefix:this.getInputName()},d=$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(r),type:"post",dataType:"html",context:this,success:function(e){e&&(o.after(e),acf.doAction("append",a))},complete:function(){o.remove(),this.set("type",e)}});this.set("xhr",d)},updateParent:function(){var e=acf.get("post_id"),t=this.getParent();t&&(e=t.prop("ID")||t.prop("key")),this.prop("parent",e)}})}(jQuery),function($,e){var t=function(e){return acf.strPascalCase(e||"")+"FieldSetting"};acf.registerFieldSetting=function(e){var i=e.prototype,n=t(i.type+" "+i.name);this.models[n]=e},acf.newFieldSetting=function(e){var i=e.get("setting")||"",n=e.get("name")||"",a=t(i+" "+n),c=acf.models[a]||null;return null!==c&&new c(e)},acf.getFieldSetting=function(e){return e instanceof jQuery&&(e=acf.getField(e)),e.setting};var i=new acf.Model({actions:{new_field:"onNewField"},onNewField:function(e){e.setting=acf.newFieldSetting(e)}});acf.FieldSetting=acf.Model.extend({field:!1,type:"",name:"",wait:"ready",eventScope:".acf-field",events:{change:"render"},setup:function(e){var t=e.$el;this.$el=t,this.field=e,this.$fieldObject=t.closest(".acf-field-object"),this.fieldObject=acf.getFieldObject(this.$fieldObject),$.extend(this.data,e.data)},initialize:function(){this.render()},render:function(){}});var n=acf.FieldSetting.extend({type:"",name:"",render:function(){var e=this.$('input[type="radio"]:checked');"other"!=e.val()&&this.$('input[type="text"]').val(e.val())}}),a=n.extend({type:"date_picker",name:"display_format"}),c=n.extend({type:"date_picker",name:"return_format"});acf.registerFieldSetting(a),acf.registerFieldSetting(c);var l=n.extend({type:"date_time_picker",name:"display_format"}),o=n.extend({type:"date_time_picker",name:"return_format"});acf.registerFieldSetting(l),acf.registerFieldSetting(o);var r=n.extend({type:"time_picker",name:"display_format"}),d=n.extend({name:"time_picker",name:"return_format"});acf.registerFieldSetting(r),acf.registerFieldSetting(d)}(jQuery),function($,e){var t=acf.FieldSetting.extend({type:"",name:"conditional_logic",events:{"change .conditions-toggle":"onChangeToggle","click .add-conditional-group":"onClickAddGroup","focus .condition-rule-field":"onFocusField","change .condition-rule-field":"onChangeField","change .condition-rule-operator":"onChangeOperator","click .add-conditional-rule":"onClickAdd","click .remove-conditional-rule":"onClickRemove"},$rule:!1,scope:function(e){return this.$rule=e,this},ruleData:function(e,t){return this.$rule.data.apply(this.$rule,arguments)},$input:function(e){return this.$rule.find(".condition-rule-"+e)},$td:function(e){return this.$rule.find("td."+e)},$toggle:function(){return this.$(".conditions-toggle")},$control:function(){return this.$(".rule-groups")},$groups:function(){return this.$(".rule-group")},$rules:function(){return this.$(".rule")},open:function(){var e=this.$control();e.show(),acf.enable(e)},close:function(){var e=this.$control();e.hide(),acf.disable(e)},render:function(){this.$toggle().prop("checked")?(this.renderRules(),this.open()):this.close()},renderRules:function(){var e=this;this.$rules().each(function(){e.renderRule($(this))})},renderRule:function(e){this.scope(e),this.renderField(),this.renderOperator(),this.renderValue()},renderField:function(){var e=[],t=[],i=this.fieldObject.cid,n=this.$input("field");acf.getFieldObjects().map(function(t){var n={id:t.getKey(),text:t.getLabel()};t.cid===i&&(n.text+=acf.__("(this field)"),n.disabled=!0),acf.getConditionTypes({fieldType:t.getType()}).length||(n.disabled=!0);var a=t.getParents().length;n.text="- ".repeat(a)+n.text,e.push(n)}),e.length||e.push({id:"",text:acf.__("No toggle fields available")}),acf.renderSelect(n,e),this.ruleData("field",n.val())},renderOperator:function(){if(this.ruleData("field")){var e=this.$input("operator"),t=e.val(),i=[];null===e.val()&&acf.renderSelect(e,[{id:this.ruleData("operator"),text:""}]);var n=acf.findFieldObject(this.ruleData("field")),a=acf.getFieldObject(n);acf.getConditionTypes({fieldType:a.getType()}).map(function(e){i.push({id:e.prototype.operator,text:acf.strEscape(e.prototype.label)})}),acf.renderSelect(e,i),this.ruleData("operator",e.val())}},renderValue:function(){if(this.ruleData("field")&&this.ruleData("operator")){var e=this.$input("value"),t=this.$td("value"),i=e.val(),n=acf.findFieldObject(this.ruleData("field")),a=acf.getFieldObject(n),c=acf.getConditionTypes({fieldType:a.getType(),operator:this.ruleData("operator")}),l=c[0].prototype,o=l.choices(a);if(o instanceof Array){var r=$("<select></select>");acf.renderSelect(r,o)}else var r=$(o);e.detach(),t.html(r),setTimeout(function(){["class","name","id"].map(function(t){r.attr(t,e.attr(t))})},0),r.prop("disabled")||acf.val(r,i,!0),this.ruleData("value",r.val())}},onChangeToggle:function(){this.render()},onClickAddGroup:function(e,t){this.addGroup()},addGroup:function(){var e=this.$(".rule-group:last"),t=acf.duplicate(e);t.find("h4").text(acf.__("or")),t.find("tr").not(":first").remove(),this.fieldObject.save()},onFocusField:function(e,t){this.renderField()},onChangeField:function(e,t){this.scope(t.closest(".rule")),this.ruleData("field",t.val()),this.renderOperator(),this.renderValue()},onChangeOperator:function(e,t){this.scope(t.closest(".rule")),this.ruleData("operator",t.val()),this.renderValue()},onClickAdd:function(e,t){var i=acf.duplicate(t.closest(".rule"));this.renderRule(i)},onClickRemove:function(e,t){var i=t.closest(".rule");this.fieldObject.save(),0==i.siblings(".rule").length&&i.closest(".rule-group").remove(),i.remove()}});acf.registerFieldSetting(t);var i=new acf.Model({actions:{duplicate_field_objects:"onDuplicateFieldObjects"},onDuplicateFieldObjects:function(e,t,i){var n={},a=$();e.map(function(e){n[e.get("prevKey")]=e.get("key"),a=a.add(e.$(".condition-rule-field"))}),a.each(function(){var e=$(this),t=e.val();t&&n[t]&&(e.find("option:selected").attr("value",n[t]),e.val(n[t]))})}})}(jQuery),function($,e){acf.findFieldObject=function(e){return acf.findFieldObjects({key:e,limit:1})},acf.findFieldObjects=function(e){e=e||{};var t=".acf-field-object",i=!1;return e=acf.parseArgs(e,{id:"",key:"",type:"",limit:!1,list:null,parent:!1,sibling:!1,child:!1}),e.id&&(t+='[data-id="'+e.id+'"]'),e.key&&(t+='[data-key="'+e.key+'"]'),e.type&&(t+='[data-type="'+e.type+'"]'),i=e.list?e.list.children(t):e.parent?e.parent.find(t):e.sibling?e.sibling.siblings(t):e.child?e.child.parents(t):$(t),e.limit&&(i=i.slice(0,e.limit)),i},acf.getFieldObject=function(e){"string"==typeof e&&(e=acf.findFieldObject(e));var t=e.data("acf");return t||(t=acf.newFieldObject(e)),t},acf.getFieldObjects=function(e){var t=acf.findFieldObjects(e),i=[];return t.each(function(){var e=acf.getFieldObject($(this));i.push(e)}),i},acf.newFieldObject=function(e){var t=new acf.FieldObject(e);return acf.doAction("new_field_object",t),t};var t=new acf.Model({priority:5,initialize:function(){["prepare","ready","append","remove"].map(function(e){this.addFieldActions(e)},this)},addFieldActions:function(e){var t=e+"_field_objects",i=e+"_field_object",n=e+"FieldObject",a=function(e){var i=acf.getFieldObjects({parent:e});if(i.length){var n=acf.arrayArgs(arguments);n.splice(0,1,t,i),acf.doAction.apply(null,n)}},c=function(e){var t=acf.arrayArgs(arguments);t.unshift(i),e.map(function(e){t[1]=e,acf.doAction.apply(null,t)})},l=function(e){var t=acf.arrayArgs(arguments);t.unshift(i),["type","name","key"].map(function(n){t[0]=i+"/"+n+"="+e.get(n),acf.doAction.apply(null,t)}),t.splice(0,2),e.trigger(n,t)};acf.addAction(e,a,5),acf.addAction(t,c,5),acf.addAction(i,l,5)}}),i=new acf.Model({id:"fieldManager",events:{"submit #post":"onSubmit","mouseenter .acf-field-list":"onHoverSortable","click .add-field":"onClickAdd"},actions:{removed_field_object:"onRemovedField",sortstop_field_object:"onReorderField",delete_field_object:"onDeleteField",change_field_object_type:"onChangeFieldType",duplicate_field_object:"onDuplicateField"},onSubmit:function(e,t){acf.getFieldObjects().map(function(e){e.submit()})},setFieldMenuOrder:function(e){this.renderFields(e.$el.parent())},onHoverSortable:function(e,t){t.hasClass("ui-sortable")||t.sortable({handle:".acf-sortable-handle",connectWith:".acf-field-list",start:function(e,i){var n=acf.getFieldObject(i.item);i.placeholder.height(i.item.height()),acf.doAction("sortstart_field_object",n,t)},update:function(e,i){var n=acf.getFieldObject(i.item);acf.doAction("sortstop_field_object",n,t)}})},onRemovedField:function(e,t){this.renderFields(t)},onReorderField:function(e,t){e.updateParent(),this.renderFields(t)},onDeleteField:function(e){e.getFields().map(function(e){e.delete({animate:!1})})},onChangeFieldType:function(e){},onDuplicateField:function(e,t){var i=t.getFields();i.length&&(i.map(function(e){e.wipe(),e.updateParent()}),acf.doAction("duplicate_field_objects",i,t,e)),this.setFieldMenuOrder(t)},renderFields:function(e){var t=acf.getFieldObjects({list:e});if(!t.length)return void e.addClass("-empty");e.removeClass("-empty"),t.map(function(e,t){e.prop("menu_order",t)})},onClickAdd:function(e,t){var i=t.closest(".acf-tfoot").siblings(".acf-field-list");this.addField(i)},addField:function(e){var t=$("#tmpl-acf-field").html(),i=$(t),n=i.data("id"),a=acf.uniqid("field_"),c=acf.duplicate({target:i,search:n,replace:a,append:function(t,i){e.append(i)}}),l=acf.getFieldObject(c);l.prop("key",a),l.prop("ID",0),l.prop("label",""),l.prop("name",""),c.attr("data-key",a),c.attr("data-id",a),l.updateParent();var o=l.$input("label");setTimeout(function(){o.focus()},251),l.open(),this.renderFields(e),acf.doAction("add_field_object",l),acf.doAction("append_field_object",l)}})}(jQuery),function($,e){var t=new acf.Model({id:"locationManager",wait:"ready",events:{"click .add-location-rule":"onClickAddRule","click .add-location-group":"onClickAddGroup","click .remove-location-rule":"onClickRemoveRule","change .refresh-location-rule":"onChangeRemoveRule"},initialize:function(){this.$el=$("#acf-field-group-locations")},onClickAddRule:function(e,t){this.addRule(t.closest("tr"))},onClickRemoveRule:function(e,t){this.removeRule(t.closest("tr"))},onChangeRemoveRule:function(e,t){this.changeRule(t.closest("tr"))},onClickAddGroup:function(e,t){this.addGroup()},addRule:function(e){acf.duplicate(e)},removeRule:function(e){0==e.siblings("tr").length?e.closest(".rule-group").remove():e.remove()},changeRule:function(e){var t=e.closest(".rule-group"),i=e.find("td.param select").attr("name").replace("[param]",""),n={};n.action="acf/field_group/render_location_rule",n.rule=acf.serialize(e,i),n.rule.id=e.data("id"),n.rule.group=t.data("id"),acf.disable(e.find("td.value")),$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(n),type:"post",dataType:"html",success:function(t){t&&e.replaceWith(t)}})},addGroup:function(){var e=this.$(".rule-group:last");$group2=acf.duplicate(e),$group2.find("h4").text(acf.__("or")),$group2.find("tr").not(":first").remove()}})}(jQuery),function($,e){var t=acf.getCompatibility(acf);t.field_group={save_field:function(e,t){t=void 0!==t?t:"settings",acf.getFieldObject(e).save(t)},delete_field:function(e,t){t=void 0===t||t,acf.getFieldObject(e).delete({animate:t})},update_field_meta:function(e,t,i){acf.getFieldObject(e).prop(t,i)},delete_field_meta:function(e,t){acf.getFieldObject(e).prop(t,null)}},t.field_group.field_object=acf.model.extend({type:"",o:{},$field:null,$settings:null,tag:function(e){var t=this.type,i=e.split("_");return i.splice(1,0,"field"),e=i.join("_"),t&&(e+="/type="+t),e},selector:function(){var e=".acf-field-object",t=this.type;return t&&(e+="-"+t,e=acf.str_replace("_","-",e)),e},_add_action:function(e,t){var i=this;acf.add_action(this.tag(e),function(e){i.set("$field",e),i[t].apply(i,arguments)})},_add_filter:function(e,t){var i=this;acf.add_filter(this.tag(e),function(e){i.set("$field",e),i[t].apply(i,arguments)})},_add_event:function(e,t){var i=this,n=e.substr(0,e.indexOf(" ")),a=e.substr(e.indexOf(" ")+1),c=this.selector();$(document).on(n,c+" "+a,function(e){e.$el=$(this),e.$field=e.$el.closest(".acf-field-object"),i.set("$field",e.$field),i[t].apply(i,[e])})},_set_$field:function(){this.o=this.$field.data(),this.$settings=this.$field.find("> .settings > table > tbody"),this.focus()},focus:function(){},setting:function(e){return this.$settings.find("> .acf-field-setting-"+e)}});var i=new acf.Model({actions:{open_field_object:"onOpenFieldObject",close_field_object:"onCloseFieldObject",add_field_object:"onAddFieldObject",duplicate_field_object:"onDuplicateFieldObject",delete_field_object:"onDeleteFieldObject",change_field_object_type:"onChangeFieldObjectType",change_field_object_label:"onChangeFieldObjectLabel",change_field_object_name:"onChangeFieldObjectName",change_field_object_parent:"onChangeFieldObjectParent",sortstop_field_object:"onChangeFieldObjectParent"},onOpenFieldObject:function(e){acf.doAction("open_field",e.$el),acf.doAction("open_field/type="+e.get("type"),e.$el),acf.doAction("render_field_settings",e.$el),acf.doAction("render_field_settings/type="+e.get("type"),e.$el)},onCloseFieldObject:function(e){acf.doAction("close_field",e.$el),acf.doAction("close_field/type="+e.get("type"),e.$el)},onAddFieldObject:function(e){acf.doAction("add_field",e.$el),acf.doAction("add_field/type="+e.get("type"),e.$el)},onDuplicateFieldObject:function(e){acf.doAction("duplicate_field",e.$el),acf.doAction("duplicate_field/type="+e.get("type"),e.$el)},onDeleteFieldObject:function(e){acf.doAction("delete_field",e.$el),acf.doAction("delete_field/type="+e.get("type"),e.$el)},onChangeFieldObjectType:function(e){acf.doAction("change_field_type",e.$el),acf.doAction("change_field_type/type="+e.get("type"),e.$el),acf.doAction("render_field_settings",e.$el),acf.doAction("render_field_settings/type="+e.get("type"),e.$el)},onChangeFieldObjectLabel:function(e){acf.doAction("change_field_label",e.$el),acf.doAction("change_field_label/type="+e.get("type"),e.$el)},onChangeFieldObjectName:function(e){acf.doAction("change_field_name",e.$el),acf.doAction("change_field_name/type="+e.get("type"),e.$el)},onChangeFieldObjectParent:function(e){acf.doAction("update_field_parent",e.$el)}})}(jQuery);
1
+ !function($,e){var t=new acf.Model({id:"fieldGroupManager",events:{"submit #post":"onSubmit",'click a[href="#"]':"onClick","click .submitdelete":"onClickTrash"},filters:{find_fields_args:"filterFindFieldArgs"},onSubmit:function(e,t){var i=$("#titlewrap #title");i.val()||(e.preventDefault(),acf.validation.unlockForm(t),alert(acf.__("Field group title is required")),i.focus())},onClick:function(e){e.preventDefault()},onClickTrash:function(e){confirm(acf.__("Move to trash. Are you sure?"))||e.preventDefault()},filterFindFieldArgs:function(e){return e.visible=!0,e}}),i=new acf.Model({id:"screenOptionsManager",wait:"prepare",events:{change:"onChange"},initialize:function(){var e=$("#adv-settings"),t=$("#acf-append-show-on-screen");e.find(".metabox-prefs").append(t.html()),e.find(".metabox-prefs br").remove(),t.remove(),this.$el=$("#acf-field-key-hide"),this.render()},isChecked:function(){return this.$el.prop("checked")},onChange:function(e,t){var i=this.isChecked()?1:0;acf.updateUserSetting("show_field_keys",i),this.render()},render:function(){this.isChecked()?$("#acf-field-group-fields").addClass("show-field-keys"):$("#acf-field-group-fields").removeClass("show-field-keys")}}),n=new acf.Model({actions:{new_field:"onNewField"},onNewField:function(e){if(e.has("append")){var t=e.get("append"),i=e.$el.siblings('[data-name="'+t+'"]').first();if(i.length){var n=i.children(".acf-input"),a=n.children("ul");a.length||(n.wrapInner('<ul class="acf-hl"><li></li></ul>'),a=n.children("ul"));var c=e.$(".acf-input").html(),l=$("<li>"+c+"</li>");a.append(l),a.attr("data-cols",a.children().length),e.remove()}}}})}(jQuery),function($,e){acf.FieldObject=acf.Model.extend({eventScope:".acf-field-object",events:{"click .edit-field":"onClickEdit","click .delete-field":"onClickDelete","click .duplicate-field":"duplicate","click .move-field":"move","change .field-type":"onChangeType","change .field-required":"onChangeRequired","blur .field-label":"onChangeLabel","blur .field-name":"onChangeName",change:"onChange",changed:"onChanged"},data:{id:0,key:"",type:""},setup:function(e){this.$el=e,this.inherit(e),this.prop("ID"),this.prop("parent"),this.prop("menu_order")},$input:function(e){return $("#"+this.getInputId()+"-"+e)},$meta:function(){return this.$(".meta:first")},$handle:function(){return this.$(".handle:first")},$settings:function(){return this.$(".settings:first")},$setting:function(e){return this.$(".acf-field-settings:first > .acf-field-setting-"+e)},getParent:function(){return acf.getFieldObjects({child:this.$el,limit:1}).pop()},getParents:function(){return acf.getFieldObjects({child:this.$el})},getFields:function(){return acf.getFieldObjects({parent:this.$el})},getInputName:function(){return"acf_fields["+this.get("id")+"]"},getInputId:function(){return"acf_fields-"+this.get("id")},newInput:function(e,t){var i=this.getInputId(),n=this.getInputName();e&&(i+="-"+e,n+="["+e+"]");var a=$("<input />").attr({id:i,name:n,value:t});return this.$("> .meta").append(a),a},getProp:function(e){if(this.has(e))return this.get(e);var t=this.$input(e),i=t.length?t.val():null;return this.set(e,i,!0),i},setProp:function(e,t){var i=this.$input(e),n=i.val();return i.length||(i=this.newInput(e,t)),null===t?i.remove():i.val(t),this.has(e)?this.set(e,t):this.set(e,t,!0),this},prop:function(e,t){return void 0!==t?this.setProp(e,t):this.getProp(e)},props:function(e){Object.keys(e).map(function(t){this.setProp(t,e[t])},this)},getLabel:function(){var e=this.prop("label");return""===e&&(e=acf.__("(no label)")),e},getName:function(){return this.prop("name")},getType:function(){return this.prop("type")},getTypeLabel:function(){var e=this.prop("type"),t=acf.get("fieldTypes");return t[e]?t[e].label:e},getKey:function(){return this.prop("key")},initialize:function(){},render:function(){var e=this.$(".handle:first"),t=this.prop("menu_order"),i=this.getLabel(),n=this.prop("name"),a=this.getTypeLabel(),c=this.prop("key"),l=this.$input("required").prop("checked");e.find(".acf-icon").html(parseInt(t)+1),l&&(i+=' <span class="acf-required">*</span>'),e.find(".li-field-label strong a").html(i),e.find(".li-field-name").text(n),e.find(".li-field-type").text(a),e.find(".li-field-key").text(c),acf.doAction("render_field_object",this)},refresh:function(){acf.doAction("refresh_field_object",this)},isOpen:function(){return this.$el.hasClass("open")},onClickEdit:function(e){this.isOpen()?this.close():this.open()},open:function(){var e=this.$el.children(".settings");e.slideDown(),this.$el.addClass("open"),acf.doAction("open_field_object",this),this.trigger("openFieldObject"),acf.doAction("show",e)},close:function(){var e=this.$el.children(".settings");e.slideUp(),this.$el.removeClass("open"),acf.doAction("close_field_object",this),this.trigger("closeFieldObject"),acf.doAction("hide",e)},serialize:function(){return acf.serialize(this.$el,this.getInputName())},save:function(e){e=e||"settings","settings"!==this.getProp("save")&&(this.setProp("save",e),this.$el.attr("data-save",e),acf.doAction("save_field_object",this,e))},submit:function(){var e=this.getInputName(),t=this.get("save");this.isOpen()&&this.close(),"settings"==t||("meta"==t?this.$('> .settings [name^="'+e+'"]').remove():this.$('[name^="'+e+'"]').remove()),acf.doAction("submit_field_object",this)},onChange:function(e,t){this.save(),acf.doAction("change_field_object",this)},onChanged:function(e,t,i,n){"save"!=i&&(["menu_order","parent"].indexOf(i)>-1?this.save("meta"):this.save(),["menu_order","label","required","name","type","key"].indexOf(i)>-1&&this.render(),acf.doAction("change_field_object_"+i,this,n))},onChangeLabel:function(e,t){var i=t.val();if(this.set("label",i),""==this.prop("name")){var n=acf.applyFilters("generate_field_object_name",acf.strSanitize(i),this);this.prop("name",n)}},onChangeName:function(e,t){var i=t.val();this.set("name",i),"field_"===i.substr(0,6)&&alert(acf.__('The string "field_" may not be used at the start of a field name'))},onChangeRequired:function(e,t){var i=t.prop("checked")?1:0;this.set("required",i)},delete:function(e){e=acf.parseArgs(e,{animate:!0});var t=this.prop("ID");if(t){var i=$("#_acf_delete_fields"),n=i.val()+"|"+t;i.val(n)}acf.doAction("delete_field_object",this),e.animate?this.removeAnimate():this.remove()},onClickDelete:function(e,t){this.$el.addClass("-hover");var i=this,n=acf.newTooltip({confirmRemove:!0,target:t,confirm:function(){i.delete(!0)},cancel:function(){i.$el.removeClass("-hover")}})},removeAnimate:function(){var e=this,t=this.$el.parent(),i=acf.findFieldObjects({sibling:this.$el});acf.remove({target:this.$el,endHeight:i.length?0:50,complete:function(){e.remove(),acf.doAction("removed_field_object",e,t)}}),acf.doAction("remove_field_object",e,t)},duplicate:function(){var e=acf.uniqid("field_"),t=acf.duplicate({target:this.$el,search:this.get("id"),replace:e});t.attr("data-key",e);var i=acf.getFieldObject(t);this.isOpen()?this.close():i.open();var n=i.$setting("label input");setTimeout(function(){n.focus()},251);var a=i.prop("label"),c=i.prop("name"),l=c.split("_").pop(),o=acf.__("copy");if($.isNumeric(l)){var r=1*l+1;a=a.replace(l,r),c=c.replace(l,r)}else if(0===l.indexOf(o)){var r=1*l.replace(o,"");r=r?r+1:2,a=a.replace(l,o+r),c=c.replace(l,o+r)}else a+=" ("+o+")",c+="_"+o;i.prop("ID",0),i.prop("label",a),i.prop("name",c),i.prop("key",e),acf.doAction("duplicate_field_object",this,i),acf.doAction("append_field_object",i)},wipe:function(){var e=this.get("id"),t=this.get("key"),i=acf.uniqid("field_");acf.rename({target:this.$el,search:e,replace:i}),this.set("id",i),this.set("prevId",e),this.set("prevKey",t),this.prop("key",i),this.prop("ID",0),this.$el.attr("data-key",i),this.$el.attr("data-id",i),acf.doAction("wipe_field_object",this)},move:function(){var e=function(e){return"settings"==e.get("save")},t=e(this);if(t||acf.getFieldObjects({parent:this.$el}).map(function(i){t=e(i)||i.changed}),t)return void alert(acf.__("This field cannot be moved until its changes have been saved"));var i=this.prop("ID"),n=this,a=!1,c=function(e){a.loading(!1),a.content(e),a.on("submit","form",l)},l=function(e,t){e.preventDefault(),acf.startButtonLoading(a.$(".button"));var n={action:"acf/field_group/move_field",field_id:i,field_group_id:a.$("select").val()};$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(n),type:"post",dataType:"html",success:o})},o=function(e){a.content(e),n.removeAnimate()};!function(){a=acf.newPopup({title:acf.__("Move Custom Field"),loading:!0,width:"300px"});var e={action:"acf/field_group/move_field",field_id:i};$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(e),type:"post",dataType:"html",success:c})}()},onChangeType:function(e,t){this.changeTimeout&&clearTimeout(this.changeTimeout),this.changeTimeout=this.setTimeout(function(){this.changeType(t.val())},300)},changeType:function(e){var t=this.prop("type"),i=acf.strSlugify("acf-field-object-"+t),n=acf.strSlugify("acf-field-object-"+e);this.$el.removeClass(i).addClass(n),this.$el.attr("data-type",e),this.$el.data("type",e),this.has("xhr")&&this.get("xhr").abort();var a=this.$("> .settings > table > tbody"),c=a.children('[data-setting="'+t+'"]');if(this.set("settings-"+t,c),c.detach(),this.has("settings-"+e)){var l=this.get("settings-"+e);return this.$setting("conditional_logic").before(l),void this.set("type",e)}var o=$('<tr class="acf-field"><td class="acf-label"></td><td class="acf-input"><div class="acf-loading"></div></td></tr>');this.$setting("conditional_logic").before(o);var r={action:"acf/field_group/render_field_settings",field:this.serialize(),prefix:this.getInputName()},d=$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(r),type:"post",dataType:"html",context:this,success:function(e){e&&(o.after(e),acf.doAction("append",a))},complete:function(){o.remove(),this.set("type",e)}});this.set("xhr",d)},updateParent:function(){var e=acf.get("post_id"),t=this.getParent();t&&(e=parseInt(t.prop("ID"))||t.prop("key")),this.prop("parent",e)}})}(jQuery),function($,e){var t=function(e){return acf.strPascalCase(e||"")+"FieldSetting"};acf.registerFieldSetting=function(e){var i=e.prototype,n=t(i.type+" "+i.name);this.models[n]=e},acf.newFieldSetting=function(e){var i=e.get("setting")||"",n=e.get("name")||"",a=t(i+" "+n),c=acf.models[a]||null;return null!==c&&new c(e)},acf.getFieldSetting=function(e){return e instanceof jQuery&&(e=acf.getField(e)),e.setting};var i=new acf.Model({actions:{new_field:"onNewField"},onNewField:function(e){e.setting=acf.newFieldSetting(e)}});acf.FieldSetting=acf.Model.extend({field:!1,type:"",name:"",wait:"ready",eventScope:".acf-field",events:{change:"render"},setup:function(e){var t=e.$el;this.$el=t,this.field=e,this.$fieldObject=t.closest(".acf-field-object"),this.fieldObject=acf.getFieldObject(this.$fieldObject),$.extend(this.data,e.data)},initialize:function(){this.render()},render:function(){}});var n=acf.FieldSetting.extend({type:"",name:"",render:function(){var e=this.$('input[type="radio"]:checked');"other"!=e.val()&&this.$('input[type="text"]').val(e.val())}}),a=n.extend({type:"date_picker",name:"display_format"}),c=n.extend({type:"date_picker",name:"return_format"});acf.registerFieldSetting(a),acf.registerFieldSetting(c);var l=n.extend({type:"date_time_picker",name:"display_format"}),o=n.extend({type:"date_time_picker",name:"return_format"});acf.registerFieldSetting(l),acf.registerFieldSetting(o);var r=n.extend({type:"time_picker",name:"display_format"}),d=n.extend({name:"time_picker",name:"return_format"});acf.registerFieldSetting(r),acf.registerFieldSetting(d)}(jQuery),function($,e){var t=acf.FieldSetting.extend({type:"",name:"conditional_logic",events:{"change .conditions-toggle":"onChangeToggle","click .add-conditional-group":"onClickAddGroup","focus .condition-rule-field":"onFocusField","change .condition-rule-field":"onChangeField","change .condition-rule-operator":"onChangeOperator","click .add-conditional-rule":"onClickAdd","click .remove-conditional-rule":"onClickRemove"},$rule:!1,scope:function(e){return this.$rule=e,this},ruleData:function(e,t){return this.$rule.data.apply(this.$rule,arguments)},$input:function(e){return this.$rule.find(".condition-rule-"+e)},$td:function(e){return this.$rule.find("td."+e)},$toggle:function(){return this.$(".conditions-toggle")},$control:function(){return this.$(".rule-groups")},$groups:function(){return this.$(".rule-group")},$rules:function(){return this.$(".rule")},open:function(){var e=this.$control();e.show(),acf.enable(e)},close:function(){var e=this.$control();e.hide(),acf.disable(e)},render:function(){this.$toggle().prop("checked")?(this.renderRules(),this.open()):this.close()},renderRules:function(){var e=this;this.$rules().each(function(){e.renderRule($(this))})},renderRule:function(e){this.scope(e),this.renderField(),this.renderOperator(),this.renderValue()},renderField:function(){var e=[],t=[],i=this.fieldObject.cid,n=this.$input("field");acf.getFieldObjects().map(function(t){var n={id:t.getKey(),text:t.getLabel()};t.cid===i&&(n.text+=acf.__("(this field)"),n.disabled=!0),acf.getConditionTypes({fieldType:t.getType()}).length||(n.disabled=!0);var a=t.getParents().length;n.text="- ".repeat(a)+n.text,e.push(n)}),e.length||e.push({id:"",text:acf.__("No toggle fields available")}),acf.renderSelect(n,e),this.ruleData("field",n.val())},renderOperator:function(){if(this.ruleData("field")){var e=this.$input("operator"),t=e.val(),i=[];null===e.val()&&acf.renderSelect(e,[{id:this.ruleData("operator"),text:""}]);var n=acf.findFieldObject(this.ruleData("field")),a=acf.getFieldObject(n);acf.getConditionTypes({fieldType:a.getType()}).map(function(e){i.push({id:e.prototype.operator,text:acf.strEscape(e.prototype.label)})}),acf.renderSelect(e,i),this.ruleData("operator",e.val())}},renderValue:function(){if(this.ruleData("field")&&this.ruleData("operator")){var e=this.$input("value"),t=this.$td("value"),i=e.val(),n=acf.findFieldObject(this.ruleData("field")),a=acf.getFieldObject(n),c=acf.getConditionTypes({fieldType:a.getType(),operator:this.ruleData("operator")}),l=c[0].prototype,o=l.choices(a);if(o instanceof Array){var r=$("<select></select>");acf.renderSelect(r,o)}else var r=$(o);e.detach(),t.html(r),setTimeout(function(){["class","name","id"].map(function(t){r.attr(t,e.attr(t))})},0),r.prop("disabled")||acf.val(r,i,!0),this.ruleData("value",r.val())}},onChangeToggle:function(){this.render()},onClickAddGroup:function(e,t){this.addGroup()},addGroup:function(){var e=this.$(".rule-group:last"),t=acf.duplicate(e);t.find("h4").text(acf.__("or")),t.find("tr").not(":first").remove(),this.fieldObject.save()},onFocusField:function(e,t){this.renderField()},onChangeField:function(e,t){this.scope(t.closest(".rule")),this.ruleData("field",t.val()),this.renderOperator(),this.renderValue()},onChangeOperator:function(e,t){this.scope(t.closest(".rule")),this.ruleData("operator",t.val()),this.renderValue()},onClickAdd:function(e,t){var i=acf.duplicate(t.closest(".rule"));this.renderRule(i)},onClickRemove:function(e,t){var i=t.closest(".rule");this.fieldObject.save(),0==i.siblings(".rule").length&&i.closest(".rule-group").remove(),i.remove()}});acf.registerFieldSetting(t);var i=new acf.Model({actions:{duplicate_field_objects:"onDuplicateFieldObjects"},onDuplicateFieldObjects:function(e,t,i){var n={},a=$();e.map(function(e){n[e.get("prevKey")]=e.get("key"),a=a.add(e.$(".condition-rule-field"))}),a.each(function(){var e=$(this),t=e.val();t&&n[t]&&(e.find("option:selected").attr("value",n[t]),e.val(n[t]))})}})}(jQuery),function($,e){acf.findFieldObject=function(e){return acf.findFieldObjects({key:e,limit:1})},acf.findFieldObjects=function(e){e=e||{};var t=".acf-field-object",i=!1;return e=acf.parseArgs(e,{id:"",key:"",type:"",limit:!1,list:null,parent:!1,sibling:!1,child:!1}),e.id&&(t+='[data-id="'+e.id+'"]'),e.key&&(t+='[data-key="'+e.key+'"]'),e.type&&(t+='[data-type="'+e.type+'"]'),i=e.list?e.list.children(t):e.parent?e.parent.find(t):e.sibling?e.sibling.siblings(t):e.child?e.child.parents(t):$(t),e.limit&&(i=i.slice(0,e.limit)),i},acf.getFieldObject=function(e){"string"==typeof e&&(e=acf.findFieldObject(e));var t=e.data("acf");return t||(t=acf.newFieldObject(e)),t},acf.getFieldObjects=function(e){var t=acf.findFieldObjects(e),i=[];return t.each(function(){var e=acf.getFieldObject($(this));i.push(e)}),i},acf.newFieldObject=function(e){var t=new acf.FieldObject(e);return acf.doAction("new_field_object",t),t};var t=new acf.Model({priority:5,initialize:function(){["prepare","ready","append","remove"].map(function(e){this.addFieldActions(e)},this)},addFieldActions:function(e){var t=e+"_field_objects",i=e+"_field_object",n=e+"FieldObject",a=function(e){var i=acf.getFieldObjects({parent:e});if(i.length){var n=acf.arrayArgs(arguments);n.splice(0,1,t,i),acf.doAction.apply(null,n)}},c=function(e){var t=acf.arrayArgs(arguments);t.unshift(i),e.map(function(e){t[1]=e,acf.doAction.apply(null,t)})},l=function(e){var t=acf.arrayArgs(arguments);t.unshift(i),["type","name","key"].map(function(n){t[0]=i+"/"+n+"="+e.get(n),acf.doAction.apply(null,t)}),t.splice(0,2),e.trigger(n,t)};acf.addAction(e,a,5),acf.addAction(t,c,5),acf.addAction(i,l,5)}}),i=new acf.Model({id:"fieldManager",events:{"submit #post":"onSubmit","mouseenter .acf-field-list":"onHoverSortable","click .add-field":"onClickAdd"},actions:{removed_field_object:"onRemovedField",sortstop_field_object:"onReorderField",delete_field_object:"onDeleteField",change_field_object_type:"onChangeFieldType",duplicate_field_object:"onDuplicateField"},onSubmit:function(e,t){acf.getFieldObjects().map(function(e){e.submit()})},setFieldMenuOrder:function(e){this.renderFields(e.$el.parent())},onHoverSortable:function(e,t){t.hasClass("ui-sortable")||t.sortable({handle:".acf-sortable-handle",connectWith:".acf-field-list",start:function(e,i){var n=acf.getFieldObject(i.item);i.placeholder.height(i.item.height()),acf.doAction("sortstart_field_object",n,t)},update:function(e,i){var n=acf.getFieldObject(i.item);acf.doAction("sortstop_field_object",n,t)}})},onRemovedField:function(e,t){this.renderFields(t)},onReorderField:function(e,t){e.updateParent(),this.renderFields(t)},onDeleteField:function(e){e.getFields().map(function(e){e.delete({animate:!1})})},onChangeFieldType:function(e){},onDuplicateField:function(e,t){var i=t.getFields();i.length&&(i.map(function(e){e.wipe(),e.updateParent()}),acf.doAction("duplicate_field_objects",i,t,e)),this.setFieldMenuOrder(t)},renderFields:function(e){var t=acf.getFieldObjects({list:e});if(!t.length)return void e.addClass("-empty");e.removeClass("-empty"),t.map(function(e,t){e.prop("menu_order",t)})},onClickAdd:function(e,t){var i=t.closest(".acf-tfoot").siblings(".acf-field-list");this.addField(i)},addField:function(e){var t=$("#tmpl-acf-field").html(),i=$(t),n=i.data("id"),a=acf.uniqid("field_"),c=acf.duplicate({target:i,search:n,replace:a,append:function(t,i){e.append(i)}}),l=acf.getFieldObject(c);l.prop("key",a),l.prop("ID",0),l.prop("label",""),l.prop("name",""),c.attr("data-key",a),c.attr("data-id",a),l.updateParent();var o=l.$input("label");setTimeout(function(){o.focus()},251),l.open(),this.renderFields(e),acf.doAction("add_field_object",l),acf.doAction("append_field_object",l)}})}(jQuery),function($,e){var t=new acf.Model({id:"locationManager",wait:"ready",events:{"click .add-location-rule":"onClickAddRule","click .add-location-group":"onClickAddGroup","click .remove-location-rule":"onClickRemoveRule","change .refresh-location-rule":"onChangeRemoveRule"},initialize:function(){this.$el=$("#acf-field-group-locations")},onClickAddRule:function(e,t){this.addRule(t.closest("tr"))},onClickRemoveRule:function(e,t){this.removeRule(t.closest("tr"))},onChangeRemoveRule:function(e,t){this.changeRule(t.closest("tr"))},onClickAddGroup:function(e,t){this.addGroup()},addRule:function(e){acf.duplicate(e)},removeRule:function(e){0==e.siblings("tr").length?e.closest(".rule-group").remove():e.remove()},changeRule:function(e){var t=e.closest(".rule-group"),i=e.find("td.param select").attr("name").replace("[param]",""),n={};n.action="acf/field_group/render_location_rule",n.rule=acf.serialize(e,i),n.rule.id=e.data("id"),n.rule.group=t.data("id"),acf.disable(e.find("td.value")),$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(n),type:"post",dataType:"html",success:function(t){t&&e.replaceWith(t)}})},addGroup:function(){var e=this.$(".rule-group:last");$group2=acf.duplicate(e),$group2.find("h4").text(acf.__("or")),$group2.find("tr").not(":first").remove()}})}(jQuery),function($,e){var t=acf.getCompatibility(acf);t.field_group={save_field:function(e,t){t=void 0!==t?t:"settings",acf.getFieldObject(e).save(t)},delete_field:function(e,t){t=void 0===t||t,acf.getFieldObject(e).delete({animate:t})},update_field_meta:function(e,t,i){acf.getFieldObject(e).prop(t,i)},delete_field_meta:function(e,t){acf.getFieldObject(e).prop(t,null)}},t.field_group.field_object=acf.model.extend({type:"",o:{},$field:null,$settings:null,tag:function(e){var t=this.type,i=e.split("_");return i.splice(1,0,"field"),e=i.join("_"),t&&(e+="/type="+t),e},selector:function(){var e=".acf-field-object",t=this.type;return t&&(e+="-"+t,e=acf.str_replace("_","-",e)),e},_add_action:function(e,t){var i=this;acf.add_action(this.tag(e),function(e){i.set("$field",e),i[t].apply(i,arguments)})},_add_filter:function(e,t){var i=this;acf.add_filter(this.tag(e),function(e){i.set("$field",e),i[t].apply(i,arguments)})},_add_event:function(e,t){var i=this,n=e.substr(0,e.indexOf(" ")),a=e.substr(e.indexOf(" ")+1),c=this.selector();$(document).on(n,c+" "+a,function(e){e.$el=$(this),e.$field=e.$el.closest(".acf-field-object"),i.set("$field",e.$field),i[t].apply(i,[e])})},_set_$field:function(){this.o=this.$field.data(),this.$settings=this.$field.find("> .settings > table > tbody"),this.focus()},focus:function(){},setting:function(e){return this.$settings.find("> .acf-field-setting-"+e)}});var i=new acf.Model({actions:{open_field_object:"onOpenFieldObject",close_field_object:"onCloseFieldObject",add_field_object:"onAddFieldObject",duplicate_field_object:"onDuplicateFieldObject",delete_field_object:"onDeleteFieldObject",change_field_object_type:"onChangeFieldObjectType",change_field_object_label:"onChangeFieldObjectLabel",change_field_object_name:"onChangeFieldObjectName",change_field_object_parent:"onChangeFieldObjectParent",sortstop_field_object:"onChangeFieldObjectParent"},onOpenFieldObject:function(e){acf.doAction("open_field",e.$el),acf.doAction("open_field/type="+e.get("type"),e.$el),acf.doAction("render_field_settings",e.$el),acf.doAction("render_field_settings/type="+e.get("type"),e.$el)},onCloseFieldObject:function(e){acf.doAction("close_field",e.$el),acf.doAction("close_field/type="+e.get("type"),e.$el)},onAddFieldObject:function(e){acf.doAction("add_field",e.$el),acf.doAction("add_field/type="+e.get("type"),e.$el)},onDuplicateFieldObject:function(e){acf.doAction("duplicate_field",e.$el),acf.doAction("duplicate_field/type="+e.get("type"),e.$el)},onDeleteFieldObject:function(e){acf.doAction("delete_field",e.$el),acf.doAction("delete_field/type="+e.get("type"),e.$el)},onChangeFieldObjectType:function(e){acf.doAction("change_field_type",e.$el),acf.doAction("change_field_type/type="+e.get("type"),e.$el),acf.doAction("render_field_settings",e.$el),acf.doAction("render_field_settings/type="+e.get("type"),e.$el)},onChangeFieldObjectLabel:function(e){acf.doAction("change_field_label",e.$el),acf.doAction("change_field_label/type="+e.get("type"),e.$el)},onChangeFieldObjectName:function(e){acf.doAction("change_field_name",e.$el),acf.doAction("change_field_name/type="+e.get("type"),e.$el)},onChangeFieldObjectParent:function(e){acf.doAction("update_field_parent",e.$el)}})}(jQuery);
assets/js/acf-input.js CHANGED
@@ -12257,7 +12257,7 @@
12257
  // create new event to avoid conflicts with prevenDefault (as used in taxonomy form)
12258
  var event = $.Event(null, args.event);
12259
  args.success = function(){
12260
- $(event.target).trigger( event );
12261
  }
12262
  }
12263
 
@@ -12420,19 +12420,13 @@
12420
  showSpinner: function( $spinner ){
12421
  $spinner.addClass('is-active'); // add class (WP > 4.2)
12422
  $spinner.css('display', 'inline-block'); // css (WP < 4.2)
 
12423
  },
12424
 
12425
  hideSpinner: function( $spinner ){
12426
  $spinner.removeClass('is-active'); // add class (WP > 4.2)
12427
  $spinner.css('display', 'none'); // css (WP < 4.2)
12428
- },
12429
-
12430
- disableSubmit: function( $submit ){
12431
- $submit.prop('disabled', true).addClass('disabled');
12432
- },
12433
-
12434
- enableSubmit: function( $submit ){
12435
- $submit.prop('disabled', false).removeClass('disabled');
12436
  },
12437
 
12438
  findSubmitWrap: function( $form ){
@@ -12476,7 +12470,7 @@
12476
  this.hideSpinner( $spinner );
12477
 
12478
  // lock
12479
- this.disableSubmit( $submit );
12480
  this.showSpinner( $spinner.last() );
12481
  },
12482
 
@@ -12488,7 +12482,7 @@
12488
  var $spinner = $wrap.find('.spinner, .acf-spinner');
12489
 
12490
  // unlock
12491
- this.enableSubmit( $submit );
12492
  this.hideSpinner( $spinner );
12493
  }
12494
 
@@ -12574,6 +12568,36 @@
12574
  return false;
12575
  };
12576
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12577
  })(jQuery);
12578
 
12579
  (function($, undefined){
@@ -13459,7 +13483,9 @@
13459
  type: 'warning',
13460
  timeout: 1000
13461
  });
13462
- }
 
 
13463
  });
13464
 
13465
 
12257
  // create new event to avoid conflicts with prevenDefault (as used in taxonomy form)
12258
  var event = $.Event(null, args.event);
12259
  args.success = function(){
12260
+ acf.enableSubmit( $(event.target) ).trigger( event );
12261
  }
12262
  }
12263
 
12420
  showSpinner: function( $spinner ){
12421
  $spinner.addClass('is-active'); // add class (WP > 4.2)
12422
  $spinner.css('display', 'inline-block'); // css (WP < 4.2)
12423
+ return $spinner;
12424
  },
12425
 
12426
  hideSpinner: function( $spinner ){
12427
  $spinner.removeClass('is-active'); // add class (WP > 4.2)
12428
  $spinner.css('display', 'none'); // css (WP < 4.2)
12429
+ return $spinner;
 
 
 
 
 
 
 
12430
  },
12431
 
12432
  findSubmitWrap: function( $form ){
12470
  this.hideSpinner( $spinner );
12471
 
12472
  // lock
12473
+ acf.disableSubmit( $submit );
12474
  this.showSpinner( $spinner.last() );
12475
  },
12476
 
12482
  var $spinner = $wrap.find('.spinner, .acf-spinner');
12483
 
12484
  // unlock
12485
+ acf.enableSubmit( $submit );
12486
  this.hideSpinner( $spinner );
12487
  }
12488
 
12568
  return false;
12569
  };
12570
 
12571
+ /**
12572
+ * acf.enableSubmit
12573
+ *
12574
+ * Enables a submit button and returns the element.
12575
+ *
12576
+ * @date 30/8/18
12577
+ * @since 5.7.4
12578
+ *
12579
+ * @param jQuery $submit The submit button.
12580
+ * @return jQuery
12581
+ */
12582
+ acf.enableSubmit = function( $submit ){
12583
+ return $submit.prop('disabled', false).removeClass('disabled');
12584
+ };
12585
+
12586
+ /**
12587
+ * acf.disableSubmit
12588
+ *
12589
+ * Disables a submit button and returns the element.
12590
+ *
12591
+ * @date 30/8/18
12592
+ * @since 5.7.4
12593
+ *
12594
+ * @param jQuery $submit The submit button.
12595
+ * @return jQuery
12596
+ */
12597
+ acf.disableSubmit = function( $submit ){
12598
+ return $submit.prop('disabled', true).addClass('disabled');
12599
+ };
12600
+
12601
  })(jQuery);
12602
 
12603
  (function($, undefined){
13483
  type: 'warning',
13484
  timeout: 1000
13485
  });
13486
+ },
13487
+ enableSubmit: acf.enableSubmit,
13488
+ disableSubmit: acf.disableSubmit
13489
  });
13490
 
13491
 
assets/js/acf-input.min.js CHANGED
@@ -1,4 +1,4 @@
1
  !function($,t){var e={};window.acf=e,e.data={},e.get=function(t){return this.data[t]||null},e.has=function(t){return null!==this.get(t)},e.set=function(t,e){return this.data[t]=e,this};var i=0;e.uniqueId=function(t){var e=++i+"";return t?t+e:e},e.uniqueArray=function(t){function e(t,e,i){return i.indexOf(t)===e}return t.filter(e)};var n="";e.uniqid=function(t,e){void 0===t&&(t="");var i,a=function(t,e){return t=parseInt(t,10).toString(16),e<t.length?t.slice(t.length-e):e>t.length?Array(e-t.length+1).join("0")+t:t};return n||(n=Math.floor(123456789*Math.random())),n++,i=t,i+=a(parseInt((new Date).getTime()/1e3,10),8),i+=a(n,5),e&&(i+=(10*Math.random()).toFixed(8).toString()),i},e.strReplace=function(t,e,i){return i.split(t).join(e)},e.strCamelCase=function(t){return t=t.replace(/[_-]/g," "),t=t.replace(/(?:^\w|\b\w|\s+)/g,function(t,e){return 0==+t?"":0==e?t.toLowerCase():t.toUpperCase()})},e.strPascalCase=function(t){var i=e.strCamelCase(t);return i.charAt(0).toUpperCase()+i.slice(1)},e.strSlugify=function(t){return e.strReplace("_","-",t.toLowerCase())},e.strSanitize=function(t){var e={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","ß":"s","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Ĉ":"C","ĉ":"c","Ċ":"C","ċ":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"D","đ":"d","Ē":"E","ē":"e","Ĕ":"E","ĕ":"e","Ė":"E","ė":"e","Ę":"E","ę":"e","Ě":"E","ě":"e","Ĝ":"G","ĝ":"g","Ğ":"G","ğ":"g","Ġ":"G","ġ":"g","Ģ":"G","ģ":"g","Ĥ":"H","ĥ":"h","Ħ":"H","ħ":"h","Ĩ":"I","ĩ":"i","Ī":"I","ī":"i","Ĭ":"I","ĭ":"i","Į":"I","į":"i","İ":"I","ı":"i","IJ":"IJ","ij":"ij","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","Ĺ":"L","ĺ":"l","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ŀ":"L","ŀ":"l","Ł":"l","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","ʼn":"n","Ō":"O","ō":"o","Ŏ":"O","ŏ":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ŗ":"R","ŗ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ŝ":"S","ŝ":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ŧ":"T","ŧ":"t","Ũ":"U","ũ":"u","Ū":"U","ū":"u","Ŭ":"U","ŭ":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","ſ":"s","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Ǎ":"A","ǎ":"a","Ǐ":"I","ǐ":"i","Ǒ":"O","ǒ":"o","Ǔ":"U","ǔ":"u","Ǖ":"U","ǖ":"u","Ǘ":"U","ǘ":"u","Ǚ":"U","ǚ":"u","Ǜ":"U","ǜ":"u","Ǻ":"A","ǻ":"a","Ǽ":"AE","ǽ":"ae","Ǿ":"O","ǿ":"o"," ":"_","'":"","?":"","/":"","\\":"",".":"",",":"","`":"",">":"","<":"",'"':"","[":"","]":"","|":"","{":"","}":"","(":"",")":""},i=/\W/g,n=function(t){return void 0!==e[t]?e[t]:t};return t=t.replace(i,n),t=t.toLowerCase()},e.strMatch=function(t,e){for(var i=0,n=Math.min(t.length,e.length),a=0;a<n&&t[a]===e[a];a++)i++;return i},e.decode=function(t){return $("<textarea/>").html(t).text()},e.strEscape=function(t){var e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})},e.parseArgs=function(t,e){return"object"!=typeof t&&(t={}),"object"!=typeof e&&(e={}),$.extend({},e,t)},void 0==window.acfL10n&&(acfL10n={}),e.__=function(t){return acfL10n[t]||t},e._x=function(t,e){return acfL10n[t+"."+e]||acfL10n[t]||t},e._n=function(t,i,n){return 1==n?e.__(t):e.__(i)},e.isArray=function(t){return Array.isArray(t)},e.isObject=function(t){return"object"==typeof t};var a=function(t,i,n){i=i.replace("[]","[%%index%%]");var a=i.match(/([^\[\]])+/g);if(a)for(var r=a.length,o=t,s=0;s<r;s++){var c=String(a[s]);s==r-1?"%%index%%"===c?o.push(n):o[c]=n:("%%index%%"===a[s+1]?e.isArray(o[c])||(o[c]=[]):e.isObject(o[c])||(o[c]={}),o=o[c])}};e.serialize=function(t,i){var n={},r=e.serializeArray(t);void 0!==i&&(r=r.filter(function(t){return 0===t.name.indexOf(i)}).map(function(t){return t.name=t.name.slice(i.length),t}));for(var o=0;o<r.length;o++)a(n,r[o].name,r[o].value);return n},e.serializeArray=function(t){return t.find("select, textarea, input").serializeArray()},e.addAction=function(t,i,n,a){return e.hooks.addAction.apply(this,arguments),this},e.removeAction=function(t,i){return e.hooks.removeAction.apply(this,arguments),this};var r={};e.doAction=function(t){return r[t]=1,e.hooks.doAction.apply(this,arguments),r[t]=0,this},e.doingAction=function(t){return 1===r[t]},e.didAction=function(t){return void 0!==r[t]},e.currentAction=function(){for(var t in r)if(r[t])return t;return!1},e.addFilter=function(t){return e.hooks.addFilter.apply(this,arguments),this},e.removeFilter=function(t){return e.hooks.removeFilter.apply(this,arguments),this},e.applyFilters=function(t){return e.hooks.applyFilters.apply(this,arguments)},e.arrayArgs=function(t){return Array.prototype.slice.call(t)};try{var o=JSON.parse(localStorage.getItem("acf"))||{}}catch(t){var o={}}var s=function(t){return"this."===t.substr(0,5)&&(t=t.substr(5)+"-"+e.get("post_id")),t};e.getPreference=function(t){return t=s(t),o[t]||null},e.setPreference=function(t,e){t=s(t),null===e?delete o[t]:o[t]=e,localStorage.setItem("acf",JSON.stringify(o))},e.removePreference=function(t){e.setPreference(t,null)},e.remove=function(t){t instanceof jQuery&&(t={target:t}),t=e.parseArgs(t,{target:!1,endHeight:0,complete:function(){}}),e.doAction("remove",t.target),t.target.is("tr")?l(t):c(t)};var c=function(t){var e=t.target,i=e.height(),n=e.width(),a=e.css("margin"),r=e.outerHeight(!0),o=e.attr("style")+"";e.wrap('<div class="acf-temp-remove" style="height:'+r+'px"></div>');var s=e.parent();e.css({height:i,width:n,margin:a,position:"absolute"}),setTimeout(function(){s.css({opacity:0,height:t.endHeight})},50),setTimeout(function(){e.attr("style",o),s.remove(),t.complete()},301)},l=function(t){var e=t.target,i=e.height(),n=e.children().length,a=$('<td class="acf-temp-remove" style="padding:0; height:'+i+'px" colspan="'+n+'"></td>');e.addClass("acf-remove-element"),setTimeout(function(){e.html(a)},251),setTimeout(function(){e.removeClass("acf-remove-element"),a.css({height:t.endHeight})},300),setTimeout(function(){e.remove(),t.complete()},451)};e.duplicate=function(t){t instanceof jQuery&&(t={target:t});var i=0;t=e.parseArgs(t,{target:!1,search:"",replace:"",before:function(t){},after:function(t,e){},append:function(t,e){t.after(e),i=1}}),t.target=t.target||t.$el;var n=t.target;t.search=t.search||n.attr("data-id"),t.replace=t.replace||e.uniqid(),t.before(n),e.doAction("before_duplicate",n);var a=n.clone();return e.rename({target:a,search:t.search,replace:t.replace}),a.removeClass("acf-clone"),a.find(".ui-sortable").removeClass("ui-sortable"),t.after(n,a),e.doAction("after_duplicate",n,a),t.append(n,a),e.doAction("append",a),a},e.rename=function(t){t instanceof jQuery&&(t={target:t}),t=e.parseArgs(t,{target:!1,destructive:!1,search:"",replace:""});var i=t.target,n=t.search||i.attr("data-id"),a=t.replace||e.uniqid("acf"),r=function(t,e){return e.replace(n,a)};if(t.destructive){var o=i.outerHTML();o=e.strReplace(n,a,o),i.replaceWith(o)}else i.attr("data-id",a),i.find('[id*="'+n+'"]').attr("id",r),i.find('[for*="'+n+'"]').attr("for",r),i.find('[name*="'+n+'"]').attr("name",r);return i},e.prepareForAjax=function(t){return t.nonce=e.get("nonce"),t.post_id=e.get("post_id"),t=e.applyFilters("prepare_for_ajax",t)},e.startButtonLoading=function(t){t.prop("disabled",!0),t.after(' <i class="acf-loading"></i>')},e.stopButtonLoading=function(t){t.prop("disabled",!1),t.next(".acf-loading").remove()},e.showLoading=function(t){t.append('<div class="acf-loading-overlay"><i class="acf-loading"></i></div>')},e.hideLoading=function(t){t.children(".acf-loading-overlay").remove()},e.updateUserSetting=function(t,i){var n={action:"acf/ajax/user_setting",name:t,value:i};$.ajax({url:e.get("ajaxurl"),data:e.prepareForAjax(n),type:"post",dataType:"html"})},e.val=function(t,e,i){var n=t.val();return e!==n&&(t.val(e),t.is("select")&&null===t.val()?(t.val(n),!1):(!0!==i&&t.trigger("change"),!0))},e.show=function(t,i){return i&&e.unlock(t,"hidden",i),!e.isLocked(t,"hidden")&&(!!t.hasClass("acf-hidden")&&(t.removeClass("acf-hidden"),!0))},e.hide=function(t,i){return i&&e.lock(t,"hidden",i),!t.hasClass("acf-hidden")&&(t.addClass("acf-hidden"),!0)},e.isHidden=function(t){return t.hasClass("acf-hidden")},e.isVisible=function(t){return!e.isHidden(t)};var d=function(t,i){return!t.hasClass("acf-disabled")&&(i&&e.unlock(t,"disabled",i),!e.isLocked(t,"disabled")&&(!!t.prop("disabled")&&(t.prop("disabled",!1),!0)))};e.enable=function(t,e){if(t.attr("name"))return d(t,e);var i=!1;return t.find("[name]").each(function(){d($(this),e)&&(i=!0)}),i};var u=function(t,i){return i&&e.lock(t,"disabled",i),!t.prop("disabled")&&(t.prop("disabled",!0),!0)};e.disable=function(t,e){if(t.attr("name"))return u(t,e);var i=!1;return t.find("[name]").each(function(){u($(this),e)&&(i=!0)}),i},e.isset=function(t){for(var e=1;e<arguments.length;e++){if(!t||!t.hasOwnProperty(arguments[e]))return!1;t=t[arguments[e]]}return!0},e.isget=function(t){for(var e=1;e<arguments.length;e++){if(!t||!t.hasOwnProperty(arguments[e]))return null;t=t[arguments[e]]}return t},e.getFileInputData=function(t,i){var n=t.val();if(!n)return!1;var a={url:n},r=e.isget(t[0],"files",0);if(r)if(a.size=r.size,a.type=r.type,r.type.indexOf("image")>-1){var o=window.URL||window.webkitURL,s=new Image;s.onload=function(){a.width=this.width,a.height=this.height,i(a)},s.src=o.createObjectURL(r)}else i(a);else i(a)},e.isAjaxSuccess=function(t){return t&&t.success},e.getAjaxMessage=function(t){return e.isget(t,"data","message")},e.getAjaxError=function(t){return e.isget(t,"data","error")},e.renderSelect=function(t,i){var n=t.val(),a=[],r=function(t){var i="";return t.map(function(t){var n=t.text||t.label||"",o=t.id||t.value||"";a.push(o),t.children?i+='<optgroup label="'+e.strEscape(n)+'">'+r(t.children)+"</optgroup>":i+='<option value="'+o+'"'+(t.disabled?' disabled="disabled"':"")+">"+e.strEscape(n)+"</option>"}),i};return t.html(r(i)),a.indexOf(n)>-1&&t.val(n),t.val()};var f=function(t,e){return t.data("acf-lock-"+e)||[]},h=function(t,e,i){t.data("acf-lock-"+e,i)};e.lock=function(t,e,i){var n=f(t,e);n.indexOf(i)<0&&(n.push(i),h(t,e,n))},e.unlock=function(t,e,i){var n=f(t,e),a=n.indexOf(i);return a>-1&&(n.splice(a,1),h(t,e,n)),0===n.length},e.isLocked=function(t,e){return f(t,e).length>0},$.fn.exists=function(){return $(this).length>0},$.fn.outerHTML=function(){return $(this).get(0).outerHTML},Array.prototype.indexOf||(Array.prototype.indexOf=function(t){return $.inArray(t,this)}),$(document).ready(function(){e.doAction("ready")}),$(window).on("load",function(){e.doAction("load")}),$(window).on("beforeunload",function(){e.doAction("unload")}),$(window).on("resize",function(){e.doAction("resize")}),$(document).on("sortstart",function(t,i){e.doAction("sortstart",i.item,i.placeholder)}),$(document).on("sortstop",function(t,i){e.doAction("sortstop",i.item,i.placeholder)})}(jQuery),function(t,e){"use strict";var i=function(){function t(){return f}function e(t,e,i,n){return"string"==typeof t&&"function"==typeof e&&(i=parseInt(i||10,10),c("actions",t,e,i,n)),u}function i(){var t=Array.prototype.slice.call(arguments),e=t.shift();return"string"==typeof e&&d("actions",e,t),u}function n(t,e){return"string"==typeof t&&s("actions",t,e),u}function a(t,e,i,n){return"string"==typeof t&&"function"==typeof e&&(i=parseInt(i||10,10),c("filters",t,e,i,n)),u}function r(){var t=Array.prototype.slice.call(arguments),e=t.shift();return"string"==typeof e?d("filters",e,t):u}function o(t,e){return"string"==typeof t&&s("filters",t,e),u}function s(t,e,i,n){if(f[t][e])if(i){var a=f[t][e],r;if(n)for(r=a.length;r--;){var o=a[r];o.callback===i&&o.context===n&&a.splice(r,1)}else for(r=a.length;r--;)a[r].callback===i&&a.splice(r,1)}else f[t][e]=[]}function c(t,e,i,n,a){var r={callback:i,priority:n,context:a},o=f[t][e];o?(o.push(r),o=l(o)):o=[r],f[t][e]=o}function l(t){for(var e,i,n,a=1,r=t.length;a<r;a++){for(e=t[a],i=a;(n=t[i-1])&&n.priority>e.priority;)t[i]=t[i-1],--i;t[i]=e}return t}function d(t,e,i){var n=f[t][e];if(!n)return"filters"===t&&i[0];var a=0,r=n.length;if("filters"===t)for(;a<r;a++)i[0]=n[a].callback.apply(n[a].context,i);else for(;a<r;a++)n[a].callback.apply(n[a].context,i);return"filters"!==t||i[0]}var u={removeFilter:o,applyFilters:r,addFilter:a,removeAction:n,doAction:i,addAction:e,storage:t},f={actions:{},filters:{}};return u};acf.hooks=new i}(window),function($,t){var e=/^(\S+)\s*(.*)$/,i=function(t){var e=this,i;return i=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},$.extend(i,e),i.prototype=Object.create(e.prototype),$.extend(i.prototype,t),i.prototype.constructor=i,i},n=acf.Model=function(){this.cid=acf.uniqueId("acf"),this.data=$.extend(!0,{},this.data),this.setup.apply(this,arguments),this.$el&&!this.$el.data("acf")&&this.$el.data("acf",this);var t=function(){this.initialize(),this.addEvents(),this.addActions(),this.addFilters()};this.wait&&!acf.didAction(this.wait)?this.addAction(this.wait,t):t.apply(this)};$.extend(n.prototype,{id:"",cid:"",$el:null,data:{},busy:!1,changed:!1,events:{},actions:{},filters:{},eventScope:"",wait:!1,priority:10,get:function(t){return this.data[t]},has:function(t){return null!=this.get(t)},set:function(t,e,i){return this.get(t)==e?this:(this.data[t]=e,i||(this.changed=!0,this.trigger("changed:"+t,[e]),this.trigger("changed",[t,e])),this)},inherit:function(t){return t instanceof jQuery&&(t=t.data()),$.extend(this.data,t),this},prop:function(){return this.$el.prop.apply(this.$el,arguments)},setup:function(t){$.extend(this,t)},initialize:function(){},addElements:function(t){if(!(t=t||this.elements||null)||!Object.keys(t).length)return!1;for(var e in t)this.addElement(e,t[e])},addElement:function(t,e){this["$"+t]=this.$(e)},addEvents:function(t){if(!(t=t||this.events||null))return!1;for(var i in t){var n=i.match(e);this.on(n[1],n[2],t[i])}},removeEvents:function(t){if(!(t=t||this.events||null))return!1;for(var i in t){var n=i.match(e);this.off(n[1],n[2],t[i])}},getEventTarget:function(t,e){return t||this.$el||$(document)},validateEvent:function(t){return!this.eventScope||$(t.target).closest(this.eventScope).is(this.$el)},proxyEvent:function(t){return this.proxy(function(e){if(this.validateEvent(e)){var i=acf.arrayArgs(arguments),n=i.slice(1),a=[e,$(e.currentTarget)].concat(n);t.apply(this,a)}})},on:function(t,e,i,n){var a,r,o,s,c;t instanceof jQuery?n?(a=t,r=e,o=i,s=n):(a=t,r=e,s=i):i?(r=t,o=e,s=i):(r=t,s=e),a=this.getEventTarget(a),"string"==typeof s&&(s=this.proxyEvent(this[s])),r=r+"."+this.cid,c=o?[r,o,s]:[r,s],a.on.apply(a,c)},off:function(t,e,i){var n,a,r,o;t instanceof jQuery?i?(n=t,a=e,r=i):(n=t,a=e):e?(a=t,r=e):a=t,n=this.getEventTarget(n),a=a+"."+this.cid,o=r?[a,r]:[a],n.off.apply(n,o)},trigger:function(t,e,i){var n=this.getEventTarget();return i?n.trigger.apply(n,arguments):n.triggerHandler.apply(n,arguments),this},addActions:function(t){if(!(t=t||this.actions||null))return!1;for(var e in t)this.addAction(e,t[e])},removeActions:function(t){if(!(t=t||this.actions||null))return!1;for(var e in t)this.removeAction(e,t[e])},addAction:function(t,e,i){i=i||this.priority,"string"==typeof e&&(e=this[e]),acf.addAction(t,e,i,this)},removeAction:function(t,e){acf.removeAction(t,this[e])},addFilters:function(t){if(!(t=t||this.filters||null))return!1;for(var e in t)this.addFilter(e,t[e])},addFilter:function(t,e,i){i=i||this.priority,"string"==typeof e&&(e=this[e]),acf.addFilter(t,e,i,this)},removeFilters:function(t){if(!(t=t||this.filters||null))return!1;for(var e in t)this.removeFilter(e,t[e])},removeFilter:function(t,e){acf.removeFilter(t,this[e])},$:function(t){return this.$el.find(t)},remove:function(){this.removeEvents(),this.removeActions(),this.removeFilters(),this.$el.remove()},setTimeout:function(t,e){return setTimeout(this.proxy(t),e)},time:function(){console.time(this.id||this.cid)},timeEnd:function(){console.timeEnd(this.id||this.cid)},show:function(){acf.show(this.$el)},hide:function(){acf.hide(this.$el)},proxy:function(t){return $.proxy(t,this)}}),n.extend=i,acf.models={},acf.getInstance=function(t){return t.data("acf")},acf.getInstances=function(t){var e=[];return t.each(function(){e.push(acf.getInstance($(this)))}),e}}(jQuery),function($,t){acf.models.Popup=acf.Model.extend({data:{title:"",content:"",width:0,height:0,loading:!1},events:{'click [data-event="close"]':"onClickClose","click .acf-close-popup":"onClickClose"},setup:function(t){$.extend(this.data,t),this.$el=$(this.tmpl())},initialize:function(){this.render(),this.open()},tmpl:function(){return['<div id="acf-popup">','<div class="acf-popup-box acf-box">','<div class="title"><h3></h3><a href="#" class="acf-icon -cancel grey" data-event="close"></a></div>','<div class="inner"></div>','<div class="loading"><i class="acf-loading"></i></div>',"</div>",'<div class="bg" data-event="close"></div>',"</div>"].join("")},render:function(){var t=this.get("title"),e=this.get("content"),i=this.get("loading"),n=this.get("width"),a=this.get("height");this.title(t),this.content(e),n&&this.$(".acf-popup-box").css("width",n),a&&this.$(".acf-popup-box").css("min-height",a),this.loading(i),acf.doAction("append",this.$el)},update:function(t){this.data=acf.parseArgs(t,this.data),this.render()},title:function(t){this.$(".title:first h3").html(t)},content:function(t){this.$(".inner:first").html(t)},loading:function(t){var e=this.$(".loading:first");t?e.show():e.hide()},open:function(){$("body").append(this.$el)},close:function(){this.remove()},onClickClose:function(t,e){t.preventDefault(),this.close()}}),acf.newPopup=function(t){return new acf.models.Popup(t)}}(jQuery),function($,t){acf.unload=new acf.Model({wait:"load",active:!0,changed:!1,actions:{change_field:"startListening",validation_failure:"startListening"},events:{"submit form":"stopListening"},reset:function(){this.stopListening()},startListening:function(){!this.changed&&this.active&&(this.changed=!0,$(window).on("beforeunload",this.onUnload))},stopListening:function(){this.changed=!1,$(window).off("beforeunload",this.onUnload)},onUnload:function(){return acf.__("The changes you made will be lost if you navigate away from this page")}})}(jQuery),function($,t){var e=new acf.Model({events:{"click .acf-panel-title":"onClick"},onClick:function(t,e){t.preventDefault(),this.toggle(e.parent())},isOpen:function(t){return t.hasClass("-open")},toggle:function(t){this.isOpen(t)?this.close(t):this.open(t)},open:function(t){t.addClass("-open"),t.find(".acf-panel-title i").attr("class","dashicons dashicons-arrow-down")},close:function(t){t.removeClass("-open"),t.find(".acf-panel-title i").attr("class","dashicons dashicons-arrow-right")}})}(jQuery),function($,t){var e=acf.Model.extend({data:{text:"",type:"",timeout:0,dismiss:!0,target:!1,close:function(){}},events:{"click .acf-notice-dismiss":"onClickClose"},tmpl:function(){return'<div class="acf-notice"></div>'},setup:function(t){$.extend(this.data,t),this.$el=$(this.tmpl())},initialize:function(){this.render(),this.show()},render:function(){this.type(this.get("type")),this.html("<p>"+this.get("text")+"</p>"),this.get("dismiss")&&(this.$el.append('<a href="#" class="acf-notice-dismiss acf-icon -cancel small"></a>'),this.$el.addClass("-dismiss"));var t=this.get("timeout");t&&this.away(t)},update:function(t){$.extend(this.data,t),this.initialize()},show:function(){var t=this.get("target");t&&t.prepend(this.$el)},hide:function(){this.$el.remove()},away:function(t){this.setTimeout(function(){acf.remove(this.$el)},t)},type:function(t){var e=this.get("type");e&&this.$el.removeClass("-"+e),this.$el.addClass("-"+t),"error"==t&&this.$el.addClass("acf-error-message")},html:function(t){this.$el.html(t)},text:function(t){this.$("p").html(t)},onClickClose:function(t,e){t.preventDefault(),this.get("close").apply(this,arguments),this.remove()}});acf.newNotice=function(t){return"object"!=typeof t&&(t={text:t}),new e(t)};var i=new acf.Model({wait:"prepare",priority:1,initialize:function(){var t=$(".acf-admin-notice");t.length&&$("h1:first").after(t)}})}(jQuery),function($,t){acf.models.Postbox=acf.Model.extend({data:{id:"",key:"",style:"default",label:"top",editLink:"",editTitle:"",visibility:!0},setup:function(t){$.extend(this.data,t)},initialize:function(){var t=this.get("id"),e=$("#"+t),i=$("#"+t+"-hide"),n=i.parent();e.addClass("acf-postbox"),n.addClass("acf-postbox-toggle"),e.removeClass("hide-if-js"),n.removeClass("hide-if-js");var a=this.get("style");"default"!==a&&e.addClass(a),e.children(".inside").addClass("acf-fields").addClass("-"+this.get("label")),this.get("visibility")?i.prop("checked",!0):(e.addClass("acf-hidden"),n.addClass("acf-hidden"));var r=this.get("editLink"),o=this.get("editTitle");r&&e.children(".hndle").append('<a href="'+r+'" class="dashicons dashicons-admin-generic acf-hndle-cog acf-js-tooltip" title="'+o+'"></a>')}}),acf.newPostbox=function(t){return new acf.models.Postbox(t)}}(jQuery),function($,t){acf.newTooltip=function(t){return"object"!=typeof t&&(t={text:t}),void 0!==t.confirmRemove?(t.textConfirm=acf.__("Remove"),t.textCancel=acf.__("Cancel"),new i(t)):void 0!==t.confirm?new i(t):new e(t)};var e=acf.Model.extend({data:{text:"",timeout:0,target:null},tmpl:function(){return'<div class="acf-tooltip"></div>'},setup:function(t){$.extend(this.data,t),this.$el=$(this.tmpl())},initialize:function(){this.render(),this.show(),this.position();var t=this.get("timeout");t&&setTimeout($.proxy(this.fade,this),t)},update:function(t){$.extend(this.data,t),this.initialize()},render:function(){this.html(this.get("text"))},show:function(){$("body").append(this.$el)},hide:function(){this.$el.remove()},fade:function(){this.$el.addClass("acf-fade-up"),this.setTimeout(function(){this.remove()},250)},html:function(t){this.$el.html(t)},position:function(){var t=this.$el,e=this.get("target");if(e){t.removeClass("right left bottom top");var i=10,n=e.outerWidth(),a=e.outerHeight(),r=e.offset().top,o=e.offset().left,s=t.outerWidth(),c=t.outerHeight(),l=r-c,d=o+n/2-s/2;d<10?(t.addClass("right"),d=o+n,l=r+a/2-c/2):d+s+10>$(window).width()?(t.addClass("left"),d=o-s,l=r+a/2-c/2):l-$(window).scrollTop()<10?(t.addClass("bottom"),l=r+a):t.addClass("top"),t.css({top:l,left:d})}}}),i=e.extend({data:{text:"",textConfirm:"",textCancel:"",target:null,targetConfirm:!0,confirm:function(){},cancel:function(){},context:!1},events:{'click [data-event="cancel"]':"onCancel",'click [data-event="confirm"]':"onConfirm"},addEvents:function(){acf.Model.prototype.addEvents.apply(this);var t=$(document),e=this.get("target");this.setTimeout(function(){this.on(t,"click","onCancel")}),this.get("targetConfirm")&&this.on(e,"click","onConfirm")},removeEvents:function(){acf.Model.prototype.removeEvents.apply(this);var t=$(document),e=this.get("target");this.off(t,"click"),this.off(e,"click")},render:function(){var t=this.get("text")||acf.__("Are you sure?"),e=this.get("textConfirm")||acf.__("Yes"),i=this.get("textCancel")||acf.__("No"),n=[t,'<a href="#" data-event="confirm">'+e+"</a>",'<a href="#" data-event="cancel">'+i+"</a>"].join(" ");this.html(n),this.$el.addClass("-confirm")},onCancel:function(t,e){t.preventDefault(),t.stopImmediatePropagation();var i=this.get("cancel"),n=this.get("context")||this;i.apply(n,arguments),this.remove()},onConfirm:function(t,e){t.preventDefault(),t.stopImmediatePropagation();var i=this.get("confirm"),n=this.get("context")||this;i.apply(n,arguments),this.remove()}});acf.models.Tooltip=e,acf.models.TooltipConfirm=i;var n=new acf.Model({tooltip:!1,events:{"mouseenter .acf-js-tooltip":"showTitle","mouseup .acf-js-tooltip":"hideTitle","mouseleave .acf-js-tooltip":"hideTitle"},showTitle:function(t,e){var i=e.attr("title");i&&(e.attr("title",""),this.tooltip?this.tooltip.update({text:i,target:e}):this.tooltip=acf.newTooltip({text:i,target:e}))},hideTitle:function(t,e){this.tooltip.hide(),e.attr("title",this.tooltip.get("text"))}})}(jQuery),function($,t){var e=[];acf.Field=acf.Model.extend({type:"",eventScope:".acf-field",wait:"ready",setup:function(t){this.$el=t,this.inherit(t),this.inherit(this.$control())},val:function(t){return void 0!==t?this.setValue(t):this.prop("disabled")?null:this.getValue()},getValue:function(){return this.$input().val()},setValue:function(t){return acf.val(this.$input(),t)},__:function(t){return acf._e(this.type,t)},$control:function(){return!1},$input:function(){return this.$("[name]:first")},$inputWrap:function(){return this.$(".acf-input:first")},$labelWrap:function(){return this.$(".acf-label:first")},getInputName:function(){return this.$input().attr("name")||""},parent:function(){var t=this.parents();return!!t.length&&t[0]},parents:function(){var t=this.$el.parents(".acf-field");return acf.getFields(t)},show:function(t,e){var i=acf.show(this.$el,t);return i&&(this.prop("hidden",!1),acf.doAction("show_field",this,e)),i},hide:function(t,e){var i=acf.hide(this.$el,t);return i&&(this.prop("hidden",!0),acf.doAction("hide_field",this,e)),i},enable:function(t,e){var i=acf.enable(this.$el,t);return i&&(this.prop("disabled",!1),acf.doAction("enable_field",this,e)),i},disable:function(t,e){var i=acf.disable(this.$el,t);return i&&(this.prop("disabled",!0),acf.doAction("disable_field",this,e)),i},showEnable:function(t,e){return this.enable.apply(this,arguments),this.show.apply(this,arguments)},hideDisable:function(t,e){return this.disable.apply(this,arguments),this.hide.apply(this,arguments)},showNotice:function(t){"object"!=typeof t&&(t={text:t}),this.notice&&this.notice.remove(),t.target=this.$inputWrap(),this.notice=acf.newNotice(t)},removeNotice:function(t){this.notice&&(this.notice.away(t||0),this.notice=!1)},showError:function(t){this.$el.addClass("acf-error"),void 0!==t&&this.showNotice({text:t,type:"error",dismiss:!1}),acf.doAction("invalid_field",this),this.$el.one("focus change","input, select, textarea",$.proxy(this.removeError,this))},removeError:function(){this.$el.removeClass("acf-error"),this.removeNotice(250),acf.doAction("valid_field",this)},trigger:function(t,e,i){return"invalidField"==t&&(i=!0),acf.Model.prototype.trigger.apply(this,[t,e,i])}}),acf.newField=function(t){var e=t.data("type"),n=i(e),a=acf.models[n]||acf.Field,r=new a(t);return acf.doAction("new_field",r),r};var i=function(t){return acf.strPascalCase(t||"")+"Field"};acf.registerFieldType=function(t){var n=t.prototype,a=n.type,r=i(a);acf.models[r]=t,e.push(a)},acf.getFieldType=function(t){var e=i(t);return acf.models[e]||!1},acf.getFieldTypes=function(t){t=acf.parseArgs(t,{category:""});var i=[];return e.map(function(e){var n=acf.getFieldType(e),a=n.prototype;t.category&&a.category!==t.category||i.push(n)}),i}}(jQuery),function($,t){acf.findFields=function(t){var e=".acf-field",i=!1;return t=acf.parseArgs(t,{key:"",name:"",type:"",is:"",parent:!1,sibling:!1,limit:!1,visible:!1,suppressFilters:!1}),t.suppressFilters||(t=acf.applyFilters("find_fields_args",t)),t.key&&(e+='[data-key="'+t.key+'"]'),t.type&&(e+='[data-type="'+t.type+'"]'),t.name&&(e+='[data-name="'+t.name+'"]'),t.is&&(e+=t.is),t.visible&&(e+=":visible"),i=t.parent?t.parent.find(e):t.sibling?t.sibling.siblings(e):$(e),t.suppressFilters||(i=i.not(".acf-clone .acf-field"),i=acf.applyFilters("find_fields",i)),t.limit&&(i=i.slice(0,t.limit)),i},acf.findField=function(t,e){return acf.findFields({key:t,limit:1,parent:e,suppressFilters:!0})},acf.getField=function(t){t instanceof jQuery||(t=acf.findField(t));var e=t.data("acf");return e||(e=acf.newField(t)),e},acf.getFields=function(t){t instanceof jQuery||(t=acf.findFields(t));var e=[];return t.each(function(){var t=acf.getField($(this));e.push(t)}),e},acf.findClosestField=function(t){return t.closest(".acf-field")},acf.getClosestField=function(t){var e=acf.findClosestField(t);return this.getField(e)};var e=function(t){var e=t,n=t+"_fields",a=t+"_field",r=function(t){var e=acf.arrayArgs(arguments),i=e.slice(1),a=acf.getFields({parent:t});if(a.length){var r=[n,a].concat(i);acf.doAction.apply(null,r)}},o=function(t){var e=acf.arrayArgs(arguments),i=e.slice(1);t.map(function(t,e){var n=[a,t].concat(i);acf.doAction.apply(null,n)})};acf.addAction(e,r),acf.addAction(n,o),i(t)},i=function(t){var e=t+"_field",i=t+"Field",n=function(n){var a=acf.arrayArgs(arguments),o=a.slice(1);["type","name","key"].map(function(t){var i="/"+t+"="+n.get(t);a=[e+i,n].concat(o),acf.doAction.apply(null,a)}),r.indexOf(t)>-1&&n.trigger(i,o)};acf.addAction(e,n)},n=["prepare","ready","load","append","remove","sortstart","sortstop","show","hide","unload"],a=["valid","invalid","enable","disable","new"],r=["remove","sortstart","sortstop","show","hide","unload","valid","invalid","enable","disable"];n.map(e),a.map(i);var o=new acf.Model({id:"fieldsEventManager",events:{'click .acf-field a[href="#"]':"onClick","change .acf-field":"onChange"},onClick:function(t){t.preventDefault()},onChange:function(){$("#_acf_changed").val(1)}})}(jQuery),function($,t){var e=0,i=acf.Field.extend({type:"accordion",wait:"",$control:function(){return this.$(".acf-fields:first")},initialize:function(){if(!this.$el.is("td")){if(this.get("endpoint"))return this.remove();var t=this.$el,i=this.$labelWrap(),n=this.$inputWrap(),a=this.$control(),r=n.children(".description");if(r.length&&i.append(r),this.$el.is("tr")){var o=this.$el.closest("table"),s=$('<div class="acf-accordion-title"/>'),c=$('<div class="acf-accordion-content"/>'),l=$('<table class="'+o.attr("class")+'"/>'),d=$("<tbody/>");s.append(i.html()),l.append(d),c.append(l),n.append(s),n.append(c),i.remove(),a.remove(),n.attr("colspan",2),i=s,n=c,a=d}t.addClass("acf-accordion"),i.addClass("acf-accordion-title"),n.addClass("acf-accordion-content"),e++,this.get("multi_expand")&&t.attr("multi-expand",1);var u=acf.getPreference("this.accordions")||[];void 0!==u[e-1]&&this.set("open",u[e-1]),this.get("open")&&(t.addClass("-open"),n.css("display","block")),i.prepend('<i class="acf-accordion-icon dashicons dashicons-arrow-'+(this.get("open")?"down":"right")+'"></i>');var f=t.parent();a.addClass(f.hasClass("-left")?"-left":""),a.addClass(f.hasClass("-clear")?"-clear":""),a.append(t.nextUntil(".acf-field-accordion",".acf-field")),a.removeAttr("data-open data-multi_expand data-endpoint")}}});acf.registerFieldType(i);var n=new acf.Model({actions:{unload:"onUnload"},events:{"click .acf-accordion-title":"onClick","invalidField .acf-accordion":"onInvalidField"},isOpen:function(t){return t.hasClass("-open")},toggle:function(t){this.isOpen(t)?this.close(t):this.open(t)},open:function(t){t.find(".acf-accordion-content:first").slideDown().css("display","block"),t.find(".acf-accordion-icon:first").removeClass("dashicons-arrow-right").addClass("dashicons-arrow-down"),t.addClass("-open"),acf.doAction("show",t),t.attr("multi-expand")||t.siblings(".acf-accordion.-open").each(function(){n.close($(this))})},close:function(t){t.find(".acf-accordion-content:first").slideUp(),t.find(".acf-accordion-icon:first").removeClass("dashicons-arrow-down").addClass("dashicons-arrow-right"),t.removeClass("-open"),acf.doAction("hide",t)},onClick:function(t,e){t.preventDefault(),this.toggle(e.parent())},onInvalidField:function(t,e){this.busy||(this.busy=!0,this.setTimeout(function(){this.busy=!1},1e3),this.open(e))},onUnload:function(t){var e=[];$(".acf-accordion").each(function(){var t=$(this).hasClass("-open")?1:0;e.push(t)}),e.length&&acf.setPreference("this.accordions",e)}})}(jQuery),function($,t){var e=acf.Field.extend({type:"button_group",events:{'click input[type="radio"]':"onClick"},$control:function(){return this.$(".acf-button-group")},$input:function(){return this.$("input:checked")},setValue:function(t){
2
  this.$('input[value="'+t+'"]').prop("checked",!0).trigger("change")},onClick:function(t,e){var i=e.parent("label"),n=i.hasClass("selected");this.$(".selected").removeClass("selected"),i.addClass("selected"),this.get("allow_null")&&n&&(i.removeClass("selected"),e.prop("checked",!1).trigger("change"))}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"checkbox",events:{"change input":"onChange","click .acf-add-checkbox":"onClickAdd","click .acf-checkbox-toggle":"onClickToggle","click .acf-checkbox-custom":"onClickCustom"},$control:function(){return this.$(".acf-checkbox-list")},$toggle:function(){return this.$(".acf-checkbox-toggle")},$input:function(){return this.$('input[type="hidden"]')},$inputs:function(){return this.$('input[type="checkbox"]').not(".acf-checkbox-toggle")},getValue:function(){var t=[];return this.$(":checked").each(function(){t.push($(this).val())}),!!t.length&&t},onChange:function(t,e){var i=e.prop("checked"),n=this.$toggle();if(i?e.parent().addClass("selected"):e.parent().removeClass("selected"),n.length){0==this.$inputs().not(":checked").length?n.prop("checked",!0):n.prop("checked",!1)}},onClickAdd:function(t,e){var i='<li><input class="acf-checkbox-custom" type="checkbox" checked="checked" /><input type="text" name="'+this.getInputName()+'[]" /></li>';e.parent("li").before(i)},onClickToggle:function(t,e){var i=e.prop("checked");this.$inputs().prop("checked",i)},onClickCustom:function(t,e){var i=e.prop("checked"),n=e.next('input[type="text"]');i?n.prop("disabled",!1):(n.prop("disabled",!0),""==n.val()&&e.parent("li").remove())}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"color_picker",wait:"load",$control:function(){return this.$(".acf-color-picker")},$input:function(){return this.$('input[type="hidden"]')},$inputText:function(){return this.$('input[type="text"]')},initialize:function(){var t=this.$input(),e=this.$inputText(),i=function(i){setTimeout(function(){acf.val(t,e.val())},1)},n={defaultColor:!1,palettes:!0,hide:!0,change:i,clear:i},n=acf.applyFilters("color_picker_args",n,this);e.wpColorPicker(n)}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"date_picker",events:{'blur input[type="text"]':"onBlur"},$control:function(){return this.$(".acf-date-picker")},$input:function(){return this.$('input[type="hidden"]')},$inputText:function(){return this.$('input[type="text"]')},initialize:function(){if(this.has("save_format"))return this.initializeCompatibility();var t=this.$input(),e=this.$inputText(),i={dateFormat:this.get("date_format"),altField:t,altFormat:"yymmdd",changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.get("first_day")};i=acf.applyFilters("date_picker_args",i,this),acf.newDatePicker(e,i),acf.doAction("date_picker_init",e,i,this)},initializeCompatibility:function(){var t=this.$input(),e=this.$inputText();e.val(t.val());var i={dateFormat:this.get("date_format"),altField:t,altFormat:this.get("save_format"),changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.get("first_day")};i=acf.applyFilters("date_picker_args",i,this);var n=i.dateFormat;i.dateFormat=this.get("save_format"),acf.newDatePicker(e,i),e.datepicker("option","dateFormat",n),acf.doAction("date_picker_init",e,i,this)},onBlur:function(){this.$inputText().val()||acf.val(this.$input(),"")}});acf.registerFieldType(e);var i=new acf.Model({priority:5,wait:"ready",initialize:function(){var t=acf.get("locale"),e=acf.get("rtl"),i=acf.get("datePickerL10n");return!!i&&(void 0!==$.datepicker&&(i.isRTL=e,$.datepicker.regional[t]=i,void $.datepicker.setDefaults(i)))}});acf.newDatePicker=function(t,e){if(void 0===$.datepicker)return!1;e=e||{},t.datepicker(e),$("body > #ui-datepicker-div").exists()&&$("body > #ui-datepicker-div").wrap('<div class="acf-ui-datepicker" />')}}(jQuery),function($,t){var e=acf.models.DatePickerField.extend({type:"date_time_picker",$control:function(){return this.$(".acf-date-time-picker")},initialize:function(){var t=this.$input(),e=this.$inputText(),i={dateFormat:this.get("date_format"),timeFormat:this.get("time_format"),altField:t,altFieldTimeOnly:!1,altFormat:"yy-mm-dd",altTimeFormat:"HH:mm:ss",changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.get("first_day"),controlType:"select",oneLine:!0};i=acf.applyFilters("date_time_picker_args",i,this),acf.newDateTimePicker(e,i),acf.doAction("date_time_picker_init",e,i,this)}});acf.registerFieldType(e);var i=new acf.Model({priority:5,wait:"ready",initialize:function(){var t=acf.get("locale"),e=acf.get("rtl"),i=acf.get("dateTimePickerL10n");return!!i&&(void 0!==$.timepicker&&(i.isRTL=e,$.timepicker.regional[t]=i,void $.timepicker.setDefaults(i)))}});acf.newDateTimePicker=function(t,e){if(void 0===$.timepicker)return!1;e=e||{},t.datetimepicker(e),$("body > #ui-datepicker-div").exists()&&$("body > #ui-datepicker-div").wrap('<div class="acf-ui-datepicker" />')}}(jQuery),function($,t){var e=acf.Field.extend({type:"google_map",map:!1,wait:"load",events:{'click a[data-name="clear"]':"onClickClear",'click a[data-name="locate"]':"onClickLocate",'click a[data-name="search"]':"onClickSearch","keydown .search":"onKeydownSearch","keyup .search":"onKeyupSearch","focus .search":"onFocusSearch","blur .search":"onBlurSearch",showField:"onShow"},$control:function(){return this.$(".acf-google-map")},$input:function(t){return this.$('input[data-name="'+(t||"address")+'"]')},$search:function(){return this.$(".search")},$canvas:function(){return this.$(".canvas")},addClass:function(t){this.$control().addClass(t)},removeClass:function(t){this.$control().removeClass(t)},getValue:function(){var t={lat:"",lng:"",address:""};return this.$('input[type="hidden"]').each(function(){t[$(this).data("name")]=$(this).val()}),t.lat&&t.lng||(t=!1),t},setValue:function(t){t=acf.parseArgs(t,{lat:"",lng:"",address:""});for(var e in t)acf.val(this.$input(e),t[e]);t.lat&&t.lng||(t=!1),this.renderVal(t)},renderVal:function(t){t?(this.addClass("-value"),this.setPosition(t.lat,t.lng),this.map.marker.setVisible(!0)):(this.removeClass("-value"),this.map.marker.setVisible(!1)),this.$search().val(t.address)},setPosition:function(t,e){var i=this.newLatLng(t,e);return this.map.marker.setPosition(i),this.map.marker.setVisible(!0),acf.doAction("google_map_change",i,this.map,this),this.center(),this},center:function(){var t=this.map.marker.getPosition(),e=this.get("lat"),i=this.get("lng");t&&(e=t.lat(),i=t.lng());var n=this.newLatLng(e,i);this.map.setCenter(n)},getSearchVal:function(){return this.$search().val()},initialize:function(){if(!i.isReady())return void i.ready(this.initializeMap,this);this.initializeMap()},newLatLng:function(t,e){return new google.maps.LatLng(parseFloat(t),parseFloat(e))},initializeMap:function(){var t=this.get("zoom"),e=this.get("lat"),i=this.get("lng"),n={scrollwheel:!1,zoom:parseInt(t),center:this.newLatLng(e,i),mapTypeId:google.maps.MapTypeId.ROADMAP,marker:{draggable:!0,raiseOnDrag:!0},autocomplete:{}};n=acf.applyFilters("google_map_args",n,this);var a=new google.maps.Map(this.$canvas()[0],n);this.addMapEvents(a,this);var r=acf.parseArgs(n.marker,{draggable:!0,raiseOnDrag:!0,map:a});r=acf.applyFilters("google_map_marker_args",r,this);var o=new google.maps.Marker(r);this.addMarkerEvents(o,this),a.acf=this,a.marker=o,this.map=a,acf.doAction("google_map_init",a,o,this);var s=this.getValue();this.renderVal(s)},addMapEvents:function(t,e){if(acf.isset(window,"google","maps","places","Autocomplete")){var i=t.autocomplete||{},n=new google.maps.places.Autocomplete(this.$search()[0],i);n.bindTo("bounds",t),google.maps.event.addListener(n,"place_changed",function(){var t=this.getPlace();t.address=e.getSearchVal(),e.setPlace(t)})}google.maps.event.addListener(t,"click",function(t){var i=t.latLng.lat(),n=t.latLng.lng();e.searchPosition(i,n)})},addMarkerEvents:function(t,e){google.maps.event.addListener(t,"dragend",function(){var t=this.getPosition(),i=t.lat(),n=t.lng();e.searchPosition(i,n)})},searchPosition:function(t,e){var n=this.newLatLng(t,e),a=this.$control();this.setPosition(t,e),a.addClass("-loading");var r=$.proxy(function(i,n){a.removeClass("-loading");var r="";n!=google.maps.GeocoderStatus.OK?console.log("Geocoder failed due to: "+n):i[0]?r=i[0].formatted_address:console.log("No results found"),this.val({lat:t,lng:e,address:r})},this);i.geocoder.geocode({latLng:n},r)},setPlace:function(t){if(!t)return this;if(t.name&&!t.geometry)return this.searchAddress(t.name),this;var e=t.geometry.location.lat(),i=t.geometry.location.lng(),n=t.address||t.formatted_address;return this.setValue({lat:e,lng:i,address:n}),this},searchAddress:function(t){var e=t.split(",");if(2==e.length){var n=e[0],a=e[1];if($.isNumeric(n)&&$.isNumeric(a))return this.searchPosition(n,a)}var r=this.$control();r.addClass("-loading");var o=this.proxy(function(e,i){r.removeClass("-loading");var n="",a="";i!=google.maps.GeocoderStatus.OK?console.log("Geocoder failed due to: "+i):e[0]?(n=e[0].geometry.location.lat(),a=e[0].geometry.location.lng()):console.log("No results found"),this.val({lat:n,lng:a,address:t})});i.geocoder.geocode({address:t},o)},searchLocation:function(){if(!navigator.geolocation)return alert(acf.__("Sorry, this browser does not support geolocation"));var t=this.$control();t.addClass("-loading");var e=$.proxy(function(e,i){t.removeClass("-loading");var n=e.coords.latitude,a=e.coords.longitude;this.searchPosition(n,a)},this),i=function(e){t.removeClass("-loading")};navigator.geolocation.getCurrentPosition(e,i)},onClickClear:function(t,e){this.val(!1)},onClickLocate:function(t,e){this.searchLocation()},onClickSearch:function(t,e){this.searchAddress(this.$search().val())},onFocusSearch:function(t,e){this.removeClass("-value"),this.onKeyupSearch.apply(this,arguments)},onBlurSearch:function(t,e){this.setTimeout(function(){this.removeClass("-search"),e.val()&&this.addClass("-value")},100)},onKeyupSearch:function(t,e){e.val()?this.addClass("-search"):this.removeClass("-search")},onKeydownSearch:function(t,e){13==t.which&&t.preventDefault()},onMousedown:function(){},onShow:function(){if(!this.map)return!1;this.setTimeout(this.center,10)}});acf.registerFieldType(e);var i=new acf.Model({geocoder:!1,data:{status:!1},getStatus:function(){return this.get("status")},setStatus:function(t){return this.set("status",t)},isReady:function(){if("ready"==this.getStatus())return!0;if("loading"==this.getStatus())return!1;if(acf.isset(window,"google","maps","places"))return this.setStatus("ready"),!0;var t=acf.get("google_map_api");return t&&(this.setStatus("loading"),$.ajax({url:t,dataType:"script",cache:!0,context:this,success:function(){this.setStatus("ready"),this.geocoder=new google.maps.Geocoder,acf.doAction("google_map_api_loaded")}})),!1},ready:function(t,e){acf.addAction("google_map_api_loaded",t,10,e)}})}(jQuery),function($,t){var e=acf.Field.extend({type:"image",$control:function(){return this.$(".acf-image-uploader")},$input:function(){return this.$('input[type="hidden"]')},events:{'click a[data-name="add"]':"onClickAdd",'click a[data-name="edit"]':"onClickEdit",'click a[data-name="remove"]':"onClickRemove",'change input[type="file"]':"onChange"},initialize:function(){"basic"===this.get("uploader")&&this.$el.closest("form").attr("enctype","multipart/form-data")},validateAttachment:function(t){t=t||{},void 0!==t.id&&(t=t.attributes),t=acf.parseArgs(t,{url:"",alt:"",title:"",caption:"",description:"",width:0,height:0});var e=acf.isget(t,"sizes",this.get("preview_size"),"url");return null!==e&&(t.url=e),t},render:function(t){t=this.validateAttachment(t),this.$("img").attr({src:t.url,alt:t.alt,title:t.title});var e=t.id||"";this.val(e),e?this.$control().addClass("has-value"):this.$control().removeClass("has-value")},append:function(t,e){var i=function(t,e){for(var i=acf.getFields({key:t.get("key"),parent:e.$el}),n=0;n<i.length;n++)if(!i[n].val())return i[n];return!1},n=i(this,e);n||(e.$(".acf-button:last").trigger("click"),n=i(this,e)),n&&n.render(t)},selectAttachment:function(){var t=this.parent(),e=t&&"repeater"===t.get("type"),i=acf.newMediaPopup({mode:"select",type:"image",title:acf.__("Select Image"),field:this.get("key"),multiple:e,library:this.get("library"),allowedTypes:this.get("mime_types"),select:$.proxy(function(e,i){i>0?this.append(e,t):this.render(e)},this)})},editAttachment:function(){var t=this.val();if(t)var e=acf.newMediaPopup({mode:"edit",title:acf.__("Edit Image"),button:acf.__("Update Image"),attachment:t,field:this.get("key"),select:$.proxy(function(t,e){this.render(t)},this)})},removeAttachment:function(){this.render(!1)},onClickAdd:function(t,e){this.selectAttachment()},onClickEdit:function(t,e){this.editAttachment()},onClickRemove:function(t,e){this.removeAttachment()},onChange:function(t,e){var i=this.$input();acf.getFileInputData(e,function(t){i.val($.param(t))})}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.models.ImageField.extend({type:"file",$control:function(){return this.$(".acf-file-uploader")},$input:function(){return this.$('input[type="hidden"]')},validateAttachment:function(t){return t=t||{},void 0!==t.id&&(t=t.attributes),t=acf.parseArgs(t,{url:"",alt:"",title:"",filename:"",filesizeHumanReadable:"",icon:"/wp-includes/images/media/default.png"})},render:function(t){t=this.validateAttachment(t),this.$("img").attr({src:t.icon,alt:t.alt,title:t.title}),this.$('[data-name="title"]').text(t.title),this.$('[data-name="filename"]').text(t.filename).attr("href",t.url),this.$('[data-name="filesize"]').text(t.filesizeHumanReadable);var e=t.id||"";acf.val(this.$input(),e),e?this.$control().addClass("has-value"):this.$control().removeClass("has-value")},selectAttachment:function(){var t=this.parent(),e=t&&"repeater"===t.get("type"),i=acf.newMediaPopup({mode:"select",title:acf.__("Select File"),field:this.get("key"),multiple:e,library:this.get("library"),allowedTypes:this.get("mime_types"),select:$.proxy(function(e,i){i>0?this.append(e,t):this.render(e)},this)})},editAttachment:function(){var t=this.val();if(!t)return!1;var e=acf.newMediaPopup({mode:"edit",title:acf.__("Edit File"),button:acf.__("Update File"),attachment:t,field:this.get("key"),select:$.proxy(function(t,e){this.render(t)},this)})}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"link",events:{'click a[data-name="add"]':"onClickEdit",'click a[data-name="edit"]':"onClickEdit",'click a[data-name="remove"]':"onClickRemove","change .link-node":"onChange"},$control:function(){return this.$(".acf-link")},$node:function(){return this.$(".link-node")},getValue:function(){var t=this.$node();return!!t.attr("href")&&{title:t.html(),url:t.attr("href"),target:t.attr("target")}},setValue:function(t){t=acf.parseArgs(t,{title:"",url:"",target:""});var e=this.$control(),i=this.$node();e.removeClass("-value -external"),t.url&&e.addClass("-value"),"_blank"===t.target&&e.addClass("-external"),this.$(".link-title").html(t.title),this.$(".link-url").attr("href",t.url).html(t.url),i.html(t.title),i.attr("href",t.url),i.attr("target",t.target),this.$(".input-title").val(t.title),this.$(".input-target").val(t.target),this.$(".input-url").val(t.url).trigger("change")},onClickEdit:function(t,e){acf.wpLink.open(this.$node())},onClickRemove:function(t,e){this.setValue(!1)},onChange:function(t,e){var i=this.getValue();this.setValue(i)}});acf.registerFieldType(e),acf.wpLink=new acf.Model({getNodeValue:function(){var t=this.get("node");return{title:t.html(),url:t.attr("href"),target:t.attr("target")}},setNodeValue:function(t){var e=this.get("node");e.html(t.title),e.attr("href",t.url),e.attr("target",t.target),e.trigger("change")},getInputValue:function(){return{title:$("#wp-link-text").val(),url:$("#wp-link-url").val(),target:$("#wp-link-target").prop("checked")?"_blank":""}},setInputValue:function(t){$("#wp-link-text").val(t.title),$("#wp-link-url").val(t.url),$("#wp-link-target").prop("checked","_blank"===t.target)},open:function(t){this.on("wplink-open","onOpen"),this.on("wplink-close","onClose"),this.set("node",t);var e=$('<textarea id="acf-link-textarea" style="display:none;"></textarea>');$("body").append(e);var i=this.getNodeValue();wpLink.open("acf-link-textarea",i.url,i.title,null)},onOpen:function(){$("#wp-link-wrap").addClass("has-text-field");var t=this.getNodeValue();this.setInputValue(t)},close:function(){wpLink.close()},onClose:function(){if(!this.has("node"))return!1;this.off("wplink-open"),this.off("wplink-close");var t=this.getInputValue();this.setNodeValue(t),$("#acf-link-textarea").remove(),this.set("node",null)}})}(jQuery),function($,t){var e=acf.Field.extend({type:"oembed",events:{'click [data-name="clear-button"]':"onClickClear","keypress .input-search":"onKeypressSearch","keyup .input-search":"onKeyupSearch","change .input-search":"onChangeSearch"},$control:function(){return this.$(".acf-oembed")},$input:function(){return this.$(".input-value")},$search:function(){return this.$(".input-search")},getValue:function(){return this.$input().val()},getSearchVal:function(){return this.$search().val()},setValue:function(t){t?this.$control().addClass("has-value"):this.$control().removeClass("has-value"),acf.val(this.$input(),t)},showLoading:function(t){acf.showLoading(this.$(".canvas"))},hideLoading:function(){acf.hideLoading(this.$(".canvas"))},maybeSearch:function(){var t=this.val(),e=this.getSearchVal();if(!e)return this.clear();if("http"!=e.substr(0,4)&&(e="http://"+e),e!==t){var i=this.get("timeout");i&&clearTimeout(i);var n=$.proxy(this.search,this,e);this.set("timeout",setTimeout(n,300))}},search:function(t){var e={action:"acf/fields/oembed/search",s:t,field_key:this.get("key")},i=this.get("xhr");i&&i.abort(),this.showLoading();var i=$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(e),type:"post",dataType:"json",context:this,success:function(t){t&&t.html||(t={url:!1,html:""}),this.val(t.url),this.$(".canvas-media").html(t.html)},complete:function(){this.hideLoading()}});this.set("xhr",i)},clear:function(){this.val(""),this.$search().val(""),this.$(".canvas-media").html("")},onClickClear:function(t,e){this.clear()},onKeypressSearch:function(t,e){13==t.which&&(t.preventDefault(),this.maybeSearch())},onKeyupSearch:function(t,e){e.val()&&this.maybeSearch()},onChangeSearch:function(t,e){this.maybeSearch()}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"radio",events:{'click input[type="radio"]':"onClick"},$control:function(){return this.$(".acf-radio-list")},$input:function(){return this.$("input:checked")},$inputText:function(){return this.$('input[type="text"]')},getValue:function(){var t=this.$input().val();return"other"===t&&this.get("other_choice")&&(t=this.$inputText().val()),t},onClick:function(t,e){var i=e.parent("label"),n=i.hasClass("selected"),a=e.val();this.$(".selected").removeClass("selected"),i.addClass("selected"),this.get("allow_null")&&n&&(i.removeClass("selected"),e.prop("checked",!1).trigger("change"),a=!1),this.get("other_choice")&&("other"===a?this.$inputText().prop("disabled",!1):this.$inputText().prop("disabled",!0))}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"range",events:{'input input[type="range"]':"onChange","change input":"onChange"},$input:function(){return this.$('input[type="range"]')},$inputAlt:function(){return this.$('input[type="number"]')},setValue:function(t){this.busy=!0,acf.val(this.$input(),t),acf.val(this.$inputAlt(),t,!0),this.busy=!1},onChange:function(t,e){this.busy||this.setValue(e.val())}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"relationship",events:{"keypress [data-filter]":"onKeypressFilter","change [data-filter]":"onChangeFilter","keyup [data-filter]":"onChangeFilter","click .choices-list .acf-rel-item":"onClickAdd",'click [data-name="remove_item"]':"onClickRemove",mouseover:"onHover"},$control:function(){return this.$(".acf-relationship")},$list:function(t){return this.$("."+t+"-list")},$listItems:function(t){return this.$list(t).find(".acf-rel-item")},$listItem:function(t,e){return this.$list(t).find('.acf-rel-item[data-id="'+e+'"]')},getValue:function(){var t=[];return this.$listItems("values").each(function(){t.push($(this).data("id"))}),!!t.length&&t},newChoice:function(t){return["<li>",'<span data-id="'+t.id+'" class="acf-rel-item">'+t.text+"</span>","</li>"].join("")},newValue:function(t){return["<li>",'<input type="hidden" name="'+this.getInputName()+'[]" value="'+t.id+'" />','<span data-id="'+t.id+'" class="acf-rel-item">'+t.text,'<a href="#" class="acf-icon -minus small dark" data-name="remove_item"></a>',"</span>","</li>"].join("")},addSortable:function(t){this.$list("values").sortable({items:"li",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,update:function(){t.$input().trigger("change")}})},initialize:function(){var t=this.proxy(function(t){if(!this.get("loading")&&this.get("more")){var e=this.$list("choices"),i=Math.ceil(e.scrollTop()),n=Math.ceil(e[0].scrollHeight),a=Math.ceil(e.innerHeight()),r=this.get("paged")||1;i+a>=n&&(this.set("paged",r+1),this.fetch())}});this.$list("choices").scrollTop(0).on("scroll",t),this.fetch()},onHover:function(t){$().off(t),this.addSortable(this)},onKeypressFilter:function(t,e){13==t.which&&t.preventDefault()},onChangeFilter:function(t,e){var i=e.val(),n=e.data("filter");this.get(n)!==i&&(this.set(n,i),this.set("paged",1),e.is("select")?this.fetch():this.maybeFetch())},onClickAdd:function(t,e){var i=this.val(),n=parseInt(this.get("max"));if(e.hasClass("disabled"))return!1;if(n>0&&i&&i.length>=n)return this.showNotice({text:acf.__("Maximum values reached ( {max} values )").replace("{max}",n),type:"warning"}),!1;e.addClass("disabled");var a=this.newValue({id:e.data("id"),text:e.html()});this.$list("values").append(a),this.$input().trigger("change")},onClickRemove:function(t,e){var i=e.parent(),n=i.parent(),a=i.data("id");setTimeout(function(){n.remove()},1),this.$listItem("choices",a).removeClass("disabled"),this.$input().trigger("change")},maybeFetch:function(){var t=this.get("timeout");t&&clearTimeout(t),t=this.setTimeout(this.fetch,300),this.set("timeout",t)},getAjaxData:function(){var t=this.$control().data();for(var e in t)t[e]=this.get(e);return t.action="acf/fields/relationship/query",t.field_key=this.get("key"),t},fetch:function(){var t=this.get("xhr");t&&t.abort();var e=this.getAjaxData(),i=this.$list("choices");1==e.paged&&i.html("");var n=$('<li><i class="acf-loading"></i> '+acf.__("Loading")+"</li>");i.append(n),this.set("loading",!0);var a=function(){this.set("loading",!1),n.remove()},r=function(t){if(!t||!t.results||!t.results.length)return this.set("more",!1),void(1==this.get("paged")&&this.$list("choices").append("<li>"+acf.__("No matches found")+"</li>"));this.set("more",t.more);var e=this.walkChoices(t.results),n=$(e),a=this.val();a&&a.length&&a.map(function(t){n.find('.acf-rel-item[data-id="'+t+'"]').addClass("disabled")}),i.append(n);var r=!1,o=!1;i.find(".acf-rel-label").each(function(){var t=$(this),e=t.siblings("ul");if(r&&r.text()==t.text())return o.append(e.children()),void $(this).parent().remove();r=t,o=e})},t=$.ajax({url:acf.get("ajaxurl"),dataType:"json",type:"post",data:acf.prepareForAjax(e),context:this,success:r,complete:a});this.set("xhr",t)},walkChoices:function(t){var e=function(t){var i="";return $.isArray(t)?t.map(function(t){i+=e(t)}):$.isPlainObject(t)&&(void 0!==t.children?(i+='<li><span class="acf-rel-label">'+t.text+'</span><ul class="acf-bl">',i+=e(t.children),i+="</ul></li>"):i+='<li><span class="acf-rel-item" data-id="'+t.id+'">'+t.text+"</span></li>"),i};return e(t)}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"select",select2:!1,wait:"load",events:{removeField:"onRemove"},$input:function(){return this.$("select")},initialize:function(){var t=this.$input();if(this.inherit(t),this.get("ui")){var e=this.get("ajax_action");e||(e="acf/fields/"+this.get("type")+"/query"),this.select2=acf.newSelect2(t,{field:this,ajax:this.get("ajax"),multiple:this.get("multiple"),placeholder:this.get("placeholder"),allowNull:this.get("allow_null"),ajaxAction:e})}},onRemove:function(){this.select2&&this.select2.destroy()}});acf.registerFieldType(e)}(jQuery),function($,t){var e="tab",i=acf.Field.extend({type:"tab",wait:"",tabs:!1,tab:!1,findFields:function(){return this.$el.nextUntil(".acf-field-tab",".acf-field")},getFields:function(){return acf.getFields(this.findFields())},findTabs:function(){return this.$el.prevAll(".acf-tab-wrap:first")},findTab:function(){return this.$(".acf-tab-button")},initialize:function(){if(this.$el.is("td"))return this.events={},!1;var t=this.findTabs(),e=this.findTab(),i=acf.parseArgs(e.data(),{endpoint:!1,placement:"",before:this.$el});!t.length||i.endpoint?this.tabs=new a(i):this.tabs=t.data("acf"),this.tab=this.tabs.addTab(e,this)},isActive:function(){return this.tab.isActive()},showFields:function(){this.getFields().map(function(t){t.show(this.cid,"tab"),t.hiddenByTab=!1},this)},hideFields:function(){this.getFields().map(function(t){t.hide(this.cid,"tab"),t.hiddenByTab=this.tab},this)},show:function(t){var e=acf.Field.prototype.show.apply(this,arguments);return e&&(this.tab.show(),this.tabs.refresh()),e},hide:function(t){var e=acf.Field.prototype.hide.apply(this,arguments);return e&&(this.tab.hide(),this.isActive()&&this.tabs.reset()),e},enable:function(t){this.getFields().map(function(t){t.enable("tab")})},disable:function(t){this.getFields().map(function(t){t.disable("tab")})}});acf.registerFieldType(i);var n=0,a=acf.Model.extend({tabs:[],active:!1,actions:{refresh:"onRefresh"},data:{before:!1,placement:"top",index:0,initialized:!1},setup:function(t){$.extend(this.data,t),this.tabs=[],this.active=!1;var e=this.get("placement"),i=this.get("before"),a=i.parent();"left"==e&&a.hasClass("acf-fields")&&a.addClass("-sidebar"),i.is("tr")?this.$el=$('<tr class="acf-tab-wrap"><td colspan="2"><ul class="acf-hl acf-tab-group"></ul></td></tr>'):this.$el=$('<div class="acf-tab-wrap -'+e+'"><ul class="acf-hl acf-tab-group"></ul></div>'),i.before(this.$el),this.set("index",n,!0),n++},initializeTabs:function(){var t=this.getVisible().shift(),e=acf.getPreference("this.tabs")||[],i=this.get("index"),n=e[i];this.tabs[n]&&this.tabs[n].isVisible()&&(t=this.tabs[n]),t?this.selectTab(t):this.closeTabs(),this.set("initialized",!0)},getVisible:function(){return this.tabs.filter(function(t){return t.isVisible()})},getActive:function(){return this.active},setActive:function(t){return this.active=t},hasActive:function(){return!1!==this.active},isActive:function(t){var e=this.getActive();return e&&e.cid===t.cid},closeActive:function(){this.hasActive()&&this.closeTab(this.getActive())},openTab:function(t){this.closeActive(),t.open(),this.setActive(t)},closeTab:function(t){t.close(),this.setActive(!1)},closeTabs:function(){this.tabs.map(this.closeTab,this)},selectTab:function(t){this.tabs.map(function(e){t.cid!==e.cid&&this.closeTab(e)},this),this.openTab(t)},addTab:function(t,e){var i=$("<li></li>");i.append(t),this.$("ul").append(i);var n=new r({$el:i,field:e,group:this});return this.tabs.push(n),n},reset:function(){return this.closeActive(),this.refresh()},refresh:function(){if(this.hasActive())return!1;var t=this.getVisible().shift();return t&&this.openTab(t),t},onRefresh:function(){if("left"===this.get("placement")){var t=this.$el.parent(),e=this.$el.children("ul"),i=t.is("td")?"height":"min-height",n=e.position().top+e.outerHeight(!0)-1;t.css(i,n)}}}),r=acf.Model.extend({group:!1,field:!1,events:{"click a":"onClick"},index:function(){return this.$el.index()},isVisible:function(){return acf.isVisible(this.$el)},isActive:function(){return this.$el.hasClass("active")},open:function(){this.$el.addClass("active"),this.field.showFields()},close:function(){this.$el.removeClass("active"),this.field.hideFields()},onClick:function(t,e){t.preventDefault(),this.toggle()},toggle:function(){this.isActive()||this.group.openTab(this)}}),o=new acf.Model({priority:50,actions:{prepare:"render",append:"render",unload:"onUnload",invalid_field:"onInvalidField"},findTabs:function(){return $(".acf-tab-wrap")},getTabs:function(){return acf.getInstances(this.findTabs())},render:function(t){this.getTabs().map(function(t){t.get("initialized")||t.initializeTabs()})},onInvalidField:function(t){this.busy||t.hiddenByTab&&(t.hiddenByTab.toggle(),this.busy=!0,this.setTimeout(function(){this.busy=!1},100))},onUnload:function(){var t=[];this.getTabs().map(function(e){var i=e.hasActive()?e.getActive().index():0;t.push(i)}),t.length&&acf.setPreference("this.tabs",t)}})}(jQuery),function($,t){var e=acf.models.SelectField.extend({type:"post_object"});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.models.SelectField.extend({type:"page_link"});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.models.SelectField.extend({type:"user"});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"taxonomy",data:{ftype:"select"},select2:!1,wait:"load",events:{'click a[data-name="add"]':"onClickAdd",'click input[type="radio"]':"onClickRadio"},$control:function(){return this.$(".acf-taxonomy-field")},$input:function(){return this.getRelatedPrototype().$input.apply(this,arguments)},getRelatedType:function(){var t=this.get("ftype");return"multi_select"==t&&(t="select"),t},getRelatedPrototype:function(){return acf.getFieldType(this.getRelatedType()).prototype},getValue:function(){return this.getRelatedPrototype().getValue.apply(this,arguments)},setValue:function(){return this.getRelatedPrototype().setValue.apply(this,arguments)},initialize:function(){this.getRelatedPrototype().initialize.apply(this,arguments)},onRemove:function(){this.select2&&this.select2.destroy()},onClickAdd:function(t,e){var i=this,n=!1,a=!1,r=!1,o=!1,s=!1,c=!1,l=!1,d=function(t){n.loading(!1),n.content(t),a=n.$("form"),r=n.$('input[name="term_name"]'),o=n.$('select[name="term_parent"]'),s=n.$(".acf-submit-button"),r.focus(),n.on("submit","form",u)},u=function(t,e){if(t.preventDefault(),""===r.val())return r.focus(),!1;acf.startButtonLoading(s);var n={action:"acf/fields/taxonomy/add_term",field_key:i.get("key"),term_name:r.val(),term_parent:o.length?o.val():0};$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(n),type:"post",dataType:"json",success:f})},f=function(t){acf.stopButtonLoading(s),l&&l.remove(),acf.isAjaxSuccess(t)?(r.val(""),h(t.data),l=acf.newNotice({type:"success",text:acf.getAjaxMessage(t),target:a,timeout:2e3,dismiss:!1})):l=acf.newNotice({type:"error",text:acf.getAjaxError(t),target:a,timeout:2e3,dismiss:!1}),r.focus()},h=function(t){var e=$('<option value="'+t.term_id+'">'+t.term_label+"</option>");t.term_parent?o.children('option[value="'+t.term_parent+'"]').after(e):o.append(e),acf.getFields({type:"taxonomy"}).map(function(e){e.get("taxonomy")==i.get("taxonomy")&&e.appendTerm(t)}),i.selectTerm(t.term_id)};!function(){n=acf.newPopup({title:e.attr("title"),loading:!0,width:"300px"});var t={action:"acf/fields/taxonomy/add_term",field_key:i.get("key")};$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(t),type:"post",dataType:"html",success:d})}()},appendTerm:function(t){"select"==this.getRelatedType()?this.appendTermSelect(t):this.appendTermCheckbox(t)},appendTermSelect:function(t){this.select2.addOption({id:t.term_id,text:t.term_label})},appendTermCheckbox:function(t){var e=this.$("[name]:first").attr("name"),i=this.$("ul:first");"checkbox"==this.getRelatedType()&&(e+="[]");var n=$(['<li data-id="'+t.term_id+'">',"<label>",'<input type="'+this.get("ftype")+'" value="'+t.term_id+'" name="'+e+'" /> ',"<span>"+t.term_name+"</span>","</label>","</li>"].join(""));if(t.term_parent){var a=i.find('li[data-id="'+t.term_parent+'"]');i=a.children("ul"),i.exists()||(i=$('<ul class="children acf-bl"></ul>'),a.append(i))}i.append(n)},selectTerm:function(t){if("select"==this.getRelatedType())this.select2.selectOption(t);else{
3
  this.$('input[value="'+t+'"]').prop("checked",!0).trigger("change")}},onClickRadio:function(t,e){var i=e.parent("label"),n=i.hasClass("selected");this.$(".selected").removeClass("selected"),i.addClass("selected"),this.get("allow_null")&&n&&(i.removeClass("selected"),e.prop("checked",!1).trigger("change"))}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.models.DatePickerField.extend({type:"time_picker",$control:function(){return this.$(".acf-time-picker")},initialize:function(){var t=this.$input(),e=this.$inputText(),i={timeFormat:this.get("time_format"),altField:t,altFieldTimeOnly:!1,altTimeFormat:"HH:mm:ss",showButtonPanel:!0,controlType:"select",oneLine:!0,closeText:acf.get("dateTimePickerL10n").selectText,timeOnly:!0};i.onClose=function(t,e,i){var n=e.dpDiv.find(".ui-datepicker-close");!t&&n.is(":hover")&&i._updateDateTime()},i=acf.applyFilters("time_picker_args",i,this),acf.newTimePicker(e,i),acf.doAction("time_picker_init",e,i,this)}});acf.registerFieldType(e),acf.newTimePicker=function(t,e){if(void 0===$.timepicker)return!1;e=e||{},t.timepicker(e),$("body > #ui-datepicker-div").exists()&&$("body > #ui-datepicker-div").wrap('<div class="acf-ui-datepicker" />')}}(jQuery),function($,t){var e=acf.Field.extend({type:"true_false",events:{"change .acf-switch-input":"onChange","focus .acf-switch-input":"onFocus","blur .acf-switch-input":"onBlur","keypress .acf-switch-input":"onKeypress"},$input:function(){return this.$('input[type="checkbox"]')},$switch:function(){return this.$(".acf-switch")},getValue:function(){return this.$input().prop("checked")?1:0},initialize:function(){this.render()},render:function(){var t=this.$switch();if(t.length){var e=t.children(".acf-switch-on"),i=t.children(".acf-switch-off"),n=Math.max(e.width(),i.width());n&&(e.css("min-width",n),i.css("min-width",n))}},switchOn:function(){this.$input().prop("checked",!0),this.$switch().addClass("-on")},switchOff:function(){this.$input().prop("checked",!1),this.$switch().removeClass("-on")},onChange:function(t,e){e.prop("checked")?this.switchOn():this.switchOff()},onFocus:function(t,e){this.$switch().addClass("-focus")},onBlur:function(t,e){this.$switch().removeClass("-focus")},onKeypress:function(t,e){return 37===t.keyCode?this.switchOff():39===t.keyCode?this.switchOn():void 0}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"url",events:{'keyup input[type="url"]':"onkeyup"},$control:function(){return this.$(".acf-input-wrap")},$input:function(){return this.$('input[type="url"]')},initialize:function(){this.render()},isValid:function(){var t=this.val();return!!t&&(-1!==t.indexOf("://")||0===t.indexOf("//"))},render:function(){this.isValid()?this.$control().addClass("-valid"):this.$control().removeClass("-valid")},onkeyup:function(t,e){this.render()}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"wysiwyg",wait:"load",events:{"mousedown .acf-editor-wrap.delay":"onMousedown",sortstartField:"disableEditor",sortstopField:"enableEditor",removeField:"disableEditor"},$control:function(){return this.$(".acf-editor-wrap")},$input:function(){return this.$("textarea")},getMode:function(){return this.$control().hasClass("tmce-active")?"visual":"text"},initialize:function(){this.$control().hasClass("delay")||this.initializeEditor()},initializeEditor:function(){var t=this.$control(),e=this.$input(),i={tinymce:!0,quicktags:!0,toolbar:this.get("toolbar"),mode:this.getMode(),field:this},n=e.attr("id"),a=acf.uniqueId("acf-editor-");acf.rename({target:t,search:n,replace:a,destructive:!0}),this.set("id",a,!0),acf.tinymce.initialize(a,i)},onMousedown:function(t){t.preventDefault();var e=this.$control();e.removeClass("delay"),e.find(".acf-editor-toolbar").remove(),this.initializeEditor()},enableEditor:function(){"visual"==this.getMode()&&acf.tinymce.enable(this.get("id"))},disableEditor:function(){acf.tinymce.destroy(this.get("id"))}});acf.registerFieldType(e)}(jQuery),function($,t){var e=[];acf.Condition=acf.Model.extend({type:"",operator:"==",label:"",choiceType:"input",fieldTypes:[],data:{conditions:!1,field:!1,rule:{}},events:{change:"change",keyup:"change",enableField:"change",disableField:"change"},setup:function(t){$.extend(this.data,t)},getEventTarget:function(t,e){return t||this.get("field").$el},change:function(t,e){this.get("conditions").change(t)},match:function(t,e){return!1},calculate:function(){return this.match(this.get("rule"),this.get("field"))},choices:function(t){return'<intput type="text" />'}}),acf.newCondition=function(t,e){var i=e.get("field"),n=i.getField(t.field);if(!i||!n)return!1;var a={rule:t,target:i,conditions:e,field:n},r=n.get("type"),o=t.operator;return new(acf.getConditionTypes({fieldType:r,operator:o})[0]||acf.Condition)(a)};var i=function(t){return acf.strPascalCase(t||"")+"Condition"};acf.registerConditionType=function(t){var n=t.prototype,a=n.type,r=i(a);acf.models[r]=t,e.push(a)},acf.getConditionType=function(t){var e=i(t);return acf.models[e]||!1},acf.registerConditionForFieldType=function(t,e){var i=acf.getConditionType(t);i&&i.prototype.fieldTypes.push(e)},acf.getConditionTypes=function(t){t=acf.parseArgs(t,{fieldType:"",operator:""});var i=[];return e.map(function(e){var n=acf.getConditionType(e),a=n.prototype.fieldTypes,r=n.prototype.operator;t.fieldType&&-1===a.indexOf(t.fieldType)||t.operator&&r!==t.operator||i.push(n)}),i}}(jQuery),function($,t){var e="conditional_logic",i=new acf.Model({id:"conditionsManager",priority:20,actions:{new_field:"onNewField"},onNewField:function(t){t.has("conditions")&&t.getConditions().render()}}),n=function(t,e){var i=acf.getFields({key:e,sibling:t.$el,suppressFilters:!0});return i.length||(i=acf.getFields({key:e,parent:t.$el.parent(),suppressFilters:!0})),!!i.length&&i[0]};acf.Field.prototype.getField=function(t){var e=n(this,t);if(e)return e;for(var i=this.parents(),a=0;a<i.length;a++)if(e=n(i[a],t))return e;return!1},acf.Field.prototype.getConditions=function(){return this.conditions||(this.conditions=new r(this)),this.conditions};var a=!1,r=acf.Model.extend({id:"Conditions",data:{field:!1,timeStamp:!1,groups:[]},setup:function(t){this.data.field=t;var e=t.get("conditions");e instanceof Array?e[0]instanceof Array?e.map(function(t,e){this.addRules(t,e)},this):this.addRules(e):this.addRule(e)},change:function(t){if(this.get("timeStamp")===t.timeStamp)return!1;this.set("timeStamp",t.timeStamp,!0);var e=this.render()},render:function(){return this.calculate()?this.show():this.hide()},show:function(){return this.get("field").showEnable(this.cid,e)},hide:function(){return this.get("field").hideDisable(this.cid,e)},calculate:function(){var t=!1;return this.getGroups().map(function(e){if(!t){e.filter(function(t){return t.calculate()}).length==e.length&&(t=!0)}}),t},hasGroups:function(){return null!=this.data.groups},getGroups:function(){return this.data.groups},addGroup:function(){var t=[];return this.data.groups.push(t),t},hasGroup:function(t){return null!=this.data.groups[t]},getGroup:function(t){return this.data.groups[t]},removeGroup:function(t){return this.data.groups[t].delete,this},addRules:function(t,e){t.map(function(t){this.addRule(t,e)},this)},addRule:function(t,e){e=e||0;var i;i=this.hasGroup(e)?this.getGroup(e):this.addGroup();var n=acf.newCondition(t,this);if(!n)return!1;i.push(n)},hasRule:function(){},getRule:function(t,e){return t=t||0,e=e||0,this.data.groups[e][t]},removeRule:function(){}})}(jQuery),function($,t){var e=acf.__,i=function(t){return t?""+t:""},n=function(t,e){return i(t).toLowerCase()===i(e).toLowerCase()},a=function(t,e){return parseFloat(t)===parseFloat(e)},r=function(t,e){return parseFloat(t)>parseFloat(e)},o=function(t,e){return parseFloat(t)<parseFloat(e)},s=function(t,e){return e=e.map(function(t){return i(t)}),e.indexOf(t)>-1},c=function(t,e){return i(t).indexOf(i(e))>-1},l=function(t,e){var n=new RegExp(i(e),"gi");return i(t).match(n)},d=acf.Condition.extend({type:"hasValue",operator:"!=empty",label:e("Has any value"),fieldTypes:["text","textarea","number","range","email","url","password","image","file","wysiwyg","oembed","select","checkbox","radio","button_group","link","post_object","page_link","relationship","taxonomy","user","google_map","date_picker","date_time_picker","time_picker","color_picker"],match:function(t,e){return!!e.val()},choices:function(t){return'<input type="text" disabled="" />'}});acf.registerConditionType(d);var u=d.extend({type:"hasNoValue",operator:"==empty",label:e("Has no value"),match:function(t,e){return!d.prototype.match.apply(this,arguments)}});acf.registerConditionType(u);var f=acf.Condition.extend({type:"equalTo",operator:"==",label:e("Value is equal to"),fieldTypes:["text","textarea","number","range","email","url","password"],match:function(t,e){return $.isNumeric(t.value)?a(t.value,e.val()):n(t.value,e.val())},choices:function(t){return'<input type="text" />'}});acf.registerConditionType(f);var h=f.extend({type:"notEqualTo",operator:"!=",label:e("Value is not equal to"),match:function(t,e){return!f.prototype.match.apply(this,arguments)}});acf.registerConditionType(h);var p=acf.Condition.extend({type:"patternMatch",operator:"==pattern",label:e("Value matches pattern"),fieldTypes:["text","textarea","email","url","password","wysiwyg"],match:function(t,e){return l(e.val(),t.value)},choices:function(t){return'<input type="text" placeholder="[a-z0-9]" />'}});acf.registerConditionType(p);var g=acf.Condition.extend({type:"contains",operator:"==contains",label:e("Value contains"),fieldTypes:["text","textarea","number","email","url","password","wysiwyg","oembed","select"],match:function(t,e){return c(e.val(),t.value)},choices:function(t){return'<input type="text" />'}});acf.registerConditionType(g);var m=f.extend({type:"trueFalseEqualTo",choiceType:"select",fieldTypes:["true_false"],choices:function(t){return[{id:1,text:e("Checked")}]}});acf.registerConditionType(m);var v=h.extend({type:"trueFalseNotEqualTo",choiceType:"select",fieldTypes:["true_false"],choices:function(t){return[{id:1,text:e("Checked")}]}});acf.registerConditionType(v);var y=acf.Condition.extend({type:"selectEqualTo",operator:"==",label:e("Value is equal to"),fieldTypes:["select","checkbox","radio","button_group"],match:function(t,e){var i=e.val();return i instanceof Array?s(t.value,i):n(t.value,i)},choices:function(t){var i=[],n=t.$setting("choices textarea").val().split("\n");return t.$input("allow_null").prop("checked")&&i.push({id:"",text:e("Null")}),n.map(function(t){t=t.split(":"),t[1]=t[1]||t[0],i.push({id:$.trim(t[0]),text:$.trim(t[1])})}),i}});acf.registerConditionType(y);var b=y.extend({type:"selectNotEqualTo",operator:"!=",label:e("Value is not equal to"),match:function(t,e){return!y.prototype.match.apply(this,arguments)}});acf.registerConditionType(b);var x=acf.Condition.extend({type:"greaterThan",operator:">",label:e("Value is greater than"),fieldTypes:["number","range"],match:function(t,e){var i=e.val();return i instanceof Array&&(i=i.length),r(i,t.value)},choices:function(t){return'<input type="number" />'}});acf.registerConditionType(x);var _=x.extend({type:"lessThan",operator:"<",label:e("Value is less than"),match:function(t,e){var i=e.val();return i instanceof Array&&(i=i.length),o(i,t.value)},choices:function(t){return'<input type="number" />'}});acf.registerConditionType(_);var w=x.extend({type:"selectionGreaterThan",label:e("Selection is greater than"),fieldTypes:["checkbox","select","post_object","page_link","relationship","taxonomy","user"]});acf.registerConditionType(w);var k=_.extend({type:"selectionLessThan",label:e("Selection is less than"),fieldTypes:["checkbox","select","post_object","page_link","relationship","taxonomy","user"]});acf.registerConditionType(k)}(jQuery),function($,t){acf.newMediaPopup=function(t){var e=null,t=acf.parseArgs(t,{mode:"select",title:"",button:"",type:"",field:!1,allowedTypes:"",library:"all",multiple:!1,attachment:0,autoOpen:!0,open:function(){},select:function(){},close:function(){}});return e="edit"==t.mode?new acf.models.EditMediaPopup(t):new acf.models.SelectMediaPopup(t),t.autoOpen&&setTimeout(function(){e.open()},1),acf.doAction("new_media_popup",e),e};var e=function(){var t=acf.get("post_id");return $.isNumeric(t)?t:0};acf.getMimeTypes=function(){return this.get("mimeTypes")},acf.getMimeType=function(t){var e=acf.getMimeTypes();if(void 0!==e[t])return e[t];for(var i in e)if(-1!==i.indexOf(t))return e[i];return!1};var i=acf.Model.extend({id:"MediaPopup",data:{},defaults:{},frame:!1,setup:function(t){$.extend(this.data,t)},initialize:function(){var t=this.getFrameOptions();this.addFrameStates(t);var e=wp.media(t);e.acf=this,this.addFrameEvents(e,t),this.frame=e},open:function(){this.frame.open()},close:function(){this.frame.close()},remove:function(){this.frame.detach(),this.frame.remove()},getFrameOptions:function(){var t={title:this.get("title"),multiple:this.get("multiple"),library:{},states:[]};return this.get("type")&&(t.library.type=this.get("type")),"uploadedTo"===this.get("library")&&(t.library.uploadedTo=e()),this.get("attachment")&&(t.library.post__in=[this.get("attachment")]),this.get("button")&&(t.button={text:this.get("button")}),t},addFrameStates:function(t){var e=wp.media.query(t.library);this.get("field")&&acf.isset(e,"mirroring","args")&&(e.mirroring.args._acfuploader=this.get("field")),t.states.push(new wp.media.controller.Library({library:e,multiple:this.get("multiple"),title:this.get("title"),priority:20,filterable:"all",editable:!0,allowLocalEdits:!0})),acf.isset(wp,"media","controller","EditImage")&&t.states.push(new wp.media.controller.EditImage)},addFrameEvents:function(t,e){t.on("open",function(){this.$el.closest(".media-modal").addClass("acf-media-modal -"+this.acf.get("mode"))},t),t.on("content:render:edit-image",function(){var t=this.state().get("image"),e=new wp.media.view.EditImage({model:t,controller:this}).render();this.content.set(e),e.loadEditor()},t),t.on("select",function(){var e=t.state().get("selection");e&&e.each(function(e,i){t.acf.get("select").apply(t.acf,[e,i])})}),t.on("close",function(){setTimeout(function(){t.acf.get("close").apply(t.acf),t.acf.remove()},1)})}});acf.models.SelectMediaPopup=i.extend({id:"SelectMediaPopup",setup:function(t){t.button||(t.button=acf._x("Select","verb")),i.prototype.setup.apply(this,arguments)},addFrameEvents:function(t,e){acf.isset(_wpPluploadSettings,"defaults","multipart_params")&&(_wpPluploadSettings.defaults.multipart_params._acfuploader=this.get("field"),t.on("open",function(){delete _wpPluploadSettings.defaults.multipart_params._acfuploader})),t.on("content:activate:browse",function(){var e=!1;try{e=t.content.get().toolbar}catch(t){return void console.log(t)}t.acf.customizeFilters.apply(t.acf,[e])}),i.prototype.addFrameEvents.apply(this,arguments)},customizeFilters:function(t){var e=t.get("filters");if("image"==this.get("type")&&(e.filters.all.text=acf.__("All images"),delete e.filters.audio,delete e.filters.video,delete e.filters.image,$.each(e.filters,function(t,e){e.props.type=e.props.type||"image"})),this.get("allowedTypes")){this.get("allowedTypes").split(" ").join("").split(".").join("").split(",").map(function(t){var i=acf.getMimeType(t);if(i){var n={text:i,props:{status:null,type:i,uploadedTo:null,orderby:"date",order:"DESC"},priority:20};e.filters[i]=n}})}if("uploadedTo"===this.get("library")){var i=this.frame.options.library.uploadedTo;delete e.filters.unattached,delete e.filters.uploaded,$.each(e.filters,function(t,e){e.text+=" ("+acf.__("Uploaded to this post")+")",e.props.uploadedTo=i})}var n=this.get("field");$.each(e.filters,function(t,e){e.props._acfuploader=n}),t.get("search").model.attributes._acfuploader=n,e.renderFilters&&e.renderFilters()}}),acf.models.EditMediaPopup=i.extend({id:"SelectMediaPopup",setup:function(t){t.button||(t.button=acf._x("Update","verb")),i.prototype.setup.apply(this,arguments)},addFrameEvents:function(t,e){t.on("open",function(){this.$el.closest(".media-modal").addClass("acf-expanded"),"browse"!=this.content.mode()&&this.content.mode("browse");var e=this.state(),i=e.get("selection"),n=wp.media.attachment(t.acf.get("attachment"));i.add(n)},t),i.prototype.addFrameEvents.apply(this,arguments)}});var n=new acf.Model({id:"customizePrototypes",wait:"ready",initialize:function(){if(acf.isset(window,"wp","media","view")){var t=e();t&&acf.isset(wp,"media","view","settings","post")&&(wp.media.view.settings.post.id=t),this.customizeAttachmentsRouter(),this.customizeAttachmentFilters(),this.customizeAttachmentCompat(),this.customizeAttachmentLibrary()}},customizeAttachmentsRouter:function(){if(acf.isset(wp,"media","view","Router")){var t=wp.media.view.Router;wp.media.view.Router=t.extend({addExpand:function(){var t=$(['<a href="#" class="acf-expand-details">','<span class="is-closed"><span class="acf-icon -left small grey"></span>'+acf.__("Expand Details")+"</span>",'<span class="is-open"><span class="acf-icon -right small grey"></span>'+acf.__("Collapse Details")+"</span>","</a>"].join(""));t.on("click",function(t){t.preventDefault();var e=$(this).closest(".media-modal");e.hasClass("acf-expanded")?e.removeClass("acf-expanded"):e.addClass("acf-expanded")}),this.$el.append(t)},initialize:function(){return t.prototype.initialize.apply(this,arguments),this.addExpand(),this}})}},customizeAttachmentFilters:function(){if(acf.isset(wp,"media","view","AttachmentFilters","All")){wp.media.view.AttachmentFilters.All.prototype.renderFilters=function(){this.$el.html(_.chain(this.filters).map(function(t,e){return{el:$("<option></option>").val(e).html(t.text)[0],priority:t.priority||50}},this).sortBy("priority").pluck("el").value())}}},customizeAttachmentCompat:function(){if(acf.isset(wp,"media","view","AttachmentCompat")){var t=wp.media.view.AttachmentCompat,e=!1;wp.media.view.AttachmentCompat=t.extend({render:function(){return this.rendered?this:(t.prototype.render.apply(this,arguments),this.$("#acf-form-data").length?(clearTimeout(e),e=setTimeout($.proxy(function(){this.rendered=!0,acf.doAction("append",this.$el)},this),50),this):this)}})}},customizeAttachmentLibrary:function(){if(acf.isset(wp,"media","view","Attachment","Library")){var t=wp.media.view.Attachment.Library;wp.media.view.Attachment.Library=t.extend({render:function(){var e=acf.isget(this,"controller","acf"),i=acf.isget(this,"model","attributes");if(e&&i){i.acf_errors&&this.$el.addClass("acf-disabled");var n=e.get("selected");n&&n.indexOf(i.id)>-1&&this.$el.addClass("acf-selected")}return t.prototype.render.apply(this,arguments)},toggleSelection:function(e){var i=this.collection,n=this.options.selection,a=this.model,r=n.single(),o=this.controller,s=acf.isget(this,"model","attributes","acf_errors"),c=o.$el.find(".media-frame-content .media-sidebar");if(c.children(".acf-selection-error").remove(),c.children().removeClass("acf-hidden"),o&&s){var l=acf.isget(this,"model","attributes","filename");return c.children().addClass("acf-hidden"),c.prepend(['<div class="acf-selection-error">','<span class="selection-error-label">'+acf.__("Restricted")+"</span>",'<span class="selection-error-filename">'+l+"</span>",'<span class="selection-error-message">'+s+"</span>","</div>"].join("")),n.reset(),void n.single(a)}return t.prototype.toggleSelection.apply(this,arguments)}})}}})}(jQuery),function($,t){acf.screen=new acf.Model({active:!0,xhr:!1,timeout:!1,wait:"load",events:{"change #page_template":"onChange","change #parent_id":"onChange","change #post-formats-select":"onChange","change .categorychecklist":"onChange","change .tagsdiv":"onChange",'change .acf-taxonomy-field[data-save="1"]':"onChange","change #product-type":"onChange"},initialize:function(){},isPost:function(){return"post"===acf.get("screen")},isUser:function(){return"user"===acf.get("screen")},isTaxonomy:function(){return"taxonomy"===acf.get("screen")},isAttachment:function(){return"attachment"===acf.get("screen")},isNavMenu:function(){return"nav_menu"===acf.get("screen")},isWidget:function(){return"widget"===acf.get("screen")},isComment:function(){return"comment"===acf.get("screen")},getPageTemplate:function(){var t=$("#page_template");return t.length?t.val():null},getPageParent:function(t,e){var e=$("#parent_id");return e.length?e.val():null},getPageType:function(t,e){return this.getPageParent()?"child":"parent"},getPostFormat:function(t,e){var e=$("#post-formats-select input:checked");if(e.length){var i=e.val();return"0"==i?"standard":i}return null},getPostTerms:function(){var t={},e=acf.serialize($(".categorydiv, .tagsdiv"));e.tax_input&&(t=e.tax_input),e.post_category&&(t.category=e.post_category);for(var i in t)acf.isArray(t[i])||(t[i]=t[i].split(", "));acf.getFields({type:"taxonomy"}).map(function(e){if(e.get("save")){var i=e.val(),n=e.get("taxonomy");i&&(t[n]=t[n]||[],i=acf.isArray(i)?i:[i],t[n]=t[n].concat(i))}}),null!==(productType=this.getProductType())&&(t.product_type=[productType]);for(var i in t)t[i]=acf.uniqueArray(t[i]);return t},getProductType:function(){var t=$("#product-type");return t.length?t.val():null},check:function(){if("post"===acf.get("screen")){this.xhr&&this.xhr.abort();var t=acf.parseArgs(this.data,{action:"acf/ajax/check_screen",screen:acf.get("screen"),exclude:[]});this.isPost()&&(t.post_id=acf.get("post_id")),null!==(pageTemplate=this.getPageTemplate())&&(t.page_template=pageTemplate),null!==(pageParent=this.getPageParent())&&(t.page_parent=pageParent),null!==(pageType=this.getPageType())&&(t.page_type=pageType),null!==(postFormat=this.getPostFormat())&&(t.post_format=postFormat),null!==(postTerms=this.getPostTerms())&&(t.post_terms=postTerms),$(".acf-postbox").not(".acf-hidden").each(function(){t.exclude.push($(this).attr("id").substr(4))});var e=function(t){acf.isAjaxSuccess(t)&&($(".acf-postbox").addClass("acf-hidden"),$(".acf-postbox-toggle").addClass("acf-hidden"),$("#acf-style").html(""),t.data.map(function(t,e){var i=$("#acf-"+t.key),n=$("#acf-"+t.key+"-hide"),a=n.parent();i.removeClass("acf-hidden hide-if-js").show(),a.removeClass("acf-hidden hide-if-js").show(),n.prop("checked",!0);var r=i.find(".acf-replace-with-fields");r.exists()&&(r.replaceWith(t.html),acf.doAction("append",i)),0===e&&$("#acf-style").html(t.style),acf.enable(i,"postbox")}))},i=function(t){$(".acf-postbox.acf-hidden").each(function(){acf.disable($(this),"postbox")})};this.xhr=$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(t),type:"post",dataType:"json",context:this,success:e,complete:i})}},onChange:function(t,e){this.setTimeout(this.check,1)}})}(jQuery),function($,t){function e(){return acf.isset(window,"jQuery","fn","select2","amd")?4:!!acf.isset(window,"Select2")&&3}acf.newSelect2=function(t,i){if(i=acf.parseArgs(i,{allowNull:!1,placeholder:"",multiple:!1,field:!1,ajax:!1,ajaxAction:"",ajaxData:function(t){return t},ajaxResults:function(t){return t}}),4==e())var r=new n(t,i);else var r=new a(t,i);return acf.doAction("new_select2",r),r};var i=acf.Model.extend({setup:function(t,e){$.extend(this.data,e),this.$el=t},initialize:function(){},selectOption:function(t){var e=this.getOption(t);e.prop("selected")||e.prop("selected",!0).trigger("change")},unselectOption:function(t){var e=this.getOption(t);e.prop("selected")&&e.prop("selected",!1).trigger("change")},getOption:function(t){return this.$('option[value="'+t+'"]')},addOption:function(t){t=acf.parseArgs(t,{id:"",text:"",selected:!1});var e=this.getOption(t.id);return e.length||(e=$("<option></option>"),e.html(t.text),e.attr("value",t.id),e.prop("selected",t.selected),this.$el.append(e)),e},getValue:function(){var t=[],e=this.$el.find("option:selected");return e.exists()?(e=e.sort(function(t,e){return+t.getAttribute("data-i")-+e.getAttribute("data-i")}),e.each(function(){var e=$(this);t.push({$el:e,id:e.attr("value"),text:e.text()})}),t):t},mergeOptions:function(){},getChoices:function(){var t=function(e){var i=[];return e.children().each(function(){var e=$(this);e.is("optgroup")?i.push({text:e.attr("label"),children:t(e)}):i.push({id:e.attr("value"),text:e.text()})}),i};return t(this.$el)},decodeChoices:function(t){var e=function(t){return t.map(function(t){return t.text=acf.decode(t.text),t.children&&(t.children=e(t.children)),t}),t};return e(t)},getAjaxData:function(t){var e={action:this.get("ajaxAction"),s:t.term||"",paged:t.page||1},i=this.get("field");i&&(e.field_key=i.get("key"));var n=this.get("ajaxData");return n&&(e=n.apply(this,[e,t])),e=acf.applyFilters("select2_ajax_data",e,this.data,this.$el,i||!1,this),acf.prepareForAjax(e)},getAjaxResults:function(t,e){t=acf.parseArgs(t,{results:!1,more:!1}),t.results&&(t.results=this.decodeChoices(t.results));var i=this.get("ajaxResults");return i&&(t=i.apply(this,[t,e])),t=acf.applyFilters("select2_ajax_results",t,e,this)},processAjaxResults:function(t,e){var t=this.getAjaxResults(t,e);return t.more&&(t.pagination={more:!0}),setTimeout($.proxy(this.mergeOptions,this),1),t},destroy:function(){this.$el.data("select2")&&this.$el.select2("destroy"),this.$el.siblings(".select2-container").remove()}}),n=i.extend({initialize:function(){var t=this.$el,e={width:"100%",allowClear:this.get("allowNull"),placeholder:this.get("placeholder"),multiple:this.get("multiple"),data:[],escapeMarkup:function(t){return t}};e.multiple&&this.getValue().map(function(e){e.$el.detach().appendTo(t)}),t.removeData("ajax"),t.removeAttr("data-ajax"),this.get("ajax")&&(e.ajax={url:acf.get("ajaxurl"),delay:250,dataType:"json",type:"post",cache:!1,data:$.proxy(this.getAjaxData,this),processResults:$.proxy(this.processAjaxResults,this)});var i=this.get("field");e=acf.applyFilters("select2_args",e,t,this.data,i||!1,this),t.select2(e);var n=t.next(".select2-container");if(e.multiple){var a=n.find("ul");a.sortable({stop:function(e){a.find(".select2-selection__choice").each(function(){$($(this).data("data").element).detach().appendTo(t)}),t.trigger("change")}}),t.on("select2:select",this.proxy(function(t){this.getOption(t.params.data.id).detach().appendTo(this.$el)}))}n.addClass("-acf"),acf.doAction("select2_init",t,e,this.data,i||!1,this)},mergeOptions:function(){var t=!1,e=!1;$('.select2-results__option[role="group"]').each(function(){var i=$(this).children("ul"),n=$(this).children("strong");if(e&&e.text()===n.text())return t.append(i.children()),void $(this).remove();t=i,e=n})}}),a=i.extend({initialize:function(){var t=this.$el,e=this.getValue(),i=this.get("multiple"),n={width:"100%",allowClear:this.get("allowNull"),placeholder:this.get("placeholder"),separator:"||",multiple:this.get("multiple"),data:this.getChoices(),escapeMarkup:function(t){return t},dropdownCss:{"z-index":"999999999"},initSelection:function(t,n){n(i?e:e.shift())}},a=t.siblings("input");a.length||(a=$('<input type="hidden" />'),t.before(a)),inputValue=e.map(function(t){return t.id}).join("||"),a.val(inputValue),n.multiple&&e.map(function(e){e.$el.detach().appendTo(t)}),n.allowClear&&(n.data=n.data.filter(function(t){return""!==t.id})),t.removeData("ajax"),t.removeAttr("data-ajax"),this.get("ajax")&&(n.ajax={url:acf.get("ajaxurl"),quietMillis:250,dataType:"json",type:"post",cache:!1,data:$.proxy(this.getAjaxData,this),results:$.proxy(this.processAjaxResults,this)});var r=this.get("field");n=acf.applyFilters("select2_args",n,t,this.data,r||!1,this),a.select2(n);var o=a.select2("container"),s=$.proxy(this.getOption,this);if(n.multiple){var c=o.find("ul");c.sortable({stop:function(){c.find(".select2-search-choice").each(function(){var e=$(this).data("select2Data");s(e.id).detach().appendTo(t)}),t.trigger("change")}})}a.on("select2-selecting",function(e){var i=e.choice,n=s(i.id);n.length||(n=$('<option value="'+i.id+'">'+i.text+"</option>")),n.detach().appendTo(t)}),o.addClass("-acf"),acf.doAction("select2_init",t,n,this.data,r||!1,this),a.on("change",function(){var e=a.val();e.indexOf("||")&&(e=e.split("||")),t.val(e).trigger("change")}),t.hide()},mergeOptions:function(){var t=!1,e=!1;$("#select2-drop .select2-result-with-children").each(function(){var i=$(this).children("ul"),n=$(this).children(".select2-result-label");if(e&&e.text()===n.text())return e.append(i.children()),void $(this).remove();t=i,e=n})},getAjaxData:function(t,e){var n={term:t,page:e};return i.prototype.getAjaxData.apply(this,[n])}}),r=new acf.Model({priority:5,wait:"prepare",initialize:function(){var t=acf.get("locale"),i=acf.get("rtl"),n=acf.get("select2L10n"),a=e();return!!n&&(0!==t.indexOf("en")&&void(4==a?this.addTranslations4():3==a&&this.addTranslations3()))},addTranslations4:function(){var t=acf.get("select2L10n"),e=acf.get("locale");e=e.replace("_","-");var i={errorLoading:function(){return t.load_fail},inputTooLong:function(e){var i=e.input.length-e.maximum;return i>1?t.input_too_long_n.replace("%d",i):t.input_too_long_1},inputTooShort:function(e){var i=e.minimum-e.input.length;return i>1?t.input_too_short_n.replace("%d",i):t.input_too_short_1},loadingMore:function(){return t.load_more},maximumSelected:function(e){var i=e.maximum;return i>1?t.selection_too_long_n.replace("%d",i):t.selection_too_long_1},noResults:function(){return t.matches_0},searching:function(){return t.searching}};jQuery.fn.select2.amd.define("select2/i18n/"+e,[],function(){return i})},addTranslations3:function(){var t=acf.get("select2L10n"),e=acf.get("locale");e=e.replace("_","-");var i={formatMatches:function(e){return e>1?t.matches_n.replace("%d",e):t.matches_1},formatNoMatches:function(){return t.matches_0},formatAjaxError:function(){return t.load_fail},formatInputTooShort:function(e,i){var n=i-e.length;return n>1?t.input_too_short_n.replace("%d",n):t.input_too_short_1},formatInputTooLong:function(e,i){var n=e.length-i;return n>1?t.input_too_long_n.replace("%d",n):t.input_too_long_1},formatSelectionTooBig:function(e){return e>1?t.selection_too_long_n.replace("%d",e):t.selection_too_long_1},formatLoadMore:function(){return t.load_more},formatSearching:function(){return t.searching}};$.fn.select2.locales=$.fn.select2.locales||{},$.fn.select2.locales[e]=i,$.extend($.fn.select2.defaults,i)}})}(jQuery),function($,t){acf.tinymce={defaults:function(){return"undefined"!=typeof tinyMCEPreInit&&{tinymce:tinyMCEPreInit.mceInit.acf_content,quicktags:tinyMCEPreInit.qtInit.acf_content}},initialize:function(t,e){e=acf.parseArgs(e,{tinymce:!0,quicktags:!0,toolbar:"full",mode:"visual",field:!1}),e.tinymce&&this.initializeTinymce(t,e),e.quicktags&&this.initializeQuicktags(t,e)},initializeTinymce:function(t,e){var i=$("#"+t),n=this.defaults(),a=acf.get("toolbars"),r=e.field||!1,o=r.$el||!1;if("undefined"==typeof tinymce)return!1;if(!n)return!1;if(tinymce.get(t))return this.enable(t);var s=$.extend({},n.tinymce,e.tinymce);s.id=t,s.selector="#"+t;var c=e.toolbar;if(c&&a&&a[c])for(var l=1;l<=4;l++)s["toolbar"+l]=a[c][l]||"";if(s.setup=function(e){e.on("change",function(t){e.save(),i.trigger("change")}),$(e.getWin()).on("unload",function(){acf.tinymce.remove(t)})},s.wp_autoresize_on=!1,s=acf.applyFilters("wysiwyg_tinymce_settings",s,t,r),tinyMCEPreInit.mceInit[t]=s,"visual"==e.mode){var d=tinymce.init(s),u=tinymce.get(t);if(!u)return!1;u.acf=e.field,acf.doAction("wysiwyg_tinymce_init",u,u.id,s,r)}},initializeQuicktags:function(t,e){var i=this.defaults();if("undefined"==typeof quicktags)return!1;if(!i)return!1;var n=$.extend({},i.quicktags,e.quicktags);n.id=t;var a=e.field||!1,r=a.$el||!1;n=acf.applyFilters("wysiwyg_quicktags_settings",n,n.id,a),tinyMCEPreInit.qtInit[t]=n;var o=quicktags(n);if(!o)return!1;this.buildQuicktags(o),acf.doAction("wysiwyg_quicktags_init",o,o.id,n,a)},buildQuicktags:function(t){var e,i,n,a,r,t,o,s,c,l,d=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,";e=t.canvas,i=t.name,n=t.settings,r="",a={},c="",l=t.id,n.buttons&&(c=","+n.buttons+",");for(s in edButtons)edButtons[s]&&(o=edButtons[s].id,c&&-1!==d.indexOf(","+o+",")&&-1===c.indexOf(","+o+",")||edButtons[s].instance&&edButtons[s].instance!==l||(a[o]=edButtons[s],edButtons[s].html&&(r+=edButtons[s].html(i+"_"))));c&&-1!==c.indexOf(",dfw,")&&(a.dfw=new QTags.DFWButton,r+=a.dfw.html(i+"_")),
4
- "rtl"===document.getElementsByTagName("html")[0].dir&&(a.textdirection=new QTags.TextDirectionButton,r+=a.textdirection.html(i+"_")),t.toolbar.innerHTML=r,t.theButtons=a,"undefined"!=typeof jQuery&&jQuery(document).triggerHandler("quicktags-init",[t])},disable:function(t){this.destroyTinymce(t)},remove:function(t){this.destroyTinymce(t)},destroy:function(t){this.destroyTinymce(t)},destroyTinymce:function(t){if("undefined"==typeof tinymce)return!1;var e=tinymce.get(t);return!!e&&(e.save(),e.destroy(),!0)},enable:function(t){this.enableTinymce(t)},enableTinymce:function(t){return"undefined"!=typeof switchEditors&&(void 0!==tinyMCEPreInit.mceInit[t]&&(switchEditors.go(t,"tmce"),!0))}};var e=new acf.Model({priority:5,actions:{prepare:"onPrepare",ready:"onReady"},onPrepare:function(){var t=$("#acf-hidden-wp-editor");t.exists()&&t.appendTo("body")},onReady:function(){acf.isset(window,"tinymce","on")&&tinymce.on("AddEditor",function(t){var e=t.editor;"acf"===e.id.substr(0,3)&&(e=tinymce.editors.content||e,tinymce.activeEditor=e,wpActiveEditor=e.id)})}})}(jQuery),function($,t){acf.validation=new acf.Model({active:!0,ignore:!1,errors:[],form:!1,wait:"prepare",actions:{ready:"addInputEvents",append:"addInputEvents"},events:{'click input[type="submit"]':"onClickSubmit",'click button[type="submit"]':"onClickSubmit","click #save-post":"onClickSave","submit form":"onSubmit"},initialize:function(){acf.get("validation")||(this.disable(),this.actions={},this.events={})},getForm:function(t){var i=t.data("acf");return i||(i=new e(t)),this.form=i,i},enable:function(){this.active=!0},disable:function(){this.active=!1},pass:function(){this.ignore=!0,this.setTimeout(function(){this.ignore=!1},100)},reset:function(){this.ignore=!1,this.errors=[],this.form=!1},getErrors:function(){return this.errors},hasErrors:function(){return this.errors.length},addErrors:function(t){t.map(this.addError,this)},addError:function(t){this.errors.push(t)},getFieldErrors:function(){var t=[],e=[];return this.getErrors().map(function(i){if(i.input){var n=e.indexOf(i.input);n>-1?t[n]=i:(t.push(i),e.push(i.input))}}),t},getGlobalErrors:function(){return this.getErrors().filter(function(t){return!t.input})},showErrors:function(t){if(this.hasErrors()){var e=this.getForm(t),i=this.getFieldErrors(),n=this.getGlobalErrors(),a=0,r=!1;i.map(function(e){var i=t.find('[name="'+e.input+'"]').first();if(i.exists()||(i=t.find('[name^="'+e.input+'"]').first()),i.exists()){a++;var n=acf.getClosestField(i);n.showError(e.message),r||(r=n.$el)}},this);var o=acf.__("Validation failed");1==a?o+=". "+acf.__("1 field requires attention"):a>1&&(o+=". "+acf.__("%d fields require attention").replace("%d",a)),e.notice?e.notice.update({type:"error",text:o}):e.notice=acf.newNotice({type:"error",text:o,target:t}),r||(r=e.notice.$el),setTimeout(function(){$("html, body").animate({scrollTop:r.offset().top-$(window).height()/2},500)},10)}},fetch:function(t){if(!this.busy){this.busy=1,t=acf.parseArgs(t,{form:!1,event:!1,lock:!0,loading:function(){},complete:function(){},failure:function(){},success:function(t){t.submit()}});var e=t.form,i=this.getForm(e);if(t.event){var n=$.Event(null,t.event);t.success=function(){$(n.target).trigger(n)}}acf.doAction("validation_begin",e);var a=acf.serialize(e);a.action="acf/validate_save_post",this.lockForm(e),t.loading(e);var r=function(t){acf.isAjaxSuccess(t)&&(a=acf.applyFilters("validation_complete",t.data,e),a.valid||this.addErrors(a.errors))},o=function(){this.busy=0,this.unlockForm(e),this.hasErrors()?(acf.doAction("validation_failure",e),this.showErrors(e),t.failure(e)):(this.pass(),i.notice&&i.notice.update({type:"success",text:acf.__("Validation successful"),timeout:1e3}),acf.doAction("validation_success",e),acf.doAction("submit",e),t.success(e),t.lock&&this.lockForm(e)),this.reset(),t.complete(e)};$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(a),type:"post",dataType:"json",context:this,success:r,complete:o})}},addInputEvents:function(t){var e=$(".acf-field [name]",t);e.length&&this.on(e,"invalid","onInvalid")},onInvalid:function(t,e){var i=e.closest("form");this.addError({input:e.attr("name"),message:t.target.validationMessage}),t.preventDefault(),i.submit()},onClickSubmit:function(t,e){this.set("originalEvent",t)},onClickSave:function(t,e){this.pass()},onSubmit:function(t,e){acf.validateForm({form:e,event:this.get("originalEvent")})||t.preventDefault()},showSpinner:function(t){t.addClass("is-active"),t.css("display","inline-block")},hideSpinner:function(t){t.removeClass("is-active"),t.css("display","none")},disableSubmit:function(t){t.prop("disabled",!0).addClass("disabled")},enableSubmit:function(t){t.prop("disabled",!1).removeClass("disabled")},findSubmitWrap:function(t){var e=$("#submitdiv");if(e.length)return e;var e=$("#submitpost");if(e.length)return e;var e=t.find("p.submit").last();if(e.length)return e;var e=t.find(".acf-form-submit");return e.length?e:t},lockForm:function(t){var e=this.findSubmitWrap(t),i=e.find('.button, [type="submit"]'),n=e.find(".spinner, .acf-spinner");this.hideSpinner(n),this.disableSubmit(i),this.showSpinner(n.last())},unlockForm:function(t){var e=this.findSubmitWrap(t),i=e.find('.button, [type="submit"]'),n=e.find(".spinner, .acf-spinner");this.enableSubmit(i),this.hideSpinner(n)}});var e=acf.Model.extend({notice:!1,setup:function(t){this.$el=t},lock:function(){acf.validation.lockForm(this.$el)},unlock:function(){acf.validation.unlockForm(this.$el)}});acf.validateForm=function(t){if(!t.form)return!0;var e=acf.validation.getForm(t.form);return!acf.validation.active||(!!acf.validation.ignore||(e.$("#wp-preview").val()?(e.unlock(),!0):!e.$("#acf-form-data").length||(acf.validation.fetch(t),!1)))}}(jQuery),function($,t){var e=new acf.Model({priority:90,timeout:0,actions:{new_field:"refresh",show_field:"refresh",hide_field:"refresh",remove_field:"refresh"},refresh:function(){clearTimeout(this.timeout),this.timeout=setTimeout(function(){acf.doAction("refresh")},0)}}),i=new acf.Model({actions:{sortstart:"onSortstart"},onSortstart:function(t,e){t.is("tr")&&(t.css("position","relative"),t.children().each(function(){$(this).width($(this).width())}),t.css("position","absolute"),e.html('<td style="height:'+t.height()+'px; padding:0;" colspan="'+t.children("td").length+'"></td>'))}}),n=new acf.Model({actions:{after_duplicate:"onAfterDuplicate"},onAfterDuplicate:function(t,e){var i=[];t.find("select").each(function(t){i.push($(this).val())}),e.find("select").each(function(t){$(this).val(i[t])})}}),a=new acf.Model({id:"tableHelper",priority:20,actions:{refresh:"renderTables"},renderTables:function(t){var e=this;$(".acf-table:visible").each(function(){e.renderTable($(this))})},renderTable:function(t){var e=t.find("> thead > tr:visible > th[data-key]"),i=t.find("> tbody > tr:visible > td[data-key]");if(!e.length||!i.length)return!1;e.each(function(t){var e=$(this),n=e.data("key"),a=i.filter('[data-key="'+n+'"]'),r=a.filter(".acf-hidden");a.removeClass("acf-empty"),a.length===r.length?acf.hide(e):(acf.show(e),r.addClass("acf-empty"))}),e.css("width","auto"),e=e.not(".acf-hidden");var n=100,a=e.length;e.filter("[data-width]").each(function(){var t=$(this).data("width");$(this).css("width",t+"%"),n-=t});var r=e.not("[data-width]");if(r.length){var o=n/r.length;r.css("width",o+"%"),n=0}n>0&&e.last().css("width","auto"),i.filter(".-collapsed-target").each(function(){var t=$(this);t.parent().hasClass("-collapsed")?t.attr("colspan",e.length):t.removeAttr("colspan")})}}),r=new acf.Model({id:"fieldsHelper",priority:30,actions:{refresh:"renderGroups"},renderGroups:function(){var t=this;$(".acf-fields:visible").each(function(){t.renderGroup($(this))})},renderGroup:function(t){var e=0,i=0,n=$(),a=t.children(".acf-field[data-width]:visible");return!!a.length&&(t.hasClass("-left")?(a.removeAttr("data-width"),a.css("width","auto"),!1):(a.removeClass("-r0 -c0").css({"min-height":0}),a.each(function(t){var a=$(this),r=a.position(),o=Math.ceil(r.top),s=Math.ceil(r.left);n.length&&o>e&&(n.css({"min-height":i+"px"}),r=a.position(),o=Math.ceil(r.top),s=Math.ceil(r.left),e=0,i=0,n=$()),acf.get("rtl")&&(s=Math.ceil(a.parent().width()-(r.left+a.outerWidth()))),0==o?a.addClass("-r0"):0==s&&a.addClass("-c0");var c=Math.ceil(a.outerHeight())+1;i=Math.max(i,c),e=Math.max(e,o),n=n.add(a)}),void(n.length&&n.css({"min-height":i+"px"}))))}})}(jQuery),function($,t){acf.newCompatibility=function(t,e){return e=e||{},e.__proto__=t.__proto__,t.__proto__=e,t.compatibility=e,e},acf.getCompatibility=function(t){return t.compatibility||null};var e=acf.newCompatibility(acf,{l10n:{},o:{},fields:{},update:acf.set,add_action:acf.addAction,remove_action:acf.removeAction,do_action:acf.doAction,add_filter:acf.addFilter,remove_filter:acf.removeFilter,apply_filters:acf.applyFilters,parse_args:acf.parseArgs,disable_el:acf.disable,disable_form:acf.disable,enable_el:acf.enable,enable_form:acf.enable,update_user_setting:acf.updateUserSetting,prepare_for_ajax:acf.prepareForAjax,is_ajax_success:acf.isAjaxSuccess,remove_el:acf.remove,remove_tr:acf.remove,str_replace:acf.strReplace,render_select:acf.renderSelect,get_uniqid:acf.uniqid,serialize_form:acf.serialize,esc_html:acf.strEscape,str_sanitize:acf.strSanitize});e._e=function(t,e){t=t||"",e=e||"";var i=e?t+"."+e:t,n={"image.select":"Select Image","image.edit":"Edit Image","image.update":"Update Image"};if(n[i])return acf.__(n[i]);var a=this.l10n[t]||"";return e&&(a=a[e]||""),a},e.get_selector=function(t){var e=".acf-field";if(!t)return e;if($.isPlainObject(t)){if($.isEmptyObject(t))return e;for(var i in t){t=t[i];break}}return e+="-"+t,e=acf.strReplace("_","-",e),e=acf.strReplace("field-field-","field-",e)},e.get_fields=function(t,e,i){var n={is:t||"",parent:e||!1,suppressFilters:i||!1};return n.is&&(n.is=this.get_selector(n.is)),acf.findFields(n)},e.get_field=function(t,e){var i=this.get_fields.apply(this,arguments);return!!i.length&&i.first()},e.get_closest_field=function(t,e){return t.closest(this.get_selector(e))},e.get_field_wrap=function(t){return t.closest(this.get_selector())},e.get_field_key=function(t){return t.data("key")},e.get_field_type=function(t){return t.data("type")},e.get_data=function(t,e){return acf.parseArgs(t.data(),e)},e.maybe_get=function(t,e,i){void 0===i&&(i=null),keys=String(e).split(".");for(var n=0;n<keys.length;n++){if(!t.hasOwnProperty(keys[n]))return i;t=t[keys[n]]}return t};var i=function(t){return t instanceof acf.Field?t.$el:t},n=function(t){return acf.arrayArgs(t).map(i)},a=function(t){return function(){if(arguments.length)var e=n(arguments);else var e=[$(document)];return t.apply(this,e)}};e.add_action=function(t,i,n,r){var o=t.split(" "),s=o.length;if(s>1){for(var c=0;c<s;c++)t=o[c],e.add_action.apply(this,arguments);return this}var i=a(i);return acf.addAction.apply(this,arguments)},e.add_filter=function(t,e,i,n){var e=a(e);return acf.addFilter.apply(this,arguments)},e.model={actions:{},filters:{},events:{},extend:function(t){var e=$.extend({},this,t);return $.each(e.actions,function(t,i){e._add_action(t,i)}),$.each(e.filters,function(t,i){e._add_filter(t,i)}),$.each(e.events,function(t,i){e._add_event(t,i)}),e},_add_action:function(t,e){var i=this,n=t.split(" "),t=n[0]||"",a=n[1]||10;acf.add_action(t,i[e],a,i)},_add_filter:function(t,e){var i=this,n=t.split(" "),t=n[0]||"",a=n[1]||10;acf.add_filter(t,i[e],a,i)},_add_event:function(t,e){var i=this,n=t.indexOf(" "),a=n>0?t.substr(0,n):t,r=n>0?t.substr(n+1):"",o=function(t){t.$el=$(this),acf.field_group&&(t.$field=t.$el.closest(".acf-field-object")),"function"==typeof i.event&&(t=i.event(t)),i[e].apply(i,arguments)};r?$(document).on(a,r,o):$(document).on(a,o)},get:function(t,e){return e=e||null,void 0!==this[t]&&(e=this[t]),e},set:function(t,e){return this[t]=e,"function"==typeof this["_set_"+t]&&this["_set_"+t].apply(this),this}},e.field=acf.model.extend({type:"",o:{},$field:null,_add_action:function(t,e){var i=this;t=t+"_field/type="+i.type,acf.add_action(t,function(t){i.set("$field",t),i[e].apply(i,arguments)})},_add_filter:function(t,e){var i=this;t=t+"_field/type="+i.type,acf.add_filter(t,function(t){i.set("$field",t),i[e].apply(i,arguments)})},_add_event:function(t,e){var i=this,n=t.substr(0,t.indexOf(" ")),a=t.substr(t.indexOf(" ")+1),r=acf.get_selector(i.type);$(document).on(n,r+" "+a,function(t){var n=$(this),a=acf.get_closest_field(n,i.type);a.length&&(a.is(i.$field)||i.set("$field",a),t.$el=n,t.$field=a,i[e].apply(i,[t]))})},_set_$field:function(){"function"==typeof this.focus&&this.focus()},doFocus:function(t){return this.set("$field",t)}});var r=acf.newCompatibility(acf.validation,{remove_error:function(t){acf.getField(t).removeError()},add_warning:function(t,e){acf.getField(t).showNotice({text:e,type:"warning",timeout:1e3})}});e.tooltip={tooltip:function(t,e){return acf.newTooltip({text:t,target:e}).$el},temp:function(t,e){var i=acf.newTooltip({text:t,target:e,timeout:250})},confirm:function(t,e,i,n,a){var r=acf.newTooltip({confirm:!0,text:i,target:t,confirm:function(){e(!0)},cancel:function(){e(!1)}})},confirm_remove:function(t,e){var i=acf.newTooltip({confirmRemove:!0,target:t,confirm:function(){e(!0)},cancel:function(){e(!1)}})}},e.media=new acf.Model({activeFrame:!1,actions:{new_media_popup:"onNewMediaPopup"},frame:function(){return this.activeFrame},onNewMediaPopup:function(t){this.activeFrame=t.frame},popup:function(t){return t.mime_types&&(t.allowedTypes=t.mime_types),t.id&&(t.attachment=t.id),acf.newMediaPopup(t).frame}}),e.select2={init:function(t,e,i){return e.allow_null&&(e.allowNull=e.allow_null),e.ajax_action&&(e.ajaxAction=e.ajax_action),i&&(e.field=acf.getField(i)),acf.newSelect2(t,e)},destroy:function(t){return acf.getInstance(t).destroy()}},e.postbox={render:function(t){return t.edit_url&&(t.editLink=t.edit_url),t.edit_title&&(t.editTitle=t.edit_title),acf.newPostbox(t)}},acf.newCompatibility(acf.screen,{update:function(){return this.set.apply(this,arguments)},fetch:acf.screen.check}),e.ajax=acf.screen}(jQuery);
1
  !function($,t){var e={};window.acf=e,e.data={},e.get=function(t){return this.data[t]||null},e.has=function(t){return null!==this.get(t)},e.set=function(t,e){return this.data[t]=e,this};var i=0;e.uniqueId=function(t){var e=++i+"";return t?t+e:e},e.uniqueArray=function(t){function e(t,e,i){return i.indexOf(t)===e}return t.filter(e)};var n="";e.uniqid=function(t,e){void 0===t&&(t="");var i,a=function(t,e){return t=parseInt(t,10).toString(16),e<t.length?t.slice(t.length-e):e>t.length?Array(e-t.length+1).join("0")+t:t};return n||(n=Math.floor(123456789*Math.random())),n++,i=t,i+=a(parseInt((new Date).getTime()/1e3,10),8),i+=a(n,5),e&&(i+=(10*Math.random()).toFixed(8).toString()),i},e.strReplace=function(t,e,i){return i.split(t).join(e)},e.strCamelCase=function(t){return t=t.replace(/[_-]/g," "),t=t.replace(/(?:^\w|\b\w|\s+)/g,function(t,e){return 0==+t?"":0==e?t.toLowerCase():t.toUpperCase()})},e.strPascalCase=function(t){var i=e.strCamelCase(t);return i.charAt(0).toUpperCase()+i.slice(1)},e.strSlugify=function(t){return e.strReplace("_","-",t.toLowerCase())},e.strSanitize=function(t){var e={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","ß":"s","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Ĉ":"C","ĉ":"c","Ċ":"C","ċ":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"D","đ":"d","Ē":"E","ē":"e","Ĕ":"E","ĕ":"e","Ė":"E","ė":"e","Ę":"E","ę":"e","Ě":"E","ě":"e","Ĝ":"G","ĝ":"g","Ğ":"G","ğ":"g","Ġ":"G","ġ":"g","Ģ":"G","ģ":"g","Ĥ":"H","ĥ":"h","Ħ":"H","ħ":"h","Ĩ":"I","ĩ":"i","Ī":"I","ī":"i","Ĭ":"I","ĭ":"i","Į":"I","į":"i","İ":"I","ı":"i","IJ":"IJ","ij":"ij","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","Ĺ":"L","ĺ":"l","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ŀ":"L","ŀ":"l","Ł":"l","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","ʼn":"n","Ō":"O","ō":"o","Ŏ":"O","ŏ":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ŗ":"R","ŗ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ŝ":"S","ŝ":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ŧ":"T","ŧ":"t","Ũ":"U","ũ":"u","Ū":"U","ū":"u","Ŭ":"U","ŭ":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","ſ":"s","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Ǎ":"A","ǎ":"a","Ǐ":"I","ǐ":"i","Ǒ":"O","ǒ":"o","Ǔ":"U","ǔ":"u","Ǖ":"U","ǖ":"u","Ǘ":"U","ǘ":"u","Ǚ":"U","ǚ":"u","Ǜ":"U","ǜ":"u","Ǻ":"A","ǻ":"a","Ǽ":"AE","ǽ":"ae","Ǿ":"O","ǿ":"o"," ":"_","'":"","?":"","/":"","\\":"",".":"",",":"","`":"",">":"","<":"",'"':"","[":"","]":"","|":"","{":"","}":"","(":"",")":""},i=/\W/g,n=function(t){return void 0!==e[t]?e[t]:t};return t=t.replace(i,n),t=t.toLowerCase()},e.strMatch=function(t,e){for(var i=0,n=Math.min(t.length,e.length),a=0;a<n&&t[a]===e[a];a++)i++;return i},e.decode=function(t){return $("<textarea/>").html(t).text()},e.strEscape=function(t){var e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})},e.parseArgs=function(t,e){return"object"!=typeof t&&(t={}),"object"!=typeof e&&(e={}),$.extend({},e,t)},void 0==window.acfL10n&&(acfL10n={}),e.__=function(t){return acfL10n[t]||t},e._x=function(t,e){return acfL10n[t+"."+e]||acfL10n[t]||t},e._n=function(t,i,n){return 1==n?e.__(t):e.__(i)},e.isArray=function(t){return Array.isArray(t)},e.isObject=function(t){return"object"==typeof t};var a=function(t,i,n){i=i.replace("[]","[%%index%%]");var a=i.match(/([^\[\]])+/g);if(a)for(var r=a.length,o=t,s=0;s<r;s++){var c=String(a[s]);s==r-1?"%%index%%"===c?o.push(n):o[c]=n:("%%index%%"===a[s+1]?e.isArray(o[c])||(o[c]=[]):e.isObject(o[c])||(o[c]={}),o=o[c])}};e.serialize=function(t,i){var n={},r=e.serializeArray(t);void 0!==i&&(r=r.filter(function(t){return 0===t.name.indexOf(i)}).map(function(t){return t.name=t.name.slice(i.length),t}));for(var o=0;o<r.length;o++)a(n,r[o].name,r[o].value);return n},e.serializeArray=function(t){return t.find("select, textarea, input").serializeArray()},e.addAction=function(t,i,n,a){return e.hooks.addAction.apply(this,arguments),this},e.removeAction=function(t,i){return e.hooks.removeAction.apply(this,arguments),this};var r={};e.doAction=function(t){return r[t]=1,e.hooks.doAction.apply(this,arguments),r[t]=0,this},e.doingAction=function(t){return 1===r[t]},e.didAction=function(t){return void 0!==r[t]},e.currentAction=function(){for(var t in r)if(r[t])return t;return!1},e.addFilter=function(t){return e.hooks.addFilter.apply(this,arguments),this},e.removeFilter=function(t){return e.hooks.removeFilter.apply(this,arguments),this},e.applyFilters=function(t){return e.hooks.applyFilters.apply(this,arguments)},e.arrayArgs=function(t){return Array.prototype.slice.call(t)};try{var o=JSON.parse(localStorage.getItem("acf"))||{}}catch(t){var o={}}var s=function(t){return"this."===t.substr(0,5)&&(t=t.substr(5)+"-"+e.get("post_id")),t};e.getPreference=function(t){return t=s(t),o[t]||null},e.setPreference=function(t,e){t=s(t),null===e?delete o[t]:o[t]=e,localStorage.setItem("acf",JSON.stringify(o))},e.removePreference=function(t){e.setPreference(t,null)},e.remove=function(t){t instanceof jQuery&&(t={target:t}),t=e.parseArgs(t,{target:!1,endHeight:0,complete:function(){}}),e.doAction("remove",t.target),t.target.is("tr")?l(t):c(t)};var c=function(t){var e=t.target,i=e.height(),n=e.width(),a=e.css("margin"),r=e.outerHeight(!0),o=e.attr("style")+"";e.wrap('<div class="acf-temp-remove" style="height:'+r+'px"></div>');var s=e.parent();e.css({height:i,width:n,margin:a,position:"absolute"}),setTimeout(function(){s.css({opacity:0,height:t.endHeight})},50),setTimeout(function(){e.attr("style",o),s.remove(),t.complete()},301)},l=function(t){var e=t.target,i=e.height(),n=e.children().length,a=$('<td class="acf-temp-remove" style="padding:0; height:'+i+'px" colspan="'+n+'"></td>');e.addClass("acf-remove-element"),setTimeout(function(){e.html(a)},251),setTimeout(function(){e.removeClass("acf-remove-element"),a.css({height:t.endHeight})},300),setTimeout(function(){e.remove(),t.complete()},451)};e.duplicate=function(t){t instanceof jQuery&&(t={target:t});var i=0;t=e.parseArgs(t,{target:!1,search:"",replace:"",before:function(t){},after:function(t,e){},append:function(t,e){t.after(e),i=1}}),t.target=t.target||t.$el;var n=t.target;t.search=t.search||n.attr("data-id"),t.replace=t.replace||e.uniqid(),t.before(n),e.doAction("before_duplicate",n);var a=n.clone();return e.rename({target:a,search:t.search,replace:t.replace}),a.removeClass("acf-clone"),a.find(".ui-sortable").removeClass("ui-sortable"),t.after(n,a),e.doAction("after_duplicate",n,a),t.append(n,a),e.doAction("append",a),a},e.rename=function(t){t instanceof jQuery&&(t={target:t}),t=e.parseArgs(t,{target:!1,destructive:!1,search:"",replace:""});var i=t.target,n=t.search||i.attr("data-id"),a=t.replace||e.uniqid("acf"),r=function(t,e){return e.replace(n,a)};if(t.destructive){var o=i.outerHTML();o=e.strReplace(n,a,o),i.replaceWith(o)}else i.attr("data-id",a),i.find('[id*="'+n+'"]').attr("id",r),i.find('[for*="'+n+'"]').attr("for",r),i.find('[name*="'+n+'"]').attr("name",r);return i},e.prepareForAjax=function(t){return t.nonce=e.get("nonce"),t.post_id=e.get("post_id"),t=e.applyFilters("prepare_for_ajax",t)},e.startButtonLoading=function(t){t.prop("disabled",!0),t.after(' <i class="acf-loading"></i>')},e.stopButtonLoading=function(t){t.prop("disabled",!1),t.next(".acf-loading").remove()},e.showLoading=function(t){t.append('<div class="acf-loading-overlay"><i class="acf-loading"></i></div>')},e.hideLoading=function(t){t.children(".acf-loading-overlay").remove()},e.updateUserSetting=function(t,i){var n={action:"acf/ajax/user_setting",name:t,value:i};$.ajax({url:e.get("ajaxurl"),data:e.prepareForAjax(n),type:"post",dataType:"html"})},e.val=function(t,e,i){var n=t.val();return e!==n&&(t.val(e),t.is("select")&&null===t.val()?(t.val(n),!1):(!0!==i&&t.trigger("change"),!0))},e.show=function(t,i){return i&&e.unlock(t,"hidden",i),!e.isLocked(t,"hidden")&&(!!t.hasClass("acf-hidden")&&(t.removeClass("acf-hidden"),!0))},e.hide=function(t,i){return i&&e.lock(t,"hidden",i),!t.hasClass("acf-hidden")&&(t.addClass("acf-hidden"),!0)},e.isHidden=function(t){return t.hasClass("acf-hidden")},e.isVisible=function(t){return!e.isHidden(t)};var d=function(t,i){return!t.hasClass("acf-disabled")&&(i&&e.unlock(t,"disabled",i),!e.isLocked(t,"disabled")&&(!!t.prop("disabled")&&(t.prop("disabled",!1),!0)))};e.enable=function(t,e){if(t.attr("name"))return d(t,e);var i=!1;return t.find("[name]").each(function(){d($(this),e)&&(i=!0)}),i};var u=function(t,i){return i&&e.lock(t,"disabled",i),!t.prop("disabled")&&(t.prop("disabled",!0),!0)};e.disable=function(t,e){if(t.attr("name"))return u(t,e);var i=!1;return t.find("[name]").each(function(){u($(this),e)&&(i=!0)}),i},e.isset=function(t){for(var e=1;e<arguments.length;e++){if(!t||!t.hasOwnProperty(arguments[e]))return!1;t=t[arguments[e]]}return!0},e.isget=function(t){for(var e=1;e<arguments.length;e++){if(!t||!t.hasOwnProperty(arguments[e]))return null;t=t[arguments[e]]}return t},e.getFileInputData=function(t,i){var n=t.val();if(!n)return!1;var a={url:n},r=e.isget(t[0],"files",0);if(r)if(a.size=r.size,a.type=r.type,r.type.indexOf("image")>-1){var o=window.URL||window.webkitURL,s=new Image;s.onload=function(){a.width=this.width,a.height=this.height,i(a)},s.src=o.createObjectURL(r)}else i(a);else i(a)},e.isAjaxSuccess=function(t){return t&&t.success},e.getAjaxMessage=function(t){return e.isget(t,"data","message")},e.getAjaxError=function(t){return e.isget(t,"data","error")},e.renderSelect=function(t,i){var n=t.val(),a=[],r=function(t){var i="";return t.map(function(t){var n=t.text||t.label||"",o=t.id||t.value||"";a.push(o),t.children?i+='<optgroup label="'+e.strEscape(n)+'">'+r(t.children)+"</optgroup>":i+='<option value="'+o+'"'+(t.disabled?' disabled="disabled"':"")+">"+e.strEscape(n)+"</option>"}),i};return t.html(r(i)),a.indexOf(n)>-1&&t.val(n),t.val()};var f=function(t,e){return t.data("acf-lock-"+e)||[]},h=function(t,e,i){t.data("acf-lock-"+e,i)};e.lock=function(t,e,i){var n=f(t,e);n.indexOf(i)<0&&(n.push(i),h(t,e,n))},e.unlock=function(t,e,i){var n=f(t,e),a=n.indexOf(i);return a>-1&&(n.splice(a,1),h(t,e,n)),0===n.length},e.isLocked=function(t,e){return f(t,e).length>0},$.fn.exists=function(){return $(this).length>0},$.fn.outerHTML=function(){return $(this).get(0).outerHTML},Array.prototype.indexOf||(Array.prototype.indexOf=function(t){return $.inArray(t,this)}),$(document).ready(function(){e.doAction("ready")}),$(window).on("load",function(){e.doAction("load")}),$(window).on("beforeunload",function(){e.doAction("unload")}),$(window).on("resize",function(){e.doAction("resize")}),$(document).on("sortstart",function(t,i){e.doAction("sortstart",i.item,i.placeholder)}),$(document).on("sortstop",function(t,i){e.doAction("sortstop",i.item,i.placeholder)})}(jQuery),function(t,e){"use strict";var i=function(){function t(){return f}function e(t,e,i,n){return"string"==typeof t&&"function"==typeof e&&(i=parseInt(i||10,10),c("actions",t,e,i,n)),u}function i(){var t=Array.prototype.slice.call(arguments),e=t.shift();return"string"==typeof e&&d("actions",e,t),u}function n(t,e){return"string"==typeof t&&s("actions",t,e),u}function a(t,e,i,n){return"string"==typeof t&&"function"==typeof e&&(i=parseInt(i||10,10),c("filters",t,e,i,n)),u}function r(){var t=Array.prototype.slice.call(arguments),e=t.shift();return"string"==typeof e?d("filters",e,t):u}function o(t,e){return"string"==typeof t&&s("filters",t,e),u}function s(t,e,i,n){if(f[t][e])if(i){var a=f[t][e],r;if(n)for(r=a.length;r--;){var o=a[r];o.callback===i&&o.context===n&&a.splice(r,1)}else for(r=a.length;r--;)a[r].callback===i&&a.splice(r,1)}else f[t][e]=[]}function c(t,e,i,n,a){var r={callback:i,priority:n,context:a},o=f[t][e];o?(o.push(r),o=l(o)):o=[r],f[t][e]=o}function l(t){for(var e,i,n,a=1,r=t.length;a<r;a++){for(e=t[a],i=a;(n=t[i-1])&&n.priority>e.priority;)t[i]=t[i-1],--i;t[i]=e}return t}function d(t,e,i){var n=f[t][e];if(!n)return"filters"===t&&i[0];var a=0,r=n.length;if("filters"===t)for(;a<r;a++)i[0]=n[a].callback.apply(n[a].context,i);else for(;a<r;a++)n[a].callback.apply(n[a].context,i);return"filters"!==t||i[0]}var u={removeFilter:o,applyFilters:r,addFilter:a,removeAction:n,doAction:i,addAction:e,storage:t},f={actions:{},filters:{}};return u};acf.hooks=new i}(window),function($,t){var e=/^(\S+)\s*(.*)$/,i=function(t){var e=this,i;return i=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},$.extend(i,e),i.prototype=Object.create(e.prototype),$.extend(i.prototype,t),i.prototype.constructor=i,i},n=acf.Model=function(){this.cid=acf.uniqueId("acf"),this.data=$.extend(!0,{},this.data),this.setup.apply(this,arguments),this.$el&&!this.$el.data("acf")&&this.$el.data("acf",this);var t=function(){this.initialize(),this.addEvents(),this.addActions(),this.addFilters()};this.wait&&!acf.didAction(this.wait)?this.addAction(this.wait,t):t.apply(this)};$.extend(n.prototype,{id:"",cid:"",$el:null,data:{},busy:!1,changed:!1,events:{},actions:{},filters:{},eventScope:"",wait:!1,priority:10,get:function(t){return this.data[t]},has:function(t){return null!=this.get(t)},set:function(t,e,i){return this.get(t)==e?this:(this.data[t]=e,i||(this.changed=!0,this.trigger("changed:"+t,[e]),this.trigger("changed",[t,e])),this)},inherit:function(t){return t instanceof jQuery&&(t=t.data()),$.extend(this.data,t),this},prop:function(){return this.$el.prop.apply(this.$el,arguments)},setup:function(t){$.extend(this,t)},initialize:function(){},addElements:function(t){if(!(t=t||this.elements||null)||!Object.keys(t).length)return!1;for(var e in t)this.addElement(e,t[e])},addElement:function(t,e){this["$"+t]=this.$(e)},addEvents:function(t){if(!(t=t||this.events||null))return!1;for(var i in t){var n=i.match(e);this.on(n[1],n[2],t[i])}},removeEvents:function(t){if(!(t=t||this.events||null))return!1;for(var i in t){var n=i.match(e);this.off(n[1],n[2],t[i])}},getEventTarget:function(t,e){return t||this.$el||$(document)},validateEvent:function(t){return!this.eventScope||$(t.target).closest(this.eventScope).is(this.$el)},proxyEvent:function(t){return this.proxy(function(e){if(this.validateEvent(e)){var i=acf.arrayArgs(arguments),n=i.slice(1),a=[e,$(e.currentTarget)].concat(n);t.apply(this,a)}})},on:function(t,e,i,n){var a,r,o,s,c;t instanceof jQuery?n?(a=t,r=e,o=i,s=n):(a=t,r=e,s=i):i?(r=t,o=e,s=i):(r=t,s=e),a=this.getEventTarget(a),"string"==typeof s&&(s=this.proxyEvent(this[s])),r=r+"."+this.cid,c=o?[r,o,s]:[r,s],a.on.apply(a,c)},off:function(t,e,i){var n,a,r,o;t instanceof jQuery?i?(n=t,a=e,r=i):(n=t,a=e):e?(a=t,r=e):a=t,n=this.getEventTarget(n),a=a+"."+this.cid,o=r?[a,r]:[a],n.off.apply(n,o)},trigger:function(t,e,i){var n=this.getEventTarget();return i?n.trigger.apply(n,arguments):n.triggerHandler.apply(n,arguments),this},addActions:function(t){if(!(t=t||this.actions||null))return!1;for(var e in t)this.addAction(e,t[e])},removeActions:function(t){if(!(t=t||this.actions||null))return!1;for(var e in t)this.removeAction(e,t[e])},addAction:function(t,e,i){i=i||this.priority,"string"==typeof e&&(e=this[e]),acf.addAction(t,e,i,this)},removeAction:function(t,e){acf.removeAction(t,this[e])},addFilters:function(t){if(!(t=t||this.filters||null))return!1;for(var e in t)this.addFilter(e,t[e])},addFilter:function(t,e,i){i=i||this.priority,"string"==typeof e&&(e=this[e]),acf.addFilter(t,e,i,this)},removeFilters:function(t){if(!(t=t||this.filters||null))return!1;for(var e in t)this.removeFilter(e,t[e])},removeFilter:function(t,e){acf.removeFilter(t,this[e])},$:function(t){return this.$el.find(t)},remove:function(){this.removeEvents(),this.removeActions(),this.removeFilters(),this.$el.remove()},setTimeout:function(t,e){return setTimeout(this.proxy(t),e)},time:function(){console.time(this.id||this.cid)},timeEnd:function(){console.timeEnd(this.id||this.cid)},show:function(){acf.show(this.$el)},hide:function(){acf.hide(this.$el)},proxy:function(t){return $.proxy(t,this)}}),n.extend=i,acf.models={},acf.getInstance=function(t){return t.data("acf")},acf.getInstances=function(t){var e=[];return t.each(function(){e.push(acf.getInstance($(this)))}),e}}(jQuery),function($,t){acf.models.Popup=acf.Model.extend({data:{title:"",content:"",width:0,height:0,loading:!1},events:{'click [data-event="close"]':"onClickClose","click .acf-close-popup":"onClickClose"},setup:function(t){$.extend(this.data,t),this.$el=$(this.tmpl())},initialize:function(){this.render(),this.open()},tmpl:function(){return['<div id="acf-popup">','<div class="acf-popup-box acf-box">','<div class="title"><h3></h3><a href="#" class="acf-icon -cancel grey" data-event="close"></a></div>','<div class="inner"></div>','<div class="loading"><i class="acf-loading"></i></div>',"</div>",'<div class="bg" data-event="close"></div>',"</div>"].join("")},render:function(){var t=this.get("title"),e=this.get("content"),i=this.get("loading"),n=this.get("width"),a=this.get("height");this.title(t),this.content(e),n&&this.$(".acf-popup-box").css("width",n),a&&this.$(".acf-popup-box").css("min-height",a),this.loading(i),acf.doAction("append",this.$el)},update:function(t){this.data=acf.parseArgs(t,this.data),this.render()},title:function(t){this.$(".title:first h3").html(t)},content:function(t){this.$(".inner:first").html(t)},loading:function(t){var e=this.$(".loading:first");t?e.show():e.hide()},open:function(){$("body").append(this.$el)},close:function(){this.remove()},onClickClose:function(t,e){t.preventDefault(),this.close()}}),acf.newPopup=function(t){return new acf.models.Popup(t)}}(jQuery),function($,t){acf.unload=new acf.Model({wait:"load",active:!0,changed:!1,actions:{change_field:"startListening",validation_failure:"startListening"},events:{"submit form":"stopListening"},reset:function(){this.stopListening()},startListening:function(){!this.changed&&this.active&&(this.changed=!0,$(window).on("beforeunload",this.onUnload))},stopListening:function(){this.changed=!1,$(window).off("beforeunload",this.onUnload)},onUnload:function(){return acf.__("The changes you made will be lost if you navigate away from this page")}})}(jQuery),function($,t){var e=new acf.Model({events:{"click .acf-panel-title":"onClick"},onClick:function(t,e){t.preventDefault(),this.toggle(e.parent())},isOpen:function(t){return t.hasClass("-open")},toggle:function(t){this.isOpen(t)?this.close(t):this.open(t)},open:function(t){t.addClass("-open"),t.find(".acf-panel-title i").attr("class","dashicons dashicons-arrow-down")},close:function(t){t.removeClass("-open"),t.find(".acf-panel-title i").attr("class","dashicons dashicons-arrow-right")}})}(jQuery),function($,t){var e=acf.Model.extend({data:{text:"",type:"",timeout:0,dismiss:!0,target:!1,close:function(){}},events:{"click .acf-notice-dismiss":"onClickClose"},tmpl:function(){return'<div class="acf-notice"></div>'},setup:function(t){$.extend(this.data,t),this.$el=$(this.tmpl())},initialize:function(){this.render(),this.show()},render:function(){this.type(this.get("type")),this.html("<p>"+this.get("text")+"</p>"),this.get("dismiss")&&(this.$el.append('<a href="#" class="acf-notice-dismiss acf-icon -cancel small"></a>'),this.$el.addClass("-dismiss"));var t=this.get("timeout");t&&this.away(t)},update:function(t){$.extend(this.data,t),this.initialize()},show:function(){var t=this.get("target");t&&t.prepend(this.$el)},hide:function(){this.$el.remove()},away:function(t){this.setTimeout(function(){acf.remove(this.$el)},t)},type:function(t){var e=this.get("type");e&&this.$el.removeClass("-"+e),this.$el.addClass("-"+t),"error"==t&&this.$el.addClass("acf-error-message")},html:function(t){this.$el.html(t)},text:function(t){this.$("p").html(t)},onClickClose:function(t,e){t.preventDefault(),this.get("close").apply(this,arguments),this.remove()}});acf.newNotice=function(t){return"object"!=typeof t&&(t={text:t}),new e(t)};var i=new acf.Model({wait:"prepare",priority:1,initialize:function(){var t=$(".acf-admin-notice");t.length&&$("h1:first").after(t)}})}(jQuery),function($,t){acf.models.Postbox=acf.Model.extend({data:{id:"",key:"",style:"default",label:"top",editLink:"",editTitle:"",visibility:!0},setup:function(t){$.extend(this.data,t)},initialize:function(){var t=this.get("id"),e=$("#"+t),i=$("#"+t+"-hide"),n=i.parent();e.addClass("acf-postbox"),n.addClass("acf-postbox-toggle"),e.removeClass("hide-if-js"),n.removeClass("hide-if-js");var a=this.get("style");"default"!==a&&e.addClass(a),e.children(".inside").addClass("acf-fields").addClass("-"+this.get("label")),this.get("visibility")?i.prop("checked",!0):(e.addClass("acf-hidden"),n.addClass("acf-hidden"));var r=this.get("editLink"),o=this.get("editTitle");r&&e.children(".hndle").append('<a href="'+r+'" class="dashicons dashicons-admin-generic acf-hndle-cog acf-js-tooltip" title="'+o+'"></a>')}}),acf.newPostbox=function(t){return new acf.models.Postbox(t)}}(jQuery),function($,t){acf.newTooltip=function(t){return"object"!=typeof t&&(t={text:t}),void 0!==t.confirmRemove?(t.textConfirm=acf.__("Remove"),t.textCancel=acf.__("Cancel"),new i(t)):void 0!==t.confirm?new i(t):new e(t)};var e=acf.Model.extend({data:{text:"",timeout:0,target:null},tmpl:function(){return'<div class="acf-tooltip"></div>'},setup:function(t){$.extend(this.data,t),this.$el=$(this.tmpl())},initialize:function(){this.render(),this.show(),this.position();var t=this.get("timeout");t&&setTimeout($.proxy(this.fade,this),t)},update:function(t){$.extend(this.data,t),this.initialize()},render:function(){this.html(this.get("text"))},show:function(){$("body").append(this.$el)},hide:function(){this.$el.remove()},fade:function(){this.$el.addClass("acf-fade-up"),this.setTimeout(function(){this.remove()},250)},html:function(t){this.$el.html(t)},position:function(){var t=this.$el,e=this.get("target");if(e){t.removeClass("right left bottom top");var i=10,n=e.outerWidth(),a=e.outerHeight(),r=e.offset().top,o=e.offset().left,s=t.outerWidth(),c=t.outerHeight(),l=r-c,d=o+n/2-s/2;d<10?(t.addClass("right"),d=o+n,l=r+a/2-c/2):d+s+10>$(window).width()?(t.addClass("left"),d=o-s,l=r+a/2-c/2):l-$(window).scrollTop()<10?(t.addClass("bottom"),l=r+a):t.addClass("top"),t.css({top:l,left:d})}}}),i=e.extend({data:{text:"",textConfirm:"",textCancel:"",target:null,targetConfirm:!0,confirm:function(){},cancel:function(){},context:!1},events:{'click [data-event="cancel"]':"onCancel",'click [data-event="confirm"]':"onConfirm"},addEvents:function(){acf.Model.prototype.addEvents.apply(this);var t=$(document),e=this.get("target");this.setTimeout(function(){this.on(t,"click","onCancel")}),this.get("targetConfirm")&&this.on(e,"click","onConfirm")},removeEvents:function(){acf.Model.prototype.removeEvents.apply(this);var t=$(document),e=this.get("target");this.off(t,"click"),this.off(e,"click")},render:function(){var t=this.get("text")||acf.__("Are you sure?"),e=this.get("textConfirm")||acf.__("Yes"),i=this.get("textCancel")||acf.__("No"),n=[t,'<a href="#" data-event="confirm">'+e+"</a>",'<a href="#" data-event="cancel">'+i+"</a>"].join(" ");this.html(n),this.$el.addClass("-confirm")},onCancel:function(t,e){t.preventDefault(),t.stopImmediatePropagation();var i=this.get("cancel"),n=this.get("context")||this;i.apply(n,arguments),this.remove()},onConfirm:function(t,e){t.preventDefault(),t.stopImmediatePropagation();var i=this.get("confirm"),n=this.get("context")||this;i.apply(n,arguments),this.remove()}});acf.models.Tooltip=e,acf.models.TooltipConfirm=i;var n=new acf.Model({tooltip:!1,events:{"mouseenter .acf-js-tooltip":"showTitle","mouseup .acf-js-tooltip":"hideTitle","mouseleave .acf-js-tooltip":"hideTitle"},showTitle:function(t,e){var i=e.attr("title");i&&(e.attr("title",""),this.tooltip?this.tooltip.update({text:i,target:e}):this.tooltip=acf.newTooltip({text:i,target:e}))},hideTitle:function(t,e){this.tooltip.hide(),e.attr("title",this.tooltip.get("text"))}})}(jQuery),function($,t){var e=[];acf.Field=acf.Model.extend({type:"",eventScope:".acf-field",wait:"ready",setup:function(t){this.$el=t,this.inherit(t),this.inherit(this.$control())},val:function(t){return void 0!==t?this.setValue(t):this.prop("disabled")?null:this.getValue()},getValue:function(){return this.$input().val()},setValue:function(t){return acf.val(this.$input(),t)},__:function(t){return acf._e(this.type,t)},$control:function(){return!1},$input:function(){return this.$("[name]:first")},$inputWrap:function(){return this.$(".acf-input:first")},$labelWrap:function(){return this.$(".acf-label:first")},getInputName:function(){return this.$input().attr("name")||""},parent:function(){var t=this.parents();return!!t.length&&t[0]},parents:function(){var t=this.$el.parents(".acf-field");return acf.getFields(t)},show:function(t,e){var i=acf.show(this.$el,t);return i&&(this.prop("hidden",!1),acf.doAction("show_field",this,e)),i},hide:function(t,e){var i=acf.hide(this.$el,t);return i&&(this.prop("hidden",!0),acf.doAction("hide_field",this,e)),i},enable:function(t,e){var i=acf.enable(this.$el,t);return i&&(this.prop("disabled",!1),acf.doAction("enable_field",this,e)),i},disable:function(t,e){var i=acf.disable(this.$el,t);return i&&(this.prop("disabled",!0),acf.doAction("disable_field",this,e)),i},showEnable:function(t,e){return this.enable.apply(this,arguments),this.show.apply(this,arguments)},hideDisable:function(t,e){return this.disable.apply(this,arguments),this.hide.apply(this,arguments)},showNotice:function(t){"object"!=typeof t&&(t={text:t}),this.notice&&this.notice.remove(),t.target=this.$inputWrap(),this.notice=acf.newNotice(t)},removeNotice:function(t){this.notice&&(this.notice.away(t||0),this.notice=!1)},showError:function(t){this.$el.addClass("acf-error"),void 0!==t&&this.showNotice({text:t,type:"error",dismiss:!1}),acf.doAction("invalid_field",this),this.$el.one("focus change","input, select, textarea",$.proxy(this.removeError,this))},removeError:function(){this.$el.removeClass("acf-error"),this.removeNotice(250),acf.doAction("valid_field",this)},trigger:function(t,e,i){return"invalidField"==t&&(i=!0),acf.Model.prototype.trigger.apply(this,[t,e,i])}}),acf.newField=function(t){var e=t.data("type"),n=i(e),a=acf.models[n]||acf.Field,r=new a(t);return acf.doAction("new_field",r),r};var i=function(t){return acf.strPascalCase(t||"")+"Field"};acf.registerFieldType=function(t){var n=t.prototype,a=n.type,r=i(a);acf.models[r]=t,e.push(a)},acf.getFieldType=function(t){var e=i(t);return acf.models[e]||!1},acf.getFieldTypes=function(t){t=acf.parseArgs(t,{category:""});var i=[];return e.map(function(e){var n=acf.getFieldType(e),a=n.prototype;t.category&&a.category!==t.category||i.push(n)}),i}}(jQuery),function($,t){acf.findFields=function(t){var e=".acf-field",i=!1;return t=acf.parseArgs(t,{key:"",name:"",type:"",is:"",parent:!1,sibling:!1,limit:!1,visible:!1,suppressFilters:!1}),t.suppressFilters||(t=acf.applyFilters("find_fields_args",t)),t.key&&(e+='[data-key="'+t.key+'"]'),t.type&&(e+='[data-type="'+t.type+'"]'),t.name&&(e+='[data-name="'+t.name+'"]'),t.is&&(e+=t.is),t.visible&&(e+=":visible"),i=t.parent?t.parent.find(e):t.sibling?t.sibling.siblings(e):$(e),t.suppressFilters||(i=i.not(".acf-clone .acf-field"),i=acf.applyFilters("find_fields",i)),t.limit&&(i=i.slice(0,t.limit)),i},acf.findField=function(t,e){return acf.findFields({key:t,limit:1,parent:e,suppressFilters:!0})},acf.getField=function(t){t instanceof jQuery||(t=acf.findField(t));var e=t.data("acf");return e||(e=acf.newField(t)),e},acf.getFields=function(t){t instanceof jQuery||(t=acf.findFields(t));var e=[];return t.each(function(){var t=acf.getField($(this));e.push(t)}),e},acf.findClosestField=function(t){return t.closest(".acf-field")},acf.getClosestField=function(t){var e=acf.findClosestField(t);return this.getField(e)};var e=function(t){var e=t,n=t+"_fields",a=t+"_field",r=function(t){var e=acf.arrayArgs(arguments),i=e.slice(1),a=acf.getFields({parent:t});if(a.length){var r=[n,a].concat(i);acf.doAction.apply(null,r)}},o=function(t){var e=acf.arrayArgs(arguments),i=e.slice(1);t.map(function(t,e){var n=[a,t].concat(i);acf.doAction.apply(null,n)})};acf.addAction(e,r),acf.addAction(n,o),i(t)},i=function(t){var e=t+"_field",i=t+"Field",n=function(n){var a=acf.arrayArgs(arguments),o=a.slice(1);["type","name","key"].map(function(t){var i="/"+t+"="+n.get(t);a=[e+i,n].concat(o),acf.doAction.apply(null,a)}),r.indexOf(t)>-1&&n.trigger(i,o)};acf.addAction(e,n)},n=["prepare","ready","load","append","remove","sortstart","sortstop","show","hide","unload"],a=["valid","invalid","enable","disable","new"],r=["remove","sortstart","sortstop","show","hide","unload","valid","invalid","enable","disable"];n.map(e),a.map(i);var o=new acf.Model({id:"fieldsEventManager",events:{'click .acf-field a[href="#"]':"onClick","change .acf-field":"onChange"},onClick:function(t){t.preventDefault()},onChange:function(){$("#_acf_changed").val(1)}})}(jQuery),function($,t){var e=0,i=acf.Field.extend({type:"accordion",wait:"",$control:function(){return this.$(".acf-fields:first")},initialize:function(){if(!this.$el.is("td")){if(this.get("endpoint"))return this.remove();var t=this.$el,i=this.$labelWrap(),n=this.$inputWrap(),a=this.$control(),r=n.children(".description");if(r.length&&i.append(r),this.$el.is("tr")){var o=this.$el.closest("table"),s=$('<div class="acf-accordion-title"/>'),c=$('<div class="acf-accordion-content"/>'),l=$('<table class="'+o.attr("class")+'"/>'),d=$("<tbody/>");s.append(i.html()),l.append(d),c.append(l),n.append(s),n.append(c),i.remove(),a.remove(),n.attr("colspan",2),i=s,n=c,a=d}t.addClass("acf-accordion"),i.addClass("acf-accordion-title"),n.addClass("acf-accordion-content"),e++,this.get("multi_expand")&&t.attr("multi-expand",1);var u=acf.getPreference("this.accordions")||[];void 0!==u[e-1]&&this.set("open",u[e-1]),this.get("open")&&(t.addClass("-open"),n.css("display","block")),i.prepend('<i class="acf-accordion-icon dashicons dashicons-arrow-'+(this.get("open")?"down":"right")+'"></i>');var f=t.parent();a.addClass(f.hasClass("-left")?"-left":""),a.addClass(f.hasClass("-clear")?"-clear":""),a.append(t.nextUntil(".acf-field-accordion",".acf-field")),a.removeAttr("data-open data-multi_expand data-endpoint")}}});acf.registerFieldType(i);var n=new acf.Model({actions:{unload:"onUnload"},events:{"click .acf-accordion-title":"onClick","invalidField .acf-accordion":"onInvalidField"},isOpen:function(t){return t.hasClass("-open")},toggle:function(t){this.isOpen(t)?this.close(t):this.open(t)},open:function(t){t.find(".acf-accordion-content:first").slideDown().css("display","block"),t.find(".acf-accordion-icon:first").removeClass("dashicons-arrow-right").addClass("dashicons-arrow-down"),t.addClass("-open"),acf.doAction("show",t),t.attr("multi-expand")||t.siblings(".acf-accordion.-open").each(function(){n.close($(this))})},close:function(t){t.find(".acf-accordion-content:first").slideUp(),t.find(".acf-accordion-icon:first").removeClass("dashicons-arrow-down").addClass("dashicons-arrow-right"),t.removeClass("-open"),acf.doAction("hide",t)},onClick:function(t,e){t.preventDefault(),this.toggle(e.parent())},onInvalidField:function(t,e){this.busy||(this.busy=!0,this.setTimeout(function(){this.busy=!1},1e3),this.open(e))},onUnload:function(t){var e=[];$(".acf-accordion").each(function(){var t=$(this).hasClass("-open")?1:0;e.push(t)}),e.length&&acf.setPreference("this.accordions",e)}})}(jQuery),function($,t){var e=acf.Field.extend({type:"button_group",events:{'click input[type="radio"]':"onClick"},$control:function(){return this.$(".acf-button-group")},$input:function(){return this.$("input:checked")},setValue:function(t){
2
  this.$('input[value="'+t+'"]').prop("checked",!0).trigger("change")},onClick:function(t,e){var i=e.parent("label"),n=i.hasClass("selected");this.$(".selected").removeClass("selected"),i.addClass("selected"),this.get("allow_null")&&n&&(i.removeClass("selected"),e.prop("checked",!1).trigger("change"))}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"checkbox",events:{"change input":"onChange","click .acf-add-checkbox":"onClickAdd","click .acf-checkbox-toggle":"onClickToggle","click .acf-checkbox-custom":"onClickCustom"},$control:function(){return this.$(".acf-checkbox-list")},$toggle:function(){return this.$(".acf-checkbox-toggle")},$input:function(){return this.$('input[type="hidden"]')},$inputs:function(){return this.$('input[type="checkbox"]').not(".acf-checkbox-toggle")},getValue:function(){var t=[];return this.$(":checked").each(function(){t.push($(this).val())}),!!t.length&&t},onChange:function(t,e){var i=e.prop("checked"),n=this.$toggle();if(i?e.parent().addClass("selected"):e.parent().removeClass("selected"),n.length){0==this.$inputs().not(":checked").length?n.prop("checked",!0):n.prop("checked",!1)}},onClickAdd:function(t,e){var i='<li><input class="acf-checkbox-custom" type="checkbox" checked="checked" /><input type="text" name="'+this.getInputName()+'[]" /></li>';e.parent("li").before(i)},onClickToggle:function(t,e){var i=e.prop("checked");this.$inputs().prop("checked",i)},onClickCustom:function(t,e){var i=e.prop("checked"),n=e.next('input[type="text"]');i?n.prop("disabled",!1):(n.prop("disabled",!0),""==n.val()&&e.parent("li").remove())}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"color_picker",wait:"load",$control:function(){return this.$(".acf-color-picker")},$input:function(){return this.$('input[type="hidden"]')},$inputText:function(){return this.$('input[type="text"]')},initialize:function(){var t=this.$input(),e=this.$inputText(),i=function(i){setTimeout(function(){acf.val(t,e.val())},1)},n={defaultColor:!1,palettes:!0,hide:!0,change:i,clear:i},n=acf.applyFilters("color_picker_args",n,this);e.wpColorPicker(n)}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"date_picker",events:{'blur input[type="text"]':"onBlur"},$control:function(){return this.$(".acf-date-picker")},$input:function(){return this.$('input[type="hidden"]')},$inputText:function(){return this.$('input[type="text"]')},initialize:function(){if(this.has("save_format"))return this.initializeCompatibility();var t=this.$input(),e=this.$inputText(),i={dateFormat:this.get("date_format"),altField:t,altFormat:"yymmdd",changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.get("first_day")};i=acf.applyFilters("date_picker_args",i,this),acf.newDatePicker(e,i),acf.doAction("date_picker_init",e,i,this)},initializeCompatibility:function(){var t=this.$input(),e=this.$inputText();e.val(t.val());var i={dateFormat:this.get("date_format"),altField:t,altFormat:this.get("save_format"),changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.get("first_day")};i=acf.applyFilters("date_picker_args",i,this);var n=i.dateFormat;i.dateFormat=this.get("save_format"),acf.newDatePicker(e,i),e.datepicker("option","dateFormat",n),acf.doAction("date_picker_init",e,i,this)},onBlur:function(){this.$inputText().val()||acf.val(this.$input(),"")}});acf.registerFieldType(e);var i=new acf.Model({priority:5,wait:"ready",initialize:function(){var t=acf.get("locale"),e=acf.get("rtl"),i=acf.get("datePickerL10n");return!!i&&(void 0!==$.datepicker&&(i.isRTL=e,$.datepicker.regional[t]=i,void $.datepicker.setDefaults(i)))}});acf.newDatePicker=function(t,e){if(void 0===$.datepicker)return!1;e=e||{},t.datepicker(e),$("body > #ui-datepicker-div").exists()&&$("body > #ui-datepicker-div").wrap('<div class="acf-ui-datepicker" />')}}(jQuery),function($,t){var e=acf.models.DatePickerField.extend({type:"date_time_picker",$control:function(){return this.$(".acf-date-time-picker")},initialize:function(){var t=this.$input(),e=this.$inputText(),i={dateFormat:this.get("date_format"),timeFormat:this.get("time_format"),altField:t,altFieldTimeOnly:!1,altFormat:"yy-mm-dd",altTimeFormat:"HH:mm:ss",changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.get("first_day"),controlType:"select",oneLine:!0};i=acf.applyFilters("date_time_picker_args",i,this),acf.newDateTimePicker(e,i),acf.doAction("date_time_picker_init",e,i,this)}});acf.registerFieldType(e);var i=new acf.Model({priority:5,wait:"ready",initialize:function(){var t=acf.get("locale"),e=acf.get("rtl"),i=acf.get("dateTimePickerL10n");return!!i&&(void 0!==$.timepicker&&(i.isRTL=e,$.timepicker.regional[t]=i,void $.timepicker.setDefaults(i)))}});acf.newDateTimePicker=function(t,e){if(void 0===$.timepicker)return!1;e=e||{},t.datetimepicker(e),$("body > #ui-datepicker-div").exists()&&$("body > #ui-datepicker-div").wrap('<div class="acf-ui-datepicker" />')}}(jQuery),function($,t){var e=acf.Field.extend({type:"google_map",map:!1,wait:"load",events:{'click a[data-name="clear"]':"onClickClear",'click a[data-name="locate"]':"onClickLocate",'click a[data-name="search"]':"onClickSearch","keydown .search":"onKeydownSearch","keyup .search":"onKeyupSearch","focus .search":"onFocusSearch","blur .search":"onBlurSearch",showField:"onShow"},$control:function(){return this.$(".acf-google-map")},$input:function(t){return this.$('input[data-name="'+(t||"address")+'"]')},$search:function(){return this.$(".search")},$canvas:function(){return this.$(".canvas")},addClass:function(t){this.$control().addClass(t)},removeClass:function(t){this.$control().removeClass(t)},getValue:function(){var t={lat:"",lng:"",address:""};return this.$('input[type="hidden"]').each(function(){t[$(this).data("name")]=$(this).val()}),t.lat&&t.lng||(t=!1),t},setValue:function(t){t=acf.parseArgs(t,{lat:"",lng:"",address:""});for(var e in t)acf.val(this.$input(e),t[e]);t.lat&&t.lng||(t=!1),this.renderVal(t)},renderVal:function(t){t?(this.addClass("-value"),this.setPosition(t.lat,t.lng),this.map.marker.setVisible(!0)):(this.removeClass("-value"),this.map.marker.setVisible(!1)),this.$search().val(t.address)},setPosition:function(t,e){var i=this.newLatLng(t,e);return this.map.marker.setPosition(i),this.map.marker.setVisible(!0),acf.doAction("google_map_change",i,this.map,this),this.center(),this},center:function(){var t=this.map.marker.getPosition(),e=this.get("lat"),i=this.get("lng");t&&(e=t.lat(),i=t.lng());var n=this.newLatLng(e,i);this.map.setCenter(n)},getSearchVal:function(){return this.$search().val()},initialize:function(){if(!i.isReady())return void i.ready(this.initializeMap,this);this.initializeMap()},newLatLng:function(t,e){return new google.maps.LatLng(parseFloat(t),parseFloat(e))},initializeMap:function(){var t=this.get("zoom"),e=this.get("lat"),i=this.get("lng"),n={scrollwheel:!1,zoom:parseInt(t),center:this.newLatLng(e,i),mapTypeId:google.maps.MapTypeId.ROADMAP,marker:{draggable:!0,raiseOnDrag:!0},autocomplete:{}};n=acf.applyFilters("google_map_args",n,this);var a=new google.maps.Map(this.$canvas()[0],n);this.addMapEvents(a,this);var r=acf.parseArgs(n.marker,{draggable:!0,raiseOnDrag:!0,map:a});r=acf.applyFilters("google_map_marker_args",r,this);var o=new google.maps.Marker(r);this.addMarkerEvents(o,this),a.acf=this,a.marker=o,this.map=a,acf.doAction("google_map_init",a,o,this);var s=this.getValue();this.renderVal(s)},addMapEvents:function(t,e){if(acf.isset(window,"google","maps","places","Autocomplete")){var i=t.autocomplete||{},n=new google.maps.places.Autocomplete(this.$search()[0],i);n.bindTo("bounds",t),google.maps.event.addListener(n,"place_changed",function(){var t=this.getPlace();t.address=e.getSearchVal(),e.setPlace(t)})}google.maps.event.addListener(t,"click",function(t){var i=t.latLng.lat(),n=t.latLng.lng();e.searchPosition(i,n)})},addMarkerEvents:function(t,e){google.maps.event.addListener(t,"dragend",function(){var t=this.getPosition(),i=t.lat(),n=t.lng();e.searchPosition(i,n)})},searchPosition:function(t,e){var n=this.newLatLng(t,e),a=this.$control();this.setPosition(t,e),a.addClass("-loading");var r=$.proxy(function(i,n){a.removeClass("-loading");var r="";n!=google.maps.GeocoderStatus.OK?console.log("Geocoder failed due to: "+n):i[0]?r=i[0].formatted_address:console.log("No results found"),this.val({lat:t,lng:e,address:r})},this);i.geocoder.geocode({latLng:n},r)},setPlace:function(t){if(!t)return this;if(t.name&&!t.geometry)return this.searchAddress(t.name),this;var e=t.geometry.location.lat(),i=t.geometry.location.lng(),n=t.address||t.formatted_address;return this.setValue({lat:e,lng:i,address:n}),this},searchAddress:function(t){var e=t.split(",");if(2==e.length){var n=e[0],a=e[1];if($.isNumeric(n)&&$.isNumeric(a))return this.searchPosition(n,a)}var r=this.$control();r.addClass("-loading");var o=this.proxy(function(e,i){r.removeClass("-loading");var n="",a="";i!=google.maps.GeocoderStatus.OK?console.log("Geocoder failed due to: "+i):e[0]?(n=e[0].geometry.location.lat(),a=e[0].geometry.location.lng()):console.log("No results found"),this.val({lat:n,lng:a,address:t})});i.geocoder.geocode({address:t},o)},searchLocation:function(){if(!navigator.geolocation)return alert(acf.__("Sorry, this browser does not support geolocation"));var t=this.$control();t.addClass("-loading");var e=$.proxy(function(e,i){t.removeClass("-loading");var n=e.coords.latitude,a=e.coords.longitude;this.searchPosition(n,a)},this),i=function(e){t.removeClass("-loading")};navigator.geolocation.getCurrentPosition(e,i)},onClickClear:function(t,e){this.val(!1)},onClickLocate:function(t,e){this.searchLocation()},onClickSearch:function(t,e){this.searchAddress(this.$search().val())},onFocusSearch:function(t,e){this.removeClass("-value"),this.onKeyupSearch.apply(this,arguments)},onBlurSearch:function(t,e){this.setTimeout(function(){this.removeClass("-search"),e.val()&&this.addClass("-value")},100)},onKeyupSearch:function(t,e){e.val()?this.addClass("-search"):this.removeClass("-search")},onKeydownSearch:function(t,e){13==t.which&&t.preventDefault()},onMousedown:function(){},onShow:function(){if(!this.map)return!1;this.setTimeout(this.center,10)}});acf.registerFieldType(e);var i=new acf.Model({geocoder:!1,data:{status:!1},getStatus:function(){return this.get("status")},setStatus:function(t){return this.set("status",t)},isReady:function(){if("ready"==this.getStatus())return!0;if("loading"==this.getStatus())return!1;if(acf.isset(window,"google","maps","places"))return this.setStatus("ready"),!0;var t=acf.get("google_map_api");return t&&(this.setStatus("loading"),$.ajax({url:t,dataType:"script",cache:!0,context:this,success:function(){this.setStatus("ready"),this.geocoder=new google.maps.Geocoder,acf.doAction("google_map_api_loaded")}})),!1},ready:function(t,e){acf.addAction("google_map_api_loaded",t,10,e)}})}(jQuery),function($,t){var e=acf.Field.extend({type:"image",$control:function(){return this.$(".acf-image-uploader")},$input:function(){return this.$('input[type="hidden"]')},events:{'click a[data-name="add"]':"onClickAdd",'click a[data-name="edit"]':"onClickEdit",'click a[data-name="remove"]':"onClickRemove",'change input[type="file"]':"onChange"},initialize:function(){"basic"===this.get("uploader")&&this.$el.closest("form").attr("enctype","multipart/form-data")},validateAttachment:function(t){t=t||{},void 0!==t.id&&(t=t.attributes),t=acf.parseArgs(t,{url:"",alt:"",title:"",caption:"",description:"",width:0,height:0});var e=acf.isget(t,"sizes",this.get("preview_size"),"url");return null!==e&&(t.url=e),t},render:function(t){t=this.validateAttachment(t),this.$("img").attr({src:t.url,alt:t.alt,title:t.title});var e=t.id||"";this.val(e),e?this.$control().addClass("has-value"):this.$control().removeClass("has-value")},append:function(t,e){var i=function(t,e){for(var i=acf.getFields({key:t.get("key"),parent:e.$el}),n=0;n<i.length;n++)if(!i[n].val())return i[n];return!1},n=i(this,e);n||(e.$(".acf-button:last").trigger("click"),n=i(this,e)),n&&n.render(t)},selectAttachment:function(){var t=this.parent(),e=t&&"repeater"===t.get("type"),i=acf.newMediaPopup({mode:"select",type:"image",title:acf.__("Select Image"),field:this.get("key"),multiple:e,library:this.get("library"),allowedTypes:this.get("mime_types"),select:$.proxy(function(e,i){i>0?this.append(e,t):this.render(e)},this)})},editAttachment:function(){var t=this.val();if(t)var e=acf.newMediaPopup({mode:"edit",title:acf.__("Edit Image"),button:acf.__("Update Image"),attachment:t,field:this.get("key"),select:$.proxy(function(t,e){this.render(t)},this)})},removeAttachment:function(){this.render(!1)},onClickAdd:function(t,e){this.selectAttachment()},onClickEdit:function(t,e){this.editAttachment()},onClickRemove:function(t,e){this.removeAttachment()},onChange:function(t,e){var i=this.$input();acf.getFileInputData(e,function(t){i.val($.param(t))})}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.models.ImageField.extend({type:"file",$control:function(){return this.$(".acf-file-uploader")},$input:function(){return this.$('input[type="hidden"]')},validateAttachment:function(t){return t=t||{},void 0!==t.id&&(t=t.attributes),t=acf.parseArgs(t,{url:"",alt:"",title:"",filename:"",filesizeHumanReadable:"",icon:"/wp-includes/images/media/default.png"})},render:function(t){t=this.validateAttachment(t),this.$("img").attr({src:t.icon,alt:t.alt,title:t.title}),this.$('[data-name="title"]').text(t.title),this.$('[data-name="filename"]').text(t.filename).attr("href",t.url),this.$('[data-name="filesize"]').text(t.filesizeHumanReadable);var e=t.id||"";acf.val(this.$input(),e),e?this.$control().addClass("has-value"):this.$control().removeClass("has-value")},selectAttachment:function(){var t=this.parent(),e=t&&"repeater"===t.get("type"),i=acf.newMediaPopup({mode:"select",title:acf.__("Select File"),field:this.get("key"),multiple:e,library:this.get("library"),allowedTypes:this.get("mime_types"),select:$.proxy(function(e,i){i>0?this.append(e,t):this.render(e)},this)})},editAttachment:function(){var t=this.val();if(!t)return!1;var e=acf.newMediaPopup({mode:"edit",title:acf.__("Edit File"),button:acf.__("Update File"),attachment:t,field:this.get("key"),select:$.proxy(function(t,e){this.render(t)},this)})}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"link",events:{'click a[data-name="add"]':"onClickEdit",'click a[data-name="edit"]':"onClickEdit",'click a[data-name="remove"]':"onClickRemove","change .link-node":"onChange"},$control:function(){return this.$(".acf-link")},$node:function(){return this.$(".link-node")},getValue:function(){var t=this.$node();return!!t.attr("href")&&{title:t.html(),url:t.attr("href"),target:t.attr("target")}},setValue:function(t){t=acf.parseArgs(t,{title:"",url:"",target:""});var e=this.$control(),i=this.$node();e.removeClass("-value -external"),t.url&&e.addClass("-value"),"_blank"===t.target&&e.addClass("-external"),this.$(".link-title").html(t.title),this.$(".link-url").attr("href",t.url).html(t.url),i.html(t.title),i.attr("href",t.url),i.attr("target",t.target),this.$(".input-title").val(t.title),this.$(".input-target").val(t.target),this.$(".input-url").val(t.url).trigger("change")},onClickEdit:function(t,e){acf.wpLink.open(this.$node())},onClickRemove:function(t,e){this.setValue(!1)},onChange:function(t,e){var i=this.getValue();this.setValue(i)}});acf.registerFieldType(e),acf.wpLink=new acf.Model({getNodeValue:function(){var t=this.get("node");return{title:t.html(),url:t.attr("href"),target:t.attr("target")}},setNodeValue:function(t){var e=this.get("node");e.html(t.title),e.attr("href",t.url),e.attr("target",t.target),e.trigger("change")},getInputValue:function(){return{title:$("#wp-link-text").val(),url:$("#wp-link-url").val(),target:$("#wp-link-target").prop("checked")?"_blank":""}},setInputValue:function(t){$("#wp-link-text").val(t.title),$("#wp-link-url").val(t.url),$("#wp-link-target").prop("checked","_blank"===t.target)},open:function(t){this.on("wplink-open","onOpen"),this.on("wplink-close","onClose"),this.set("node",t);var e=$('<textarea id="acf-link-textarea" style="display:none;"></textarea>');$("body").append(e);var i=this.getNodeValue();wpLink.open("acf-link-textarea",i.url,i.title,null)},onOpen:function(){$("#wp-link-wrap").addClass("has-text-field");var t=this.getNodeValue();this.setInputValue(t)},close:function(){wpLink.close()},onClose:function(){if(!this.has("node"))return!1;this.off("wplink-open"),this.off("wplink-close");var t=this.getInputValue();this.setNodeValue(t),$("#acf-link-textarea").remove(),this.set("node",null)}})}(jQuery),function($,t){var e=acf.Field.extend({type:"oembed",events:{'click [data-name="clear-button"]':"onClickClear","keypress .input-search":"onKeypressSearch","keyup .input-search":"onKeyupSearch","change .input-search":"onChangeSearch"},$control:function(){return this.$(".acf-oembed")},$input:function(){return this.$(".input-value")},$search:function(){return this.$(".input-search")},getValue:function(){return this.$input().val()},getSearchVal:function(){return this.$search().val()},setValue:function(t){t?this.$control().addClass("has-value"):this.$control().removeClass("has-value"),acf.val(this.$input(),t)},showLoading:function(t){acf.showLoading(this.$(".canvas"))},hideLoading:function(){acf.hideLoading(this.$(".canvas"))},maybeSearch:function(){var t=this.val(),e=this.getSearchVal();if(!e)return this.clear();if("http"!=e.substr(0,4)&&(e="http://"+e),e!==t){var i=this.get("timeout");i&&clearTimeout(i);var n=$.proxy(this.search,this,e);this.set("timeout",setTimeout(n,300))}},search:function(t){var e={action:"acf/fields/oembed/search",s:t,field_key:this.get("key")},i=this.get("xhr");i&&i.abort(),this.showLoading();var i=$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(e),type:"post",dataType:"json",context:this,success:function(t){t&&t.html||(t={url:!1,html:""}),this.val(t.url),this.$(".canvas-media").html(t.html)},complete:function(){this.hideLoading()}});this.set("xhr",i)},clear:function(){this.val(""),this.$search().val(""),this.$(".canvas-media").html("")},onClickClear:function(t,e){this.clear()},onKeypressSearch:function(t,e){13==t.which&&(t.preventDefault(),this.maybeSearch())},onKeyupSearch:function(t,e){e.val()&&this.maybeSearch()},onChangeSearch:function(t,e){this.maybeSearch()}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"radio",events:{'click input[type="radio"]':"onClick"},$control:function(){return this.$(".acf-radio-list")},$input:function(){return this.$("input:checked")},$inputText:function(){return this.$('input[type="text"]')},getValue:function(){var t=this.$input().val();return"other"===t&&this.get("other_choice")&&(t=this.$inputText().val()),t},onClick:function(t,e){var i=e.parent("label"),n=i.hasClass("selected"),a=e.val();this.$(".selected").removeClass("selected"),i.addClass("selected"),this.get("allow_null")&&n&&(i.removeClass("selected"),e.prop("checked",!1).trigger("change"),a=!1),this.get("other_choice")&&("other"===a?this.$inputText().prop("disabled",!1):this.$inputText().prop("disabled",!0))}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"range",events:{'input input[type="range"]':"onChange","change input":"onChange"},$input:function(){return this.$('input[type="range"]')},$inputAlt:function(){return this.$('input[type="number"]')},setValue:function(t){this.busy=!0,acf.val(this.$input(),t),acf.val(this.$inputAlt(),t,!0),this.busy=!1},onChange:function(t,e){this.busy||this.setValue(e.val())}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"relationship",events:{"keypress [data-filter]":"onKeypressFilter","change [data-filter]":"onChangeFilter","keyup [data-filter]":"onChangeFilter","click .choices-list .acf-rel-item":"onClickAdd",'click [data-name="remove_item"]':"onClickRemove",mouseover:"onHover"},$control:function(){return this.$(".acf-relationship")},$list:function(t){return this.$("."+t+"-list")},$listItems:function(t){return this.$list(t).find(".acf-rel-item")},$listItem:function(t,e){return this.$list(t).find('.acf-rel-item[data-id="'+e+'"]')},getValue:function(){var t=[];return this.$listItems("values").each(function(){t.push($(this).data("id"))}),!!t.length&&t},newChoice:function(t){return["<li>",'<span data-id="'+t.id+'" class="acf-rel-item">'+t.text+"</span>","</li>"].join("")},newValue:function(t){return["<li>",'<input type="hidden" name="'+this.getInputName()+'[]" value="'+t.id+'" />','<span data-id="'+t.id+'" class="acf-rel-item">'+t.text,'<a href="#" class="acf-icon -minus small dark" data-name="remove_item"></a>',"</span>","</li>"].join("")},addSortable:function(t){this.$list("values").sortable({items:"li",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,update:function(){t.$input().trigger("change")}})},initialize:function(){var t=this.proxy(function(t){if(!this.get("loading")&&this.get("more")){var e=this.$list("choices"),i=Math.ceil(e.scrollTop()),n=Math.ceil(e[0].scrollHeight),a=Math.ceil(e.innerHeight()),r=this.get("paged")||1;i+a>=n&&(this.set("paged",r+1),this.fetch())}});this.$list("choices").scrollTop(0).on("scroll",t),this.fetch()},onHover:function(t){$().off(t),this.addSortable(this)},onKeypressFilter:function(t,e){13==t.which&&t.preventDefault()},onChangeFilter:function(t,e){var i=e.val(),n=e.data("filter");this.get(n)!==i&&(this.set(n,i),this.set("paged",1),e.is("select")?this.fetch():this.maybeFetch())},onClickAdd:function(t,e){var i=this.val(),n=parseInt(this.get("max"));if(e.hasClass("disabled"))return!1;if(n>0&&i&&i.length>=n)return this.showNotice({text:acf.__("Maximum values reached ( {max} values )").replace("{max}",n),type:"warning"}),!1;e.addClass("disabled");var a=this.newValue({id:e.data("id"),text:e.html()});this.$list("values").append(a),this.$input().trigger("change")},onClickRemove:function(t,e){var i=e.parent(),n=i.parent(),a=i.data("id");setTimeout(function(){n.remove()},1),this.$listItem("choices",a).removeClass("disabled"),this.$input().trigger("change")},maybeFetch:function(){var t=this.get("timeout");t&&clearTimeout(t),t=this.setTimeout(this.fetch,300),this.set("timeout",t)},getAjaxData:function(){var t=this.$control().data();for(var e in t)t[e]=this.get(e);return t.action="acf/fields/relationship/query",t.field_key=this.get("key"),t},fetch:function(){var t=this.get("xhr");t&&t.abort();var e=this.getAjaxData(),i=this.$list("choices");1==e.paged&&i.html("");var n=$('<li><i class="acf-loading"></i> '+acf.__("Loading")+"</li>");i.append(n),this.set("loading",!0);var a=function(){this.set("loading",!1),n.remove()},r=function(t){if(!t||!t.results||!t.results.length)return this.set("more",!1),void(1==this.get("paged")&&this.$list("choices").append("<li>"+acf.__("No matches found")+"</li>"));this.set("more",t.more);var e=this.walkChoices(t.results),n=$(e),a=this.val();a&&a.length&&a.map(function(t){n.find('.acf-rel-item[data-id="'+t+'"]').addClass("disabled")}),i.append(n);var r=!1,o=!1;i.find(".acf-rel-label").each(function(){var t=$(this),e=t.siblings("ul");if(r&&r.text()==t.text())return o.append(e.children()),void $(this).parent().remove();r=t,o=e})},t=$.ajax({url:acf.get("ajaxurl"),dataType:"json",type:"post",data:acf.prepareForAjax(e),context:this,success:r,complete:a});this.set("xhr",t)},walkChoices:function(t){var e=function(t){var i="";return $.isArray(t)?t.map(function(t){i+=e(t)}):$.isPlainObject(t)&&(void 0!==t.children?(i+='<li><span class="acf-rel-label">'+t.text+'</span><ul class="acf-bl">',i+=e(t.children),i+="</ul></li>"):i+='<li><span class="acf-rel-item" data-id="'+t.id+'">'+t.text+"</span></li>"),i};return e(t)}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"select",select2:!1,wait:"load",events:{removeField:"onRemove"},$input:function(){return this.$("select")},initialize:function(){var t=this.$input();if(this.inherit(t),this.get("ui")){var e=this.get("ajax_action");e||(e="acf/fields/"+this.get("type")+"/query"),this.select2=acf.newSelect2(t,{field:this,ajax:this.get("ajax"),multiple:this.get("multiple"),placeholder:this.get("placeholder"),allowNull:this.get("allow_null"),ajaxAction:e})}},onRemove:function(){this.select2&&this.select2.destroy()}});acf.registerFieldType(e)}(jQuery),function($,t){var e="tab",i=acf.Field.extend({type:"tab",wait:"",tabs:!1,tab:!1,findFields:function(){return this.$el.nextUntil(".acf-field-tab",".acf-field")},getFields:function(){return acf.getFields(this.findFields())},findTabs:function(){return this.$el.prevAll(".acf-tab-wrap:first")},findTab:function(){return this.$(".acf-tab-button")},initialize:function(){if(this.$el.is("td"))return this.events={},!1;var t=this.findTabs(),e=this.findTab(),i=acf.parseArgs(e.data(),{endpoint:!1,placement:"",before:this.$el});!t.length||i.endpoint?this.tabs=new a(i):this.tabs=t.data("acf"),this.tab=this.tabs.addTab(e,this)},isActive:function(){return this.tab.isActive()},showFields:function(){this.getFields().map(function(t){t.show(this.cid,"tab"),t.hiddenByTab=!1},this)},hideFields:function(){this.getFields().map(function(t){t.hide(this.cid,"tab"),t.hiddenByTab=this.tab},this)},show:function(t){var e=acf.Field.prototype.show.apply(this,arguments);return e&&(this.tab.show(),this.tabs.refresh()),e},hide:function(t){var e=acf.Field.prototype.hide.apply(this,arguments);return e&&(this.tab.hide(),this.isActive()&&this.tabs.reset()),e},enable:function(t){this.getFields().map(function(t){t.enable("tab")})},disable:function(t){this.getFields().map(function(t){t.disable("tab")})}});acf.registerFieldType(i);var n=0,a=acf.Model.extend({tabs:[],active:!1,actions:{refresh:"onRefresh"},data:{before:!1,placement:"top",index:0,initialized:!1},setup:function(t){$.extend(this.data,t),this.tabs=[],this.active=!1;var e=this.get("placement"),i=this.get("before"),a=i.parent();"left"==e&&a.hasClass("acf-fields")&&a.addClass("-sidebar"),i.is("tr")?this.$el=$('<tr class="acf-tab-wrap"><td colspan="2"><ul class="acf-hl acf-tab-group"></ul></td></tr>'):this.$el=$('<div class="acf-tab-wrap -'+e+'"><ul class="acf-hl acf-tab-group"></ul></div>'),i.before(this.$el),this.set("index",n,!0),n++},initializeTabs:function(){var t=this.getVisible().shift(),e=acf.getPreference("this.tabs")||[],i=this.get("index"),n=e[i];this.tabs[n]&&this.tabs[n].isVisible()&&(t=this.tabs[n]),t?this.selectTab(t):this.closeTabs(),this.set("initialized",!0)},getVisible:function(){return this.tabs.filter(function(t){return t.isVisible()})},getActive:function(){return this.active},setActive:function(t){return this.active=t},hasActive:function(){return!1!==this.active},isActive:function(t){var e=this.getActive();return e&&e.cid===t.cid},closeActive:function(){this.hasActive()&&this.closeTab(this.getActive())},openTab:function(t){this.closeActive(),t.open(),this.setActive(t)},closeTab:function(t){t.close(),this.setActive(!1)},closeTabs:function(){this.tabs.map(this.closeTab,this)},selectTab:function(t){this.tabs.map(function(e){t.cid!==e.cid&&this.closeTab(e)},this),this.openTab(t)},addTab:function(t,e){var i=$("<li></li>");i.append(t),this.$("ul").append(i);var n=new r({$el:i,field:e,group:this});return this.tabs.push(n),n},reset:function(){return this.closeActive(),this.refresh()},refresh:function(){if(this.hasActive())return!1;var t=this.getVisible().shift();return t&&this.openTab(t),t},onRefresh:function(){if("left"===this.get("placement")){var t=this.$el.parent(),e=this.$el.children("ul"),i=t.is("td")?"height":"min-height",n=e.position().top+e.outerHeight(!0)-1;t.css(i,n)}}}),r=acf.Model.extend({group:!1,field:!1,events:{"click a":"onClick"},index:function(){return this.$el.index()},isVisible:function(){return acf.isVisible(this.$el)},isActive:function(){return this.$el.hasClass("active")},open:function(){this.$el.addClass("active"),this.field.showFields()},close:function(){this.$el.removeClass("active"),this.field.hideFields()},onClick:function(t,e){t.preventDefault(),this.toggle()},toggle:function(){this.isActive()||this.group.openTab(this)}}),o=new acf.Model({priority:50,actions:{prepare:"render",append:"render",unload:"onUnload",invalid_field:"onInvalidField"},findTabs:function(){return $(".acf-tab-wrap")},getTabs:function(){return acf.getInstances(this.findTabs())},render:function(t){this.getTabs().map(function(t){t.get("initialized")||t.initializeTabs()})},onInvalidField:function(t){this.busy||t.hiddenByTab&&(t.hiddenByTab.toggle(),this.busy=!0,this.setTimeout(function(){this.busy=!1},100))},onUnload:function(){var t=[];this.getTabs().map(function(e){var i=e.hasActive()?e.getActive().index():0;t.push(i)}),t.length&&acf.setPreference("this.tabs",t)}})}(jQuery),function($,t){var e=acf.models.SelectField.extend({type:"post_object"});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.models.SelectField.extend({type:"page_link"});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.models.SelectField.extend({type:"user"});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"taxonomy",data:{ftype:"select"},select2:!1,wait:"load",events:{'click a[data-name="add"]':"onClickAdd",'click input[type="radio"]':"onClickRadio"},$control:function(){return this.$(".acf-taxonomy-field")},$input:function(){return this.getRelatedPrototype().$input.apply(this,arguments)},getRelatedType:function(){var t=this.get("ftype");return"multi_select"==t&&(t="select"),t},getRelatedPrototype:function(){return acf.getFieldType(this.getRelatedType()).prototype},getValue:function(){return this.getRelatedPrototype().getValue.apply(this,arguments)},setValue:function(){return this.getRelatedPrototype().setValue.apply(this,arguments)},initialize:function(){this.getRelatedPrototype().initialize.apply(this,arguments)},onRemove:function(){this.select2&&this.select2.destroy()},onClickAdd:function(t,e){var i=this,n=!1,a=!1,r=!1,o=!1,s=!1,c=!1,l=!1,d=function(t){n.loading(!1),n.content(t),a=n.$("form"),r=n.$('input[name="term_name"]'),o=n.$('select[name="term_parent"]'),s=n.$(".acf-submit-button"),r.focus(),n.on("submit","form",u)},u=function(t,e){if(t.preventDefault(),""===r.val())return r.focus(),!1;acf.startButtonLoading(s);var n={action:"acf/fields/taxonomy/add_term",field_key:i.get("key"),term_name:r.val(),term_parent:o.length?o.val():0};$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(n),type:"post",dataType:"json",success:f})},f=function(t){acf.stopButtonLoading(s),l&&l.remove(),acf.isAjaxSuccess(t)?(r.val(""),h(t.data),l=acf.newNotice({type:"success",text:acf.getAjaxMessage(t),target:a,timeout:2e3,dismiss:!1})):l=acf.newNotice({type:"error",text:acf.getAjaxError(t),target:a,timeout:2e3,dismiss:!1}),r.focus()},h=function(t){var e=$('<option value="'+t.term_id+'">'+t.term_label+"</option>");t.term_parent?o.children('option[value="'+t.term_parent+'"]').after(e):o.append(e),acf.getFields({type:"taxonomy"}).map(function(e){e.get("taxonomy")==i.get("taxonomy")&&e.appendTerm(t)}),i.selectTerm(t.term_id)};!function(){n=acf.newPopup({title:e.attr("title"),loading:!0,width:"300px"});var t={action:"acf/fields/taxonomy/add_term",field_key:i.get("key")};$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(t),type:"post",dataType:"html",success:d})}()},appendTerm:function(t){"select"==this.getRelatedType()?this.appendTermSelect(t):this.appendTermCheckbox(t)},appendTermSelect:function(t){this.select2.addOption({id:t.term_id,text:t.term_label})},appendTermCheckbox:function(t){var e=this.$("[name]:first").attr("name"),i=this.$("ul:first");"checkbox"==this.getRelatedType()&&(e+="[]");var n=$(['<li data-id="'+t.term_id+'">',"<label>",'<input type="'+this.get("ftype")+'" value="'+t.term_id+'" name="'+e+'" /> ',"<span>"+t.term_name+"</span>","</label>","</li>"].join(""));if(t.term_parent){var a=i.find('li[data-id="'+t.term_parent+'"]');i=a.children("ul"),i.exists()||(i=$('<ul class="children acf-bl"></ul>'),a.append(i))}i.append(n)},selectTerm:function(t){if("select"==this.getRelatedType())this.select2.selectOption(t);else{
3
  this.$('input[value="'+t+'"]').prop("checked",!0).trigger("change")}},onClickRadio:function(t,e){var i=e.parent("label"),n=i.hasClass("selected");this.$(".selected").removeClass("selected"),i.addClass("selected"),this.get("allow_null")&&n&&(i.removeClass("selected"),e.prop("checked",!1).trigger("change"))}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.models.DatePickerField.extend({type:"time_picker",$control:function(){return this.$(".acf-time-picker")},initialize:function(){var t=this.$input(),e=this.$inputText(),i={timeFormat:this.get("time_format"),altField:t,altFieldTimeOnly:!1,altTimeFormat:"HH:mm:ss",showButtonPanel:!0,controlType:"select",oneLine:!0,closeText:acf.get("dateTimePickerL10n").selectText,timeOnly:!0};i.onClose=function(t,e,i){var n=e.dpDiv.find(".ui-datepicker-close");!t&&n.is(":hover")&&i._updateDateTime()},i=acf.applyFilters("time_picker_args",i,this),acf.newTimePicker(e,i),acf.doAction("time_picker_init",e,i,this)}});acf.registerFieldType(e),acf.newTimePicker=function(t,e){if(void 0===$.timepicker)return!1;e=e||{},t.timepicker(e),$("body > #ui-datepicker-div").exists()&&$("body > #ui-datepicker-div").wrap('<div class="acf-ui-datepicker" />')}}(jQuery),function($,t){var e=acf.Field.extend({type:"true_false",events:{"change .acf-switch-input":"onChange","focus .acf-switch-input":"onFocus","blur .acf-switch-input":"onBlur","keypress .acf-switch-input":"onKeypress"},$input:function(){return this.$('input[type="checkbox"]')},$switch:function(){return this.$(".acf-switch")},getValue:function(){return this.$input().prop("checked")?1:0},initialize:function(){this.render()},render:function(){var t=this.$switch();if(t.length){var e=t.children(".acf-switch-on"),i=t.children(".acf-switch-off"),n=Math.max(e.width(),i.width());n&&(e.css("min-width",n),i.css("min-width",n))}},switchOn:function(){this.$input().prop("checked",!0),this.$switch().addClass("-on")},switchOff:function(){this.$input().prop("checked",!1),this.$switch().removeClass("-on")},onChange:function(t,e){e.prop("checked")?this.switchOn():this.switchOff()},onFocus:function(t,e){this.$switch().addClass("-focus")},onBlur:function(t,e){this.$switch().removeClass("-focus")},onKeypress:function(t,e){return 37===t.keyCode?this.switchOff():39===t.keyCode?this.switchOn():void 0}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"url",events:{'keyup input[type="url"]':"onkeyup"},$control:function(){return this.$(".acf-input-wrap")},$input:function(){return this.$('input[type="url"]')},initialize:function(){this.render()},isValid:function(){var t=this.val();return!!t&&(-1!==t.indexOf("://")||0===t.indexOf("//"))},render:function(){this.isValid()?this.$control().addClass("-valid"):this.$control().removeClass("-valid")},onkeyup:function(t,e){this.render()}});acf.registerFieldType(e)}(jQuery),function($,t){var e=acf.Field.extend({type:"wysiwyg",wait:"load",events:{"mousedown .acf-editor-wrap.delay":"onMousedown",sortstartField:"disableEditor",sortstopField:"enableEditor",removeField:"disableEditor"},$control:function(){return this.$(".acf-editor-wrap")},$input:function(){return this.$("textarea")},getMode:function(){return this.$control().hasClass("tmce-active")?"visual":"text"},initialize:function(){this.$control().hasClass("delay")||this.initializeEditor()},initializeEditor:function(){var t=this.$control(),e=this.$input(),i={tinymce:!0,quicktags:!0,toolbar:this.get("toolbar"),mode:this.getMode(),field:this},n=e.attr("id"),a=acf.uniqueId("acf-editor-");acf.rename({target:t,search:n,replace:a,destructive:!0}),this.set("id",a,!0),acf.tinymce.initialize(a,i)},onMousedown:function(t){t.preventDefault();var e=this.$control();e.removeClass("delay"),e.find(".acf-editor-toolbar").remove(),this.initializeEditor()},enableEditor:function(){"visual"==this.getMode()&&acf.tinymce.enable(this.get("id"))},disableEditor:function(){acf.tinymce.destroy(this.get("id"))}});acf.registerFieldType(e)}(jQuery),function($,t){var e=[];acf.Condition=acf.Model.extend({type:"",operator:"==",label:"",choiceType:"input",fieldTypes:[],data:{conditions:!1,field:!1,rule:{}},events:{change:"change",keyup:"change",enableField:"change",disableField:"change"},setup:function(t){$.extend(this.data,t)},getEventTarget:function(t,e){return t||this.get("field").$el},change:function(t,e){this.get("conditions").change(t)},match:function(t,e){return!1},calculate:function(){return this.match(this.get("rule"),this.get("field"))},choices:function(t){return'<intput type="text" />'}}),acf.newCondition=function(t,e){var i=e.get("field"),n=i.getField(t.field);if(!i||!n)return!1;var a={rule:t,target:i,conditions:e,field:n},r=n.get("type"),o=t.operator;return new(acf.getConditionTypes({fieldType:r,operator:o})[0]||acf.Condition)(a)};var i=function(t){return acf.strPascalCase(t||"")+"Condition"};acf.registerConditionType=function(t){var n=t.prototype,a=n.type,r=i(a);acf.models[r]=t,e.push(a)},acf.getConditionType=function(t){var e=i(t);return acf.models[e]||!1},acf.registerConditionForFieldType=function(t,e){var i=acf.getConditionType(t);i&&i.prototype.fieldTypes.push(e)},acf.getConditionTypes=function(t){t=acf.parseArgs(t,{fieldType:"",operator:""});var i=[];return e.map(function(e){var n=acf.getConditionType(e),a=n.prototype.fieldTypes,r=n.prototype.operator;t.fieldType&&-1===a.indexOf(t.fieldType)||t.operator&&r!==t.operator||i.push(n)}),i}}(jQuery),function($,t){var e="conditional_logic",i=new acf.Model({id:"conditionsManager",priority:20,actions:{new_field:"onNewField"},onNewField:function(t){t.has("conditions")&&t.getConditions().render()}}),n=function(t,e){var i=acf.getFields({key:e,sibling:t.$el,suppressFilters:!0});return i.length||(i=acf.getFields({key:e,parent:t.$el.parent(),suppressFilters:!0})),!!i.length&&i[0]};acf.Field.prototype.getField=function(t){var e=n(this,t);if(e)return e;for(var i=this.parents(),a=0;a<i.length;a++)if(e=n(i[a],t))return e;return!1},acf.Field.prototype.getConditions=function(){return this.conditions||(this.conditions=new r(this)),this.conditions};var a=!1,r=acf.Model.extend({id:"Conditions",data:{field:!1,timeStamp:!1,groups:[]},setup:function(t){this.data.field=t;var e=t.get("conditions");e instanceof Array?e[0]instanceof Array?e.map(function(t,e){this.addRules(t,e)},this):this.addRules(e):this.addRule(e)},change:function(t){if(this.get("timeStamp")===t.timeStamp)return!1;this.set("timeStamp",t.timeStamp,!0);var e=this.render()},render:function(){return this.calculate()?this.show():this.hide()},show:function(){return this.get("field").showEnable(this.cid,e)},hide:function(){return this.get("field").hideDisable(this.cid,e)},calculate:function(){var t=!1;return this.getGroups().map(function(e){if(!t){e.filter(function(t){return t.calculate()}).length==e.length&&(t=!0)}}),t},hasGroups:function(){return null!=this.data.groups},getGroups:function(){return this.data.groups},addGroup:function(){var t=[];return this.data.groups.push(t),t},hasGroup:function(t){return null!=this.data.groups[t]},getGroup:function(t){return this.data.groups[t]},removeGroup:function(t){return this.data.groups[t].delete,this},addRules:function(t,e){t.map(function(t){this.addRule(t,e)},this)},addRule:function(t,e){e=e||0;var i;i=this.hasGroup(e)?this.getGroup(e):this.addGroup();var n=acf.newCondition(t,this);if(!n)return!1;i.push(n)},hasRule:function(){},getRule:function(t,e){return t=t||0,e=e||0,this.data.groups[e][t]},removeRule:function(){}})}(jQuery),function($,t){var e=acf.__,i=function(t){return t?""+t:""},n=function(t,e){return i(t).toLowerCase()===i(e).toLowerCase()},a=function(t,e){return parseFloat(t)===parseFloat(e)},r=function(t,e){return parseFloat(t)>parseFloat(e)},o=function(t,e){return parseFloat(t)<parseFloat(e)},s=function(t,e){return e=e.map(function(t){return i(t)}),e.indexOf(t)>-1},c=function(t,e){return i(t).indexOf(i(e))>-1},l=function(t,e){var n=new RegExp(i(e),"gi");return i(t).match(n)},d=acf.Condition.extend({type:"hasValue",operator:"!=empty",label:e("Has any value"),fieldTypes:["text","textarea","number","range","email","url","password","image","file","wysiwyg","oembed","select","checkbox","radio","button_group","link","post_object","page_link","relationship","taxonomy","user","google_map","date_picker","date_time_picker","time_picker","color_picker"],match:function(t,e){return!!e.val()},choices:function(t){return'<input type="text" disabled="" />'}});acf.registerConditionType(d);var u=d.extend({type:"hasNoValue",operator:"==empty",label:e("Has no value"),match:function(t,e){return!d.prototype.match.apply(this,arguments)}});acf.registerConditionType(u);var f=acf.Condition.extend({type:"equalTo",operator:"==",label:e("Value is equal to"),fieldTypes:["text","textarea","number","range","email","url","password"],match:function(t,e){return $.isNumeric(t.value)?a(t.value,e.val()):n(t.value,e.val())},choices:function(t){return'<input type="text" />'}});acf.registerConditionType(f);var h=f.extend({type:"notEqualTo",operator:"!=",label:e("Value is not equal to"),match:function(t,e){return!f.prototype.match.apply(this,arguments)}});acf.registerConditionType(h);var p=acf.Condition.extend({type:"patternMatch",operator:"==pattern",label:e("Value matches pattern"),fieldTypes:["text","textarea","email","url","password","wysiwyg"],match:function(t,e){return l(e.val(),t.value)},choices:function(t){return'<input type="text" placeholder="[a-z0-9]" />'}});acf.registerConditionType(p);var g=acf.Condition.extend({type:"contains",operator:"==contains",label:e("Value contains"),fieldTypes:["text","textarea","number","email","url","password","wysiwyg","oembed","select"],match:function(t,e){return c(e.val(),t.value)},choices:function(t){return'<input type="text" />'}});acf.registerConditionType(g);var m=f.extend({type:"trueFalseEqualTo",choiceType:"select",fieldTypes:["true_false"],choices:function(t){return[{id:1,text:e("Checked")}]}});acf.registerConditionType(m);var v=h.extend({type:"trueFalseNotEqualTo",choiceType:"select",fieldTypes:["true_false"],choices:function(t){return[{id:1,text:e("Checked")}]}});acf.registerConditionType(v);var y=acf.Condition.extend({type:"selectEqualTo",operator:"==",label:e("Value is equal to"),fieldTypes:["select","checkbox","radio","button_group"],match:function(t,e){var i=e.val();return i instanceof Array?s(t.value,i):n(t.value,i)},choices:function(t){var i=[],n=t.$setting("choices textarea").val().split("\n");return t.$input("allow_null").prop("checked")&&i.push({id:"",text:e("Null")}),n.map(function(t){t=t.split(":"),t[1]=t[1]||t[0],i.push({id:$.trim(t[0]),text:$.trim(t[1])})}),i}});acf.registerConditionType(y);var b=y.extend({type:"selectNotEqualTo",operator:"!=",label:e("Value is not equal to"),match:function(t,e){return!y.prototype.match.apply(this,arguments)}});acf.registerConditionType(b);var x=acf.Condition.extend({type:"greaterThan",operator:">",label:e("Value is greater than"),fieldTypes:["number","range"],match:function(t,e){var i=e.val();return i instanceof Array&&(i=i.length),r(i,t.value)},choices:function(t){return'<input type="number" />'}});acf.registerConditionType(x);var _=x.extend({type:"lessThan",operator:"<",label:e("Value is less than"),match:function(t,e){var i=e.val();return i instanceof Array&&(i=i.length),o(i,t.value)},choices:function(t){return'<input type="number" />'}});acf.registerConditionType(_);var w=x.extend({type:"selectionGreaterThan",label:e("Selection is greater than"),fieldTypes:["checkbox","select","post_object","page_link","relationship","taxonomy","user"]});acf.registerConditionType(w);var k=_.extend({type:"selectionLessThan",label:e("Selection is less than"),fieldTypes:["checkbox","select","post_object","page_link","relationship","taxonomy","user"]});acf.registerConditionType(k)}(jQuery),function($,t){acf.newMediaPopup=function(t){var e=null,t=acf.parseArgs(t,{mode:"select",title:"",button:"",type:"",field:!1,allowedTypes:"",library:"all",multiple:!1,attachment:0,autoOpen:!0,open:function(){},select:function(){},close:function(){}});return e="edit"==t.mode?new acf.models.EditMediaPopup(t):new acf.models.SelectMediaPopup(t),t.autoOpen&&setTimeout(function(){e.open()},1),acf.doAction("new_media_popup",e),e};var e=function(){var t=acf.get("post_id");return $.isNumeric(t)?t:0};acf.getMimeTypes=function(){return this.get("mimeTypes")},acf.getMimeType=function(t){var e=acf.getMimeTypes();if(void 0!==e[t])return e[t];for(var i in e)if(-1!==i.indexOf(t))return e[i];return!1};var i=acf.Model.extend({id:"MediaPopup",data:{},defaults:{},frame:!1,setup:function(t){$.extend(this.data,t)},initialize:function(){var t=this.getFrameOptions();this.addFrameStates(t);var e=wp.media(t);e.acf=this,this.addFrameEvents(e,t),this.frame=e},open:function(){this.frame.open()},close:function(){this.frame.close()},remove:function(){this.frame.detach(),this.frame.remove()},getFrameOptions:function(){var t={title:this.get("title"),multiple:this.get("multiple"),library:{},states:[]};return this.get("type")&&(t.library.type=this.get("type")),"uploadedTo"===this.get("library")&&(t.library.uploadedTo=e()),this.get("attachment")&&(t.library.post__in=[this.get("attachment")]),this.get("button")&&(t.button={text:this.get("button")}),t},addFrameStates:function(t){var e=wp.media.query(t.library);this.get("field")&&acf.isset(e,"mirroring","args")&&(e.mirroring.args._acfuploader=this.get("field")),t.states.push(new wp.media.controller.Library({library:e,multiple:this.get("multiple"),title:this.get("title"),priority:20,filterable:"all",editable:!0,allowLocalEdits:!0})),acf.isset(wp,"media","controller","EditImage")&&t.states.push(new wp.media.controller.EditImage)},addFrameEvents:function(t,e){t.on("open",function(){this.$el.closest(".media-modal").addClass("acf-media-modal -"+this.acf.get("mode"))},t),t.on("content:render:edit-image",function(){var t=this.state().get("image"),e=new wp.media.view.EditImage({model:t,controller:this}).render();this.content.set(e),e.loadEditor()},t),t.on("select",function(){var e=t.state().get("selection");e&&e.each(function(e,i){t.acf.get("select").apply(t.acf,[e,i])})}),t.on("close",function(){setTimeout(function(){t.acf.get("close").apply(t.acf),t.acf.remove()},1)})}});acf.models.SelectMediaPopup=i.extend({id:"SelectMediaPopup",setup:function(t){t.button||(t.button=acf._x("Select","verb")),i.prototype.setup.apply(this,arguments)},addFrameEvents:function(t,e){acf.isset(_wpPluploadSettings,"defaults","multipart_params")&&(_wpPluploadSettings.defaults.multipart_params._acfuploader=this.get("field"),t.on("open",function(){delete _wpPluploadSettings.defaults.multipart_params._acfuploader})),t.on("content:activate:browse",function(){var e=!1;try{e=t.content.get().toolbar}catch(t){return void console.log(t)}t.acf.customizeFilters.apply(t.acf,[e])}),i.prototype.addFrameEvents.apply(this,arguments)},customizeFilters:function(t){var e=t.get("filters");if("image"==this.get("type")&&(e.filters.all.text=acf.__("All images"),delete e.filters.audio,delete e.filters.video,delete e.filters.image,$.each(e.filters,function(t,e){e.props.type=e.props.type||"image"})),this.get("allowedTypes")){this.get("allowedTypes").split(" ").join("").split(".").join("").split(",").map(function(t){var i=acf.getMimeType(t);if(i){var n={text:i,props:{status:null,type:i,uploadedTo:null,orderby:"date",order:"DESC"},priority:20};e.filters[i]=n}})}if("uploadedTo"===this.get("library")){var i=this.frame.options.library.uploadedTo;delete e.filters.unattached,delete e.filters.uploaded,$.each(e.filters,function(t,e){e.text+=" ("+acf.__("Uploaded to this post")+")",e.props.uploadedTo=i})}var n=this.get("field");$.each(e.filters,function(t,e){e.props._acfuploader=n}),t.get("search").model.attributes._acfuploader=n,e.renderFilters&&e.renderFilters()}}),acf.models.EditMediaPopup=i.extend({id:"SelectMediaPopup",setup:function(t){t.button||(t.button=acf._x("Update","verb")),i.prototype.setup.apply(this,arguments)},addFrameEvents:function(t,e){t.on("open",function(){this.$el.closest(".media-modal").addClass("acf-expanded"),"browse"!=this.content.mode()&&this.content.mode("browse");var e=this.state(),i=e.get("selection"),n=wp.media.attachment(t.acf.get("attachment"));i.add(n)},t),i.prototype.addFrameEvents.apply(this,arguments)}});var n=new acf.Model({id:"customizePrototypes",wait:"ready",initialize:function(){if(acf.isset(window,"wp","media","view")){var t=e();t&&acf.isset(wp,"media","view","settings","post")&&(wp.media.view.settings.post.id=t),this.customizeAttachmentsRouter(),this.customizeAttachmentFilters(),this.customizeAttachmentCompat(),this.customizeAttachmentLibrary()}},customizeAttachmentsRouter:function(){if(acf.isset(wp,"media","view","Router")){var t=wp.media.view.Router;wp.media.view.Router=t.extend({addExpand:function(){var t=$(['<a href="#" class="acf-expand-details">','<span class="is-closed"><span class="acf-icon -left small grey"></span>'+acf.__("Expand Details")+"</span>",'<span class="is-open"><span class="acf-icon -right small grey"></span>'+acf.__("Collapse Details")+"</span>","</a>"].join(""));t.on("click",function(t){t.preventDefault();var e=$(this).closest(".media-modal");e.hasClass("acf-expanded")?e.removeClass("acf-expanded"):e.addClass("acf-expanded")}),this.$el.append(t)},initialize:function(){return t.prototype.initialize.apply(this,arguments),this.addExpand(),this}})}},customizeAttachmentFilters:function(){if(acf.isset(wp,"media","view","AttachmentFilters","All")){wp.media.view.AttachmentFilters.All.prototype.renderFilters=function(){this.$el.html(_.chain(this.filters).map(function(t,e){return{el:$("<option></option>").val(e).html(t.text)[0],priority:t.priority||50}},this).sortBy("priority").pluck("el").value())}}},customizeAttachmentCompat:function(){if(acf.isset(wp,"media","view","AttachmentCompat")){var t=wp.media.view.AttachmentCompat,e=!1;wp.media.view.AttachmentCompat=t.extend({render:function(){return this.rendered?this:(t.prototype.render.apply(this,arguments),this.$("#acf-form-data").length?(clearTimeout(e),e=setTimeout($.proxy(function(){this.rendered=!0,acf.doAction("append",this.$el)},this),50),this):this)}})}},customizeAttachmentLibrary:function(){if(acf.isset(wp,"media","view","Attachment","Library")){var t=wp.media.view.Attachment.Library;wp.media.view.Attachment.Library=t.extend({render:function(){var e=acf.isget(this,"controller","acf"),i=acf.isget(this,"model","attributes");if(e&&i){i.acf_errors&&this.$el.addClass("acf-disabled");var n=e.get("selected");n&&n.indexOf(i.id)>-1&&this.$el.addClass("acf-selected")}return t.prototype.render.apply(this,arguments)},toggleSelection:function(e){var i=this.collection,n=this.options.selection,a=this.model,r=n.single(),o=this.controller,s=acf.isget(this,"model","attributes","acf_errors"),c=o.$el.find(".media-frame-content .media-sidebar");if(c.children(".acf-selection-error").remove(),c.children().removeClass("acf-hidden"),o&&s){var l=acf.isget(this,"model","attributes","filename");return c.children().addClass("acf-hidden"),c.prepend(['<div class="acf-selection-error">','<span class="selection-error-label">'+acf.__("Restricted")+"</span>",'<span class="selection-error-filename">'+l+"</span>",'<span class="selection-error-message">'+s+"</span>","</div>"].join("")),n.reset(),void n.single(a)}return t.prototype.toggleSelection.apply(this,arguments)}})}}})}(jQuery),function($,t){acf.screen=new acf.Model({active:!0,xhr:!1,timeout:!1,wait:"load",events:{"change #page_template":"onChange","change #parent_id":"onChange","change #post-formats-select":"onChange","change .categorychecklist":"onChange","change .tagsdiv":"onChange",'change .acf-taxonomy-field[data-save="1"]':"onChange","change #product-type":"onChange"},initialize:function(){},isPost:function(){return"post"===acf.get("screen")},isUser:function(){return"user"===acf.get("screen")},isTaxonomy:function(){return"taxonomy"===acf.get("screen")},isAttachment:function(){return"attachment"===acf.get("screen")},isNavMenu:function(){return"nav_menu"===acf.get("screen")},isWidget:function(){return"widget"===acf.get("screen")},isComment:function(){return"comment"===acf.get("screen")},getPageTemplate:function(){var t=$("#page_template");return t.length?t.val():null},getPageParent:function(t,e){var e=$("#parent_id");return e.length?e.val():null},getPageType:function(t,e){return this.getPageParent()?"child":"parent"},getPostFormat:function(t,e){var e=$("#post-formats-select input:checked");if(e.length){var i=e.val();return"0"==i?"standard":i}return null},getPostTerms:function(){var t={},e=acf.serialize($(".categorydiv, .tagsdiv"));e.tax_input&&(t=e.tax_input),e.post_category&&(t.category=e.post_category);for(var i in t)acf.isArray(t[i])||(t[i]=t[i].split(", "));acf.getFields({type:"taxonomy"}).map(function(e){if(e.get("save")){var i=e.val(),n=e.get("taxonomy");i&&(t[n]=t[n]||[],i=acf.isArray(i)?i:[i],t[n]=t[n].concat(i))}}),null!==(productType=this.getProductType())&&(t.product_type=[productType]);for(var i in t)t[i]=acf.uniqueArray(t[i]);return t},getProductType:function(){var t=$("#product-type");return t.length?t.val():null},check:function(){if("post"===acf.get("screen")){this.xhr&&this.xhr.abort();var t=acf.parseArgs(this.data,{action:"acf/ajax/check_screen",screen:acf.get("screen"),exclude:[]});this.isPost()&&(t.post_id=acf.get("post_id")),null!==(pageTemplate=this.getPageTemplate())&&(t.page_template=pageTemplate),null!==(pageParent=this.getPageParent())&&(t.page_parent=pageParent),null!==(pageType=this.getPageType())&&(t.page_type=pageType),null!==(postFormat=this.getPostFormat())&&(t.post_format=postFormat),null!==(postTerms=this.getPostTerms())&&(t.post_terms=postTerms),$(".acf-postbox").not(".acf-hidden").each(function(){t.exclude.push($(this).attr("id").substr(4))});var e=function(t){acf.isAjaxSuccess(t)&&($(".acf-postbox").addClass("acf-hidden"),$(".acf-postbox-toggle").addClass("acf-hidden"),$("#acf-style").html(""),t.data.map(function(t,e){var i=$("#acf-"+t.key),n=$("#acf-"+t.key+"-hide"),a=n.parent();i.removeClass("acf-hidden hide-if-js").show(),a.removeClass("acf-hidden hide-if-js").show(),n.prop("checked",!0);var r=i.find(".acf-replace-with-fields");r.exists()&&(r.replaceWith(t.html),acf.doAction("append",i)),0===e&&$("#acf-style").html(t.style),acf.enable(i,"postbox")}))},i=function(t){$(".acf-postbox.acf-hidden").each(function(){acf.disable($(this),"postbox")})};this.xhr=$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(t),type:"post",dataType:"json",context:this,success:e,complete:i})}},onChange:function(t,e){this.setTimeout(this.check,1)}})}(jQuery),function($,t){function e(){return acf.isset(window,"jQuery","fn","select2","amd")?4:!!acf.isset(window,"Select2")&&3}acf.newSelect2=function(t,i){if(i=acf.parseArgs(i,{allowNull:!1,placeholder:"",multiple:!1,field:!1,ajax:!1,ajaxAction:"",ajaxData:function(t){return t},ajaxResults:function(t){return t}}),4==e())var r=new n(t,i);else var r=new a(t,i);return acf.doAction("new_select2",r),r};var i=acf.Model.extend({setup:function(t,e){$.extend(this.data,e),this.$el=t},initialize:function(){},selectOption:function(t){var e=this.getOption(t);e.prop("selected")||e.prop("selected",!0).trigger("change")},unselectOption:function(t){var e=this.getOption(t);e.prop("selected")&&e.prop("selected",!1).trigger("change")},getOption:function(t){return this.$('option[value="'+t+'"]')},addOption:function(t){t=acf.parseArgs(t,{id:"",text:"",selected:!1});var e=this.getOption(t.id);return e.length||(e=$("<option></option>"),e.html(t.text),e.attr("value",t.id),e.prop("selected",t.selected),this.$el.append(e)),e},getValue:function(){var t=[],e=this.$el.find("option:selected");return e.exists()?(e=e.sort(function(t,e){return+t.getAttribute("data-i")-+e.getAttribute("data-i")}),e.each(function(){var e=$(this);t.push({$el:e,id:e.attr("value"),text:e.text()})}),t):t},mergeOptions:function(){},getChoices:function(){var t=function(e){var i=[];return e.children().each(function(){var e=$(this);e.is("optgroup")?i.push({text:e.attr("label"),children:t(e)}):i.push({id:e.attr("value"),text:e.text()})}),i};return t(this.$el)},decodeChoices:function(t){var e=function(t){return t.map(function(t){return t.text=acf.decode(t.text),t.children&&(t.children=e(t.children)),t}),t};return e(t)},getAjaxData:function(t){var e={action:this.get("ajaxAction"),s:t.term||"",paged:t.page||1},i=this.get("field");i&&(e.field_key=i.get("key"));var n=this.get("ajaxData");return n&&(e=n.apply(this,[e,t])),e=acf.applyFilters("select2_ajax_data",e,this.data,this.$el,i||!1,this),acf.prepareForAjax(e)},getAjaxResults:function(t,e){t=acf.parseArgs(t,{results:!1,more:!1}),t.results&&(t.results=this.decodeChoices(t.results));var i=this.get("ajaxResults");return i&&(t=i.apply(this,[t,e])),t=acf.applyFilters("select2_ajax_results",t,e,this)},processAjaxResults:function(t,e){var t=this.getAjaxResults(t,e);return t.more&&(t.pagination={more:!0}),setTimeout($.proxy(this.mergeOptions,this),1),t},destroy:function(){this.$el.data("select2")&&this.$el.select2("destroy"),this.$el.siblings(".select2-container").remove()}}),n=i.extend({initialize:function(){var t=this.$el,e={width:"100%",allowClear:this.get("allowNull"),placeholder:this.get("placeholder"),multiple:this.get("multiple"),data:[],escapeMarkup:function(t){return t}};e.multiple&&this.getValue().map(function(e){e.$el.detach().appendTo(t)}),t.removeData("ajax"),t.removeAttr("data-ajax"),this.get("ajax")&&(e.ajax={url:acf.get("ajaxurl"),delay:250,dataType:"json",type:"post",cache:!1,data:$.proxy(this.getAjaxData,this),processResults:$.proxy(this.processAjaxResults,this)});var i=this.get("field");e=acf.applyFilters("select2_args",e,t,this.data,i||!1,this),t.select2(e);var n=t.next(".select2-container");if(e.multiple){var a=n.find("ul");a.sortable({stop:function(e){a.find(".select2-selection__choice").each(function(){$($(this).data("data").element).detach().appendTo(t)}),t.trigger("change")}}),t.on("select2:select",this.proxy(function(t){this.getOption(t.params.data.id).detach().appendTo(this.$el)}))}n.addClass("-acf"),acf.doAction("select2_init",t,e,this.data,i||!1,this)},mergeOptions:function(){var t=!1,e=!1;$('.select2-results__option[role="group"]').each(function(){var i=$(this).children("ul"),n=$(this).children("strong");if(e&&e.text()===n.text())return t.append(i.children()),void $(this).remove();t=i,e=n})}}),a=i.extend({initialize:function(){var t=this.$el,e=this.getValue(),i=this.get("multiple"),n={width:"100%",allowClear:this.get("allowNull"),placeholder:this.get("placeholder"),separator:"||",multiple:this.get("multiple"),data:this.getChoices(),escapeMarkup:function(t){return t},dropdownCss:{"z-index":"999999999"},initSelection:function(t,n){n(i?e:e.shift())}},a=t.siblings("input");a.length||(a=$('<input type="hidden" />'),t.before(a)),inputValue=e.map(function(t){return t.id}).join("||"),a.val(inputValue),n.multiple&&e.map(function(e){e.$el.detach().appendTo(t)}),n.allowClear&&(n.data=n.data.filter(function(t){return""!==t.id})),t.removeData("ajax"),t.removeAttr("data-ajax"),this.get("ajax")&&(n.ajax={url:acf.get("ajaxurl"),quietMillis:250,dataType:"json",type:"post",cache:!1,data:$.proxy(this.getAjaxData,this),results:$.proxy(this.processAjaxResults,this)});var r=this.get("field");n=acf.applyFilters("select2_args",n,t,this.data,r||!1,this),a.select2(n);var o=a.select2("container"),s=$.proxy(this.getOption,this);if(n.multiple){var c=o.find("ul");c.sortable({stop:function(){c.find(".select2-search-choice").each(function(){var e=$(this).data("select2Data");s(e.id).detach().appendTo(t)}),t.trigger("change")}})}a.on("select2-selecting",function(e){var i=e.choice,n=s(i.id);n.length||(n=$('<option value="'+i.id+'">'+i.text+"</option>")),n.detach().appendTo(t)}),o.addClass("-acf"),acf.doAction("select2_init",t,n,this.data,r||!1,this),a.on("change",function(){var e=a.val();e.indexOf("||")&&(e=e.split("||")),t.val(e).trigger("change")}),t.hide()},mergeOptions:function(){var t=!1,e=!1;$("#select2-drop .select2-result-with-children").each(function(){var i=$(this).children("ul"),n=$(this).children(".select2-result-label");if(e&&e.text()===n.text())return e.append(i.children()),void $(this).remove();t=i,e=n})},getAjaxData:function(t,e){var n={term:t,page:e};return i.prototype.getAjaxData.apply(this,[n])}}),r=new acf.Model({priority:5,wait:"prepare",initialize:function(){var t=acf.get("locale"),i=acf.get("rtl"),n=acf.get("select2L10n"),a=e();return!!n&&(0!==t.indexOf("en")&&void(4==a?this.addTranslations4():3==a&&this.addTranslations3()))},addTranslations4:function(){var t=acf.get("select2L10n"),e=acf.get("locale");e=e.replace("_","-");var i={errorLoading:function(){return t.load_fail},inputTooLong:function(e){var i=e.input.length-e.maximum;return i>1?t.input_too_long_n.replace("%d",i):t.input_too_long_1},inputTooShort:function(e){var i=e.minimum-e.input.length;return i>1?t.input_too_short_n.replace("%d",i):t.input_too_short_1},loadingMore:function(){return t.load_more},maximumSelected:function(e){var i=e.maximum;return i>1?t.selection_too_long_n.replace("%d",i):t.selection_too_long_1},noResults:function(){return t.matches_0},searching:function(){return t.searching}};jQuery.fn.select2.amd.define("select2/i18n/"+e,[],function(){return i})},addTranslations3:function(){var t=acf.get("select2L10n"),e=acf.get("locale");e=e.replace("_","-");var i={formatMatches:function(e){return e>1?t.matches_n.replace("%d",e):t.matches_1},formatNoMatches:function(){return t.matches_0},formatAjaxError:function(){return t.load_fail},formatInputTooShort:function(e,i){var n=i-e.length;return n>1?t.input_too_short_n.replace("%d",n):t.input_too_short_1},formatInputTooLong:function(e,i){var n=e.length-i;return n>1?t.input_too_long_n.replace("%d",n):t.input_too_long_1},formatSelectionTooBig:function(e){return e>1?t.selection_too_long_n.replace("%d",e):t.selection_too_long_1},formatLoadMore:function(){return t.load_more},formatSearching:function(){return t.searching}};$.fn.select2.locales=$.fn.select2.locales||{},$.fn.select2.locales[e]=i,$.extend($.fn.select2.defaults,i)}})}(jQuery),function($,t){acf.tinymce={defaults:function(){return"undefined"!=typeof tinyMCEPreInit&&{tinymce:tinyMCEPreInit.mceInit.acf_content,quicktags:tinyMCEPreInit.qtInit.acf_content}},initialize:function(t,e){e=acf.parseArgs(e,{tinymce:!0,quicktags:!0,toolbar:"full",mode:"visual",field:!1}),e.tinymce&&this.initializeTinymce(t,e),e.quicktags&&this.initializeQuicktags(t,e)},initializeTinymce:function(t,e){var i=$("#"+t),n=this.defaults(),a=acf.get("toolbars"),r=e.field||!1,o=r.$el||!1;if("undefined"==typeof tinymce)return!1;if(!n)return!1;if(tinymce.get(t))return this.enable(t);var s=$.extend({},n.tinymce,e.tinymce);s.id=t,s.selector="#"+t;var c=e.toolbar;if(c&&a&&a[c])for(var l=1;l<=4;l++)s["toolbar"+l]=a[c][l]||"";if(s.setup=function(e){e.on("change",function(t){e.save(),i.trigger("change")}),$(e.getWin()).on("unload",function(){acf.tinymce.remove(t)})},s.wp_autoresize_on=!1,s=acf.applyFilters("wysiwyg_tinymce_settings",s,t,r),tinyMCEPreInit.mceInit[t]=s,"visual"==e.mode){var d=tinymce.init(s),u=tinymce.get(t);if(!u)return!1;u.acf=e.field,acf.doAction("wysiwyg_tinymce_init",u,u.id,s,r)}},initializeQuicktags:function(t,e){var i=this.defaults();if("undefined"==typeof quicktags)return!1;if(!i)return!1;var n=$.extend({},i.quicktags,e.quicktags);n.id=t;var a=e.field||!1,r=a.$el||!1;n=acf.applyFilters("wysiwyg_quicktags_settings",n,n.id,a),tinyMCEPreInit.qtInit[t]=n;var o=quicktags(n);if(!o)return!1;this.buildQuicktags(o),acf.doAction("wysiwyg_quicktags_init",o,o.id,n,a)},buildQuicktags:function(t){var e,i,n,a,r,t,o,s,c,l,d=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,";e=t.canvas,i=t.name,n=t.settings,r="",a={},c="",l=t.id,n.buttons&&(c=","+n.buttons+",");for(s in edButtons)edButtons[s]&&(o=edButtons[s].id,c&&-1!==d.indexOf(","+o+",")&&-1===c.indexOf(","+o+",")||edButtons[s].instance&&edButtons[s].instance!==l||(a[o]=edButtons[s],edButtons[s].html&&(r+=edButtons[s].html(i+"_"))));c&&-1!==c.indexOf(",dfw,")&&(a.dfw=new QTags.DFWButton,r+=a.dfw.html(i+"_")),
4
+ "rtl"===document.getElementsByTagName("html")[0].dir&&(a.textdirection=new QTags.TextDirectionButton,r+=a.textdirection.html(i+"_")),t.toolbar.innerHTML=r,t.theButtons=a,"undefined"!=typeof jQuery&&jQuery(document).triggerHandler("quicktags-init",[t])},disable:function(t){this.destroyTinymce(t)},remove:function(t){this.destroyTinymce(t)},destroy:function(t){this.destroyTinymce(t)},destroyTinymce:function(t){if("undefined"==typeof tinymce)return!1;var e=tinymce.get(t);return!!e&&(e.save(),e.destroy(),!0)},enable:function(t){this.enableTinymce(t)},enableTinymce:function(t){return"undefined"!=typeof switchEditors&&(void 0!==tinyMCEPreInit.mceInit[t]&&(switchEditors.go(t,"tmce"),!0))}};var e=new acf.Model({priority:5,actions:{prepare:"onPrepare",ready:"onReady"},onPrepare:function(){var t=$("#acf-hidden-wp-editor");t.exists()&&t.appendTo("body")},onReady:function(){acf.isset(window,"tinymce","on")&&tinymce.on("AddEditor",function(t){var e=t.editor;"acf"===e.id.substr(0,3)&&(e=tinymce.editors.content||e,tinymce.activeEditor=e,wpActiveEditor=e.id)})}})}(jQuery),function($,t){acf.validation=new acf.Model({active:!0,ignore:!1,errors:[],form:!1,wait:"prepare",actions:{ready:"addInputEvents",append:"addInputEvents"},events:{'click input[type="submit"]':"onClickSubmit",'click button[type="submit"]':"onClickSubmit","click #save-post":"onClickSave","submit form":"onSubmit"},initialize:function(){acf.get("validation")||(this.disable(),this.actions={},this.events={})},getForm:function(t){var i=t.data("acf");return i||(i=new e(t)),this.form=i,i},enable:function(){this.active=!0},disable:function(){this.active=!1},pass:function(){this.ignore=!0,this.setTimeout(function(){this.ignore=!1},100)},reset:function(){this.ignore=!1,this.errors=[],this.form=!1},getErrors:function(){return this.errors},hasErrors:function(){return this.errors.length},addErrors:function(t){t.map(this.addError,this)},addError:function(t){this.errors.push(t)},getFieldErrors:function(){var t=[],e=[];return this.getErrors().map(function(i){if(i.input){var n=e.indexOf(i.input);n>-1?t[n]=i:(t.push(i),e.push(i.input))}}),t},getGlobalErrors:function(){return this.getErrors().filter(function(t){return!t.input})},showErrors:function(t){if(this.hasErrors()){var e=this.getForm(t),i=this.getFieldErrors(),n=this.getGlobalErrors(),a=0,r=!1;i.map(function(e){var i=t.find('[name="'+e.input+'"]').first();if(i.exists()||(i=t.find('[name^="'+e.input+'"]').first()),i.exists()){a++;var n=acf.getClosestField(i);n.showError(e.message),r||(r=n.$el)}},this);var o=acf.__("Validation failed");1==a?o+=". "+acf.__("1 field requires attention"):a>1&&(o+=". "+acf.__("%d fields require attention").replace("%d",a)),e.notice?e.notice.update({type:"error",text:o}):e.notice=acf.newNotice({type:"error",text:o,target:t}),r||(r=e.notice.$el),setTimeout(function(){$("html, body").animate({scrollTop:r.offset().top-$(window).height()/2},500)},10)}},fetch:function(t){if(!this.busy){this.busy=1,t=acf.parseArgs(t,{form:!1,event:!1,lock:!0,loading:function(){},complete:function(){},failure:function(){},success:function(t){t.submit()}});var e=t.form,i=this.getForm(e);if(t.event){var n=$.Event(null,t.event);t.success=function(){acf.enableSubmit($(n.target)).trigger(n)}}acf.doAction("validation_begin",e);var a=acf.serialize(e);a.action="acf/validate_save_post",this.lockForm(e),t.loading(e);var r=function(t){acf.isAjaxSuccess(t)&&(a=acf.applyFilters("validation_complete",t.data,e),a.valid||this.addErrors(a.errors))},o=function(){this.busy=0,this.unlockForm(e),this.hasErrors()?(acf.doAction("validation_failure",e),this.showErrors(e),t.failure(e)):(this.pass(),i.notice&&i.notice.update({type:"success",text:acf.__("Validation successful"),timeout:1e3}),acf.doAction("validation_success",e),acf.doAction("submit",e),t.success(e),t.lock&&this.lockForm(e)),this.reset(),t.complete(e)};$.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(a),type:"post",dataType:"json",context:this,success:r,complete:o})}},addInputEvents:function(t){var e=$(".acf-field [name]",t);e.length&&this.on(e,"invalid","onInvalid")},onInvalid:function(t,e){var i=e.closest("form");this.addError({input:e.attr("name"),message:t.target.validationMessage}),t.preventDefault(),i.submit()},onClickSubmit:function(t,e){this.set("originalEvent",t)},onClickSave:function(t,e){this.pass()},onSubmit:function(t,e){acf.validateForm({form:e,event:this.get("originalEvent")})||t.preventDefault()},showSpinner:function(t){return t.addClass("is-active"),t.css("display","inline-block"),t},hideSpinner:function(t){return t.removeClass("is-active"),t.css("display","none"),t},findSubmitWrap:function(t){var e=$("#submitdiv");if(e.length)return e;var e=$("#submitpost");if(e.length)return e;var e=t.find("p.submit").last();if(e.length)return e;var e=t.find(".acf-form-submit");return e.length?e:t},lockForm:function(t){var e=this.findSubmitWrap(t),i=e.find('.button, [type="submit"]'),n=e.find(".spinner, .acf-spinner");this.hideSpinner(n),acf.disableSubmit(i),this.showSpinner(n.last())},unlockForm:function(t){var e=this.findSubmitWrap(t),i=e.find('.button, [type="submit"]'),n=e.find(".spinner, .acf-spinner");acf.enableSubmit(i),this.hideSpinner(n)}});var e=acf.Model.extend({notice:!1,setup:function(t){this.$el=t},lock:function(){acf.validation.lockForm(this.$el)},unlock:function(){acf.validation.unlockForm(this.$el)}});acf.validateForm=function(t){if(!t.form)return!0;var e=acf.validation.getForm(t.form);return!acf.validation.active||(!!acf.validation.ignore||(e.$("#wp-preview").val()?(e.unlock(),!0):!e.$("#acf-form-data").length||(acf.validation.fetch(t),!1)))},acf.enableSubmit=function(t){return t.prop("disabled",!1).removeClass("disabled")},acf.disableSubmit=function(t){return t.prop("disabled",!0).addClass("disabled")}}(jQuery),function($,t){var e=new acf.Model({priority:90,timeout:0,actions:{new_field:"refresh",show_field:"refresh",hide_field:"refresh",remove_field:"refresh"},refresh:function(){clearTimeout(this.timeout),this.timeout=setTimeout(function(){acf.doAction("refresh")},0)}}),i=new acf.Model({actions:{sortstart:"onSortstart"},onSortstart:function(t,e){t.is("tr")&&(t.css("position","relative"),t.children().each(function(){$(this).width($(this).width())}),t.css("position","absolute"),e.html('<td style="height:'+t.height()+'px; padding:0;" colspan="'+t.children("td").length+'"></td>'))}}),n=new acf.Model({actions:{after_duplicate:"onAfterDuplicate"},onAfterDuplicate:function(t,e){var i=[];t.find("select").each(function(t){i.push($(this).val())}),e.find("select").each(function(t){$(this).val(i[t])})}}),a=new acf.Model({id:"tableHelper",priority:20,actions:{refresh:"renderTables"},renderTables:function(t){var e=this;$(".acf-table:visible").each(function(){e.renderTable($(this))})},renderTable:function(t){var e=t.find("> thead > tr:visible > th[data-key]"),i=t.find("> tbody > tr:visible > td[data-key]");if(!e.length||!i.length)return!1;e.each(function(t){var e=$(this),n=e.data("key"),a=i.filter('[data-key="'+n+'"]'),r=a.filter(".acf-hidden");a.removeClass("acf-empty"),a.length===r.length?acf.hide(e):(acf.show(e),r.addClass("acf-empty"))}),e.css("width","auto"),e=e.not(".acf-hidden");var n=100,a=e.length;e.filter("[data-width]").each(function(){var t=$(this).data("width");$(this).css("width",t+"%"),n-=t});var r=e.not("[data-width]");if(r.length){var o=n/r.length;r.css("width",o+"%"),n=0}n>0&&e.last().css("width","auto"),i.filter(".-collapsed-target").each(function(){var t=$(this);t.parent().hasClass("-collapsed")?t.attr("colspan",e.length):t.removeAttr("colspan")})}}),r=new acf.Model({id:"fieldsHelper",priority:30,actions:{refresh:"renderGroups"},renderGroups:function(){var t=this;$(".acf-fields:visible").each(function(){t.renderGroup($(this))})},renderGroup:function(t){var e=0,i=0,n=$(),a=t.children(".acf-field[data-width]:visible");return!!a.length&&(t.hasClass("-left")?(a.removeAttr("data-width"),a.css("width","auto"),!1):(a.removeClass("-r0 -c0").css({"min-height":0}),a.each(function(t){var a=$(this),r=a.position(),o=Math.ceil(r.top),s=Math.ceil(r.left);n.length&&o>e&&(n.css({"min-height":i+"px"}),r=a.position(),o=Math.ceil(r.top),s=Math.ceil(r.left),e=0,i=0,n=$()),acf.get("rtl")&&(s=Math.ceil(a.parent().width()-(r.left+a.outerWidth()))),0==o?a.addClass("-r0"):0==s&&a.addClass("-c0");var c=Math.ceil(a.outerHeight())+1;i=Math.max(i,c),e=Math.max(e,o),n=n.add(a)}),void(n.length&&n.css({"min-height":i+"px"}))))}})}(jQuery),function($,t){acf.newCompatibility=function(t,e){return e=e||{},e.__proto__=t.__proto__,t.__proto__=e,t.compatibility=e,e},acf.getCompatibility=function(t){return t.compatibility||null};var e=acf.newCompatibility(acf,{l10n:{},o:{},fields:{},update:acf.set,add_action:acf.addAction,remove_action:acf.removeAction,do_action:acf.doAction,add_filter:acf.addFilter,remove_filter:acf.removeFilter,apply_filters:acf.applyFilters,parse_args:acf.parseArgs,disable_el:acf.disable,disable_form:acf.disable,enable_el:acf.enable,enable_form:acf.enable,update_user_setting:acf.updateUserSetting,prepare_for_ajax:acf.prepareForAjax,is_ajax_success:acf.isAjaxSuccess,remove_el:acf.remove,remove_tr:acf.remove,str_replace:acf.strReplace,render_select:acf.renderSelect,get_uniqid:acf.uniqid,serialize_form:acf.serialize,esc_html:acf.strEscape,str_sanitize:acf.strSanitize});e._e=function(t,e){t=t||"",e=e||"";var i=e?t+"."+e:t,n={"image.select":"Select Image","image.edit":"Edit Image","image.update":"Update Image"};if(n[i])return acf.__(n[i]);var a=this.l10n[t]||"";return e&&(a=a[e]||""),a},e.get_selector=function(t){var e=".acf-field";if(!t)return e;if($.isPlainObject(t)){if($.isEmptyObject(t))return e;for(var i in t){t=t[i];break}}return e+="-"+t,e=acf.strReplace("_","-",e),e=acf.strReplace("field-field-","field-",e)},e.get_fields=function(t,e,i){var n={is:t||"",parent:e||!1,suppressFilters:i||!1};return n.is&&(n.is=this.get_selector(n.is)),acf.findFields(n)},e.get_field=function(t,e){var i=this.get_fields.apply(this,arguments);return!!i.length&&i.first()},e.get_closest_field=function(t,e){return t.closest(this.get_selector(e))},e.get_field_wrap=function(t){return t.closest(this.get_selector())},e.get_field_key=function(t){return t.data("key")},e.get_field_type=function(t){return t.data("type")},e.get_data=function(t,e){return acf.parseArgs(t.data(),e)},e.maybe_get=function(t,e,i){void 0===i&&(i=null),keys=String(e).split(".");for(var n=0;n<keys.length;n++){if(!t.hasOwnProperty(keys[n]))return i;t=t[keys[n]]}return t};var i=function(t){return t instanceof acf.Field?t.$el:t},n=function(t){return acf.arrayArgs(t).map(i)},a=function(t){return function(){if(arguments.length)var e=n(arguments);else var e=[$(document)];return t.apply(this,e)}};e.add_action=function(t,i,n,r){var o=t.split(" "),s=o.length;if(s>1){for(var c=0;c<s;c++)t=o[c],e.add_action.apply(this,arguments);return this}var i=a(i);return acf.addAction.apply(this,arguments)},e.add_filter=function(t,e,i,n){var e=a(e);return acf.addFilter.apply(this,arguments)},e.model={actions:{},filters:{},events:{},extend:function(t){var e=$.extend({},this,t);return $.each(e.actions,function(t,i){e._add_action(t,i)}),$.each(e.filters,function(t,i){e._add_filter(t,i)}),$.each(e.events,function(t,i){e._add_event(t,i)}),e},_add_action:function(t,e){var i=this,n=t.split(" "),t=n[0]||"",a=n[1]||10;acf.add_action(t,i[e],a,i)},_add_filter:function(t,e){var i=this,n=t.split(" "),t=n[0]||"",a=n[1]||10;acf.add_filter(t,i[e],a,i)},_add_event:function(t,e){var i=this,n=t.indexOf(" "),a=n>0?t.substr(0,n):t,r=n>0?t.substr(n+1):"",o=function(t){t.$el=$(this),acf.field_group&&(t.$field=t.$el.closest(".acf-field-object")),"function"==typeof i.event&&(t=i.event(t)),i[e].apply(i,arguments)};r?$(document).on(a,r,o):$(document).on(a,o)},get:function(t,e){return e=e||null,void 0!==this[t]&&(e=this[t]),e},set:function(t,e){return this[t]=e,"function"==typeof this["_set_"+t]&&this["_set_"+t].apply(this),this}},e.field=acf.model.extend({type:"",o:{},$field:null,_add_action:function(t,e){var i=this;t=t+"_field/type="+i.type,acf.add_action(t,function(t){i.set("$field",t),i[e].apply(i,arguments)})},_add_filter:function(t,e){var i=this;t=t+"_field/type="+i.type,acf.add_filter(t,function(t){i.set("$field",t),i[e].apply(i,arguments)})},_add_event:function(t,e){var i=this,n=t.substr(0,t.indexOf(" ")),a=t.substr(t.indexOf(" ")+1),r=acf.get_selector(i.type);$(document).on(n,r+" "+a,function(t){var n=$(this),a=acf.get_closest_field(n,i.type);a.length&&(a.is(i.$field)||i.set("$field",a),t.$el=n,t.$field=a,i[e].apply(i,[t]))})},_set_$field:function(){"function"==typeof this.focus&&this.focus()},doFocus:function(t){return this.set("$field",t)}});var r=acf.newCompatibility(acf.validation,{remove_error:function(t){acf.getField(t).removeError()},add_warning:function(t,e){acf.getField(t).showNotice({text:e,type:"warning",timeout:1e3})},enableSubmit:acf.enableSubmit,disableSubmit:acf.disableSubmit});e.tooltip={tooltip:function(t,e){return acf.newTooltip({text:t,target:e}).$el},temp:function(t,e){var i=acf.newTooltip({text:t,target:e,timeout:250})},confirm:function(t,e,i,n,a){var r=acf.newTooltip({confirm:!0,text:i,target:t,confirm:function(){e(!0)},cancel:function(){e(!1)}})},confirm_remove:function(t,e){var i=acf.newTooltip({confirmRemove:!0,target:t,confirm:function(){e(!0)},cancel:function(){e(!1)}})}},e.media=new acf.Model({activeFrame:!1,actions:{new_media_popup:"onNewMediaPopup"},frame:function(){return this.activeFrame},onNewMediaPopup:function(t){this.activeFrame=t.frame},popup:function(t){return t.mime_types&&(t.allowedTypes=t.mime_types),t.id&&(t.attachment=t.id),acf.newMediaPopup(t).frame}}),e.select2={init:function(t,e,i){return e.allow_null&&(e.allowNull=e.allow_null),e.ajax_action&&(e.ajaxAction=e.ajax_action),i&&(e.field=acf.getField(i)),acf.newSelect2(t,e)},destroy:function(t){return acf.getInstance(t).destroy()}},e.postbox={render:function(t){return t.edit_url&&(t.editLink=t.edit_url),t.edit_title&&(t.editTitle=t.edit_title),acf.newPostbox(t)}},acf.newCompatibility(acf.screen,{update:function(){return this.set.apply(this,arguments)},fetch:acf.screen.check}),e.ajax=acf.screen}(jQuery);
includes/admin/admin-field-group.php CHANGED
@@ -639,20 +639,16 @@ class acf_admin_field_group {
639
  // validate
640
  if( !acf_verify_ajax() ) die();
641
 
642
-
643
- // valid rule
644
- $rule = acf_get_valid_location_rule($_POST['rule']);
645
-
646
-
647
  // view
648
  acf_get_view( 'html-location-rule', array(
649
  'rule' => $rule
650
  ));
651
 
652
-
653
  // die
654
- die();
655
-
656
  }
657
 
658
 
639
  // validate
640
  if( !acf_verify_ajax() ) die();
641
 
642
+ // validate rule
643
+ $rule = acf_validate_location_rule($_POST['rule']);
644
+
 
 
645
  // view
646
  acf_get_view( 'html-location-rule', array(
647
  'rule' => $rule
648
  ));
649
 
 
650
  // die
651
+ die();
 
652
  }
653
 
654
 
includes/admin/admin-upgrade.php ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
+
5
+ if( ! class_exists('ACF_Admin_Upgrade') ) :
6
+
7
+ class ACF_Admin_Upgrade {
8
+
9
+ /**
10
+ * __construct
11
+ *
12
+ * Sets up the class functionality.
13
+ *
14
+ * @date 31/7/18
15
+ * @since 5.7.2
16
+ *
17
+ * @param void
18
+ * @return void
19
+ */
20
+ function __construct() {
21
+
22
+ // actions
23
+ add_action( 'admin_menu', array($this,'admin_menu'), 20 );
24
+ add_action( 'network_admin_menu', array($this,'network_admin_menu'), 20 );
25
+ }
26
+
27
+ /**
28
+ * admin_menu
29
+ *
30
+ * Setus up logic if DB Upgrade is needed on a single site.
31
+ *
32
+ * @date 24/8/18
33
+ * @since 5.7.4
34
+ *
35
+ * @param void
36
+ * @return void
37
+ */
38
+ function admin_menu() {
39
+
40
+ // check if upgrade is avaialble
41
+ if( acf_has_upgrade() ) {
42
+
43
+ // add notice
44
+ add_action('admin_notices', array($this, 'admin_notices'));
45
+
46
+ // add page
47
+ $page = add_submenu_page('index.php', __('Upgrade Database','acf'), __('Upgrade Database','acf'), acf_get_setting('capability'), 'acf-upgrade', array($this,'admin_html') );
48
+
49
+ // actions
50
+ add_action('load-' . $page, array($this,'admin_load'));
51
+ }
52
+ }
53
+
54
+ /**
55
+ * network_admin_menu
56
+ *
57
+ * Setus up logic if DB Upgrade is needed on a multi site.
58
+ *
59
+ * @date 24/8/18
60
+ * @since 5.7.4
61
+ *
62
+ * @param void
63
+ * @return void
64
+ */
65
+ function network_admin_menu() {
66
+
67
+ // vars
68
+ $has_upgrade = false;
69
+
70
+ // loop over sites
71
+ $sites = acf_get_sites();
72
+ if( $sites ) {
73
+ foreach( $sites as $site ) {
74
+
75
+ // switch blog
76
+ switch_to_blog( $site['blog_id'] );
77
+
78
+ // check for upgrade
79
+ if( acf_has_upgrade() ) {
80
+ $has_upgrade = true;
81
+ }
82
+
83
+ // restore blog
84
+ restore_current_blog();
85
+ }}
86
+
87
+ // check if upgrade is avaialble
88
+ if( $has_upgrade ) {
89
+
90
+ // add notice
91
+ add_action('network_admin_notices', array($this, 'network_admin_notices'));
92
+
93
+ // add page
94
+ $page = add_submenu_page('index.php', __('Upgrade Database','acf'), __('Upgrade Database','acf'), acf_get_setting('capability'), 'acf-upgrade-network', array($this,'network_admin_html'));
95
+
96
+ // actions
97
+ add_action('load-' . $page, array($this,'network_admin_load'));
98
+ }
99
+ }
100
+
101
+ /**
102
+ * admin_load
103
+ *
104
+ * Runs during the loading of the admin page.
105
+ *
106
+ * @date 24/8/18
107
+ * @since 5.7.4
108
+ *
109
+ * @param type $var Description. Default.
110
+ * @return type Description.
111
+ */
112
+ function admin_load() {
113
+
114
+ // remove prompt
115
+ remove_action('admin_notices', array($this, 'admin_notices'));
116
+
117
+ // load acf scripts
118
+ acf_enqueue_scripts();
119
+ }
120
+
121
+ /**
122
+ * network_admin_load
123
+ *
124
+ * Runs during the loading of the network admin page.
125
+ *
126
+ * @date 24/8/18
127
+ * @since 5.7.4
128
+ *
129
+ * @param type $var Description. Default.
130
+ * @return type Description.
131
+ */
132
+ function network_admin_load() {
133
+
134
+ // remove prompt
135
+ remove_action('network_admin_notices', array($this, 'network_admin_notices'));
136
+
137
+ // load acf scripts
138
+ acf_enqueue_scripts();
139
+ }
140
+
141
+ /**
142
+ * admin_notices
143
+ *
144
+ * Displays the DB Upgrade prompt.
145
+ *
146
+ * @date 23/8/18
147
+ * @since 5.7.3
148
+ *
149
+ * @param void
150
+ * @return void
151
+ */
152
+ function admin_notices() {
153
+
154
+ // vars
155
+ $view = array(
156
+ 'button_text' => __("Upgrade Database", 'acf'),
157
+ 'button_url' => admin_url('index.php?page=acf-upgrade'),
158
+ 'confirm' => true
159
+ );
160
+
161
+ // view
162
+ acf_get_view('html-notice-upgrade', $view);
163
+ }
164
+
165
+ /**
166
+ * network_admin_notices
167
+ *
168
+ * Displays the DB Upgrade prompt on a multi site.
169
+ *
170
+ * @date 23/8/18
171
+ * @since 5.7.3
172
+ *
173
+ * @param void
174
+ * @return void
175
+ */
176
+ function network_admin_notices() {
177
+
178
+ // vars
179
+ $view = array(
180
+ 'button_text' => __("Review sites & upgrade", 'acf'),
181
+ 'button_url' => network_admin_url('index.php?page=acf-upgrade-network'),
182
+ 'confirm' => false
183
+ );
184
+
185
+ // view
186
+ acf_get_view('html-notice-upgrade', $view);
187
+ }
188
+
189
+ /**
190
+ * admin_html
191
+ *
192
+ * Displays the HTML for the admin page.
193
+ *
194
+ * @date 24/8/18
195
+ * @since 5.7.4
196
+ *
197
+ * @param void
198
+ * @return void
199
+ */
200
+ function admin_html() {
201
+ acf_get_view('html-admin-page-upgrade');
202
+ }
203
+
204
+ /**
205
+ * network_admin_html
206
+ *
207
+ * Displays the HTML for the network upgrade admin page.
208
+ *
209
+ * @date 24/8/18
210
+ * @since 5.7.4
211
+ *
212
+ * @param void
213
+ * @return void
214
+ */
215
+ function network_admin_html() {
216
+ acf_get_view('html-admin-page-upgrade-network');
217
+ }
218
+ }
219
+
220
+ // instantiate
221
+ acf_new_instance('ACF_Admin_Upgrade');
222
+
223
+ endif; // class_exists check
224
+
225
+ ?>
includes/admin/install-network.php DELETED
@@ -1,283 +0,0 @@
1
- <?php
2
-
3
- if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
-
5
- if( ! class_exists('acf_admin_install_network') ) :
6
-
7
- class acf_admin_install_network {
8
-
9
- /*
10
- * __construct
11
- *
12
- * A good place to add actions / filters
13
- *
14
- * @type function
15
- * @date 11/08/13
16
- *
17
- * @param n/a
18
- * @return n/a
19
- */
20
-
21
- function __construct() {
22
-
23
- // actions
24
- add_action('network_admin_menu', array($this,'network_admin_menu'), 20);
25
-
26
- }
27
-
28
-
29
- /*
30
- * network_admin_menu
31
- *
32
- * This function will chck for available updates and add actions if needed
33
- *
34
- * @type function
35
- * @date 2/04/2015
36
- * @since 5.1.5
37
- *
38
- * @param n/a
39
- * @return n/a
40
- */
41
-
42
- function network_admin_menu() {
43
-
44
- // vars
45
- $prompt = false;
46
-
47
-
48
- // loop through sites and find updates
49
- $sites = acf_get_sites();
50
-
51
- if( $sites ) {
52
-
53
- foreach( $sites as $site ) {
54
-
55
- // switch blog
56
- switch_to_blog( $site['blog_id'] );
57
-
58
-
59
- // get site updates
60
- $updates = acf_get_db_updates();
61
-
62
-
63
- // restore
64
- restore_current_blog();
65
-
66
-
67
- if( $updates ) {
68
-
69
- $prompt = true;
70
- break;
71
-
72
- }
73
-
74
- }
75
-
76
- }
77
-
78
-
79
- // bail if no prompt
80
- if( !$prompt ) return;
81
-
82
-
83
- // actions
84
- add_action('network_admin_notices', array($this, 'network_admin_notices'), 1);
85
-
86
-
87
- // add page
88
- $page = add_submenu_page('index.php', __('Upgrade Database','acf'), __('Upgrade Database','acf'), acf_get_setting('capability'), 'acf-upgrade-network', array($this,'network_html'));
89
-
90
-
91
- // actions
92
- add_action('load-' . $page, array($this,'network_load'));
93
-
94
- }
95
-
96
-
97
- /*
98
- * load
99
- *
100
- * This function will look at the $_POST data and run any functions if needed
101
- *
102
- * @type function
103
- * @date 7/01/2014
104
- * @since 5.0.0
105
- *
106
- * @param n/a
107
- * @return n/a
108
- */
109
-
110
- function network_load() {
111
-
112
- // hide notice on this page
113
- remove_action('network_admin_notices', array($this, 'network_admin_notices'), 1);
114
-
115
-
116
- // load acf scripts
117
- acf_enqueue_scripts();
118
-
119
- }
120
-
121
-
122
-
123
- /*
124
- * network_admin_notices
125
- *
126
- * This function will render the update notice
127
- *
128
- * @type function
129
- * @date 2/04/2015
130
- * @since 5.1.5
131
- *
132
- * @param n/a
133
- * @return n/a
134
- */
135
-
136
- function network_admin_notices() {
137
-
138
- // view
139
- $view = array(
140
- 'button_text' => __("Review sites & upgrade", 'acf'),
141
- 'button_url' => network_admin_url('index.php?page=acf-upgrade-network'),
142
- 'confirm' => false
143
- );
144
-
145
-
146
- // load view
147
- acf_get_view('install-notice', $view);
148
-
149
- }
150
-
151
-
152
- /*
153
- * network_html
154
- *
155
- * This function will render the HTML for the network upgrade page
156
- *
157
- * @type function
158
- * @date 19/02/2014
159
- * @since 5.0.0
160
- *
161
- * @param n/a
162
- * @return n/a
163
- */
164
-
165
- function network_html() {
166
-
167
- // vars
168
- $plugin_version = acf_get_setting('version');
169
-
170
-
171
- // loop through sites and find updates
172
- $sites = acf_get_sites();
173
-
174
- if( $sites ) {
175
-
176
- foreach( $sites as $i => $site ) {
177
-
178
- // switch blog
179
- switch_to_blog( $site['blog_id'] );
180
-
181
-
182
- // extra info
183
- $site['name'] = get_bloginfo('name');
184
- $site['url'] = home_url();
185
-
186
-
187
- // get site updates
188
- $site['updates'] = acf_get_db_updates();
189
-
190
-
191
- // get site version
192
- $site['acf_version'] = get_option('acf_version');
193
-
194
-
195
- // no value equals new instal
196
- if( !$site['acf_version'] ) {
197
-
198
- $site['acf_version'] = $plugin_version;
199
-
200
- }
201
-
202
-
203
- // update
204
- $sites[ $i ] = $site;
205
-
206
-
207
- // restore
208
- restore_current_blog();
209
-
210
- }
211
-
212
- }
213
-
214
-
215
- // view
216
- $view = array(
217
- 'sites' => $sites,
218
- 'plugin_version' => $plugin_version
219
- );
220
-
221
-
222
- // load view
223
- acf_get_view('install-network', $view);
224
-
225
- }
226
-
227
- }
228
-
229
- // initialize
230
- new acf_admin_install_network();
231
-
232
- endif; // class_exists check
233
-
234
-
235
- /*
236
- * acf_get_sites
237
- *
238
- * This function will return an array of site data
239
- *
240
- * @type function
241
- * @date 29/08/2016
242
- * @since 5.4.0
243
- *
244
- * @param n/a
245
- * @return (array)
246
- */
247
-
248
- function acf_get_sites() {
249
-
250
- // vars
251
- $sites = array();
252
-
253
-
254
- // WP >= 4.6
255
- if( function_exists('get_sites') ) {
256
-
257
- $_sites = get_sites(array(
258
- 'number' => 0
259
- ));
260
-
261
- foreach( $_sites as $_site ) {
262
-
263
- $_site = get_site( $_site );
264
- $sites[] = $_site->to_array();
265
-
266
- }
267
-
268
- // WP < 4.6
269
- } else {
270
-
271
- $sites = wp_get_sites(array(
272
- 'limit' => 0
273
- ));
274
-
275
- }
276
-
277
-
278
- // return
279
- return $sites;
280
-
281
- }
282
-
283
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/install-updates.php DELETED
@@ -1,499 +0,0 @@
1
- <?php
2
-
3
- if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
-
5
-
6
- /*
7
- * acf_update_500
8
- *
9
- * These functions will update the DB for ACF v5.0.0
10
- *
11
- * @type function
12
- * @date 10/09/2016
13
- * @since 5.4.0
14
- *
15
- * @param n/a
16
- * @return n/a
17
- */
18
-
19
- function acf_update_500() {
20
-
21
- // action for 3rd party
22
- do_action('acf/update_500');
23
-
24
-
25
- // field groups
26
- acf_update_500_field_groups();
27
-
28
-
29
- // version
30
- acf_update_db_version('5.0.0');
31
-
32
- }
33
-
34
- function acf_update_500_field_groups() {
35
-
36
- // vars
37
- $ofgs = get_posts(array(
38
- 'numberposts' => -1,
39
- 'post_type' => 'acf',
40
- 'orderby' => 'menu_order title',
41
- 'order' => 'asc',
42
- 'suppress_filters' => true,
43
- ));
44
-
45
-
46
- // check
47
- if( !$ofgs ) return;
48
-
49
-
50
- // loop
51
- foreach( $ofgs as $ofg ){
52
-
53
- acf_update_500_field_group( $ofg );
54
-
55
- }
56
-
57
- }
58
-
59
- function acf_update_500_field_group( $ofg ) {
60
-
61
- // global
62
- global $wpdb;
63
-
64
-
65
- // create new field group
66
- $nfg = array(
67
- 'ID' => 0,
68
- 'title' => $ofg->post_title,
69
- 'menu_order' => $ofg->menu_order,
70
- );
71
-
72
-
73
- // location rules
74
- $groups = array();
75
-
76
-
77
- // get all rules
78
- $rules = get_post_meta($ofg->ID, 'rule', false);
79
-
80
- if( is_array($rules) ) {
81
-
82
- $group_no = 0;
83
-
84
- foreach( $rules as $rule ) {
85
-
86
- // if field group was duplicated, it may now be a serialized string!
87
- $rule = maybe_unserialize($rule);
88
-
89
-
90
- // does this rule have a group?
91
- // + groups were added in 4.0.4
92
- if( !isset($rule['group_no']) ) {
93
-
94
- $rule['group_no'] = $group_no;
95
-
96
- // sperate groups?
97
- if( get_post_meta($ofg->ID, 'allorany', true) == 'any' ) {
98
-
99
- $group_no++;
100
-
101
- }
102
-
103
- }
104
-
105
-
106
- // extract vars
107
- $group = acf_extract_var( $rule, 'group_no' );
108
- $order = acf_extract_var( $rule, 'order_no' );
109
-
110
-
111
- // add to group
112
- $groups[ $group ][ $order ] = $rule;
113
-
114
-
115
- // sort rules
116
- ksort( $groups[ $group ] );
117
-
118
- }
119
-
120
- // sort groups
121
- ksort( $groups );
122
- }
123
-
124
- $nfg['location'] = $groups;
125
-
126
-
127
- // settings
128
- if( $position = get_post_meta($ofg->ID, 'position', true) ) {
129
-
130
- $nfg['position'] = $position;
131
-
132
- }
133
-
134
- if( $layout = get_post_meta($ofg->ID, 'layout', true) ) {
135
-
136
- $nfg['layout'] = $layout;
137
-
138
- }
139
-
140
- if( $hide_on_screen = get_post_meta($ofg->ID, 'hide_on_screen', true) ) {
141
-
142
- $nfg['hide_on_screen'] = maybe_unserialize($hide_on_screen);
143
-
144
- }
145
-
146
-
147
- // Note: acf_update_field_group will call the acf_get_valid_field_group function and apply 'compatibility' changes
148
-
149
-
150
- // save field group
151
- $nfg = acf_update_field_group( $nfg );
152
-
153
-
154
- // action for 3rd party
155
- do_action('acf/update_500_field_group', $nfg, $ofg);
156
-
157
-
158
- // trash?
159
- if( $ofg->post_status == 'trash' ) {
160
-
161
- acf_trash_field_group( $nfg['ID'] );
162
-
163
- }
164
-
165
-
166
- // get field from postmeta
167
- $rows = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE post_id = %d AND meta_key LIKE %s", $ofg->ID, 'field_%'), ARRAY_A);
168
-
169
-
170
- // check
171
- if( $rows ) {
172
-
173
- // loop
174
- foreach( $rows as $row ) {
175
-
176
- // bail early if key already migrated (potential duplicates in DB)
177
- if( acf_has_done('update_500_field_group_' . $ofg->ID . '_' . $row['meta_key']) ) continue;
178
-
179
-
180
- // vars
181
- $field = $row['meta_value'];
182
- $field = maybe_unserialize( $field );
183
- $field = maybe_unserialize( $field ); // run again for WPML
184
-
185
-
186
- // add parent
187
- $field['parent'] = $nfg['ID'];
188
-
189
-
190
- // migrate field
191
- $field = acf_update_500_field( $field );
192
-
193
- }
194
-
195
- }
196
-
197
-
198
- // return
199
- return $nfg;
200
-
201
- }
202
-
203
-
204
- function acf_update_500_field( $field ) {
205
-
206
- // orig
207
- $orig = $field;
208
-
209
-
210
- // order_no is now menu_order
211
- $field['menu_order'] = acf_extract_var( $field, 'order_no' );
212
-
213
-
214
- // correct very old field keys
215
- if( substr($field['key'], 0, 6) !== 'field_' ) {
216
-
217
- $field['key'] = 'field_' . str_replace('field', '', $field['key']);
218
-
219
- }
220
-
221
-
222
- // get valid field
223
- $field = acf_get_valid_field( $field );
224
-
225
-
226
- // save field
227
- $field = acf_update_field( $field );
228
-
229
-
230
- // sub fields
231
- if( $field['type'] == 'repeater' ) {
232
-
233
- // get sub fields
234
- $sub_fields = acf_extract_var( $orig, 'sub_fields' );
235
-
236
-
237
- // save sub fields
238
- if( !empty($sub_fields) ) {
239
-
240
- $keys = array_keys($sub_fields);
241
-
242
- foreach( $keys as $key ) {
243
-
244
- $sub_field = acf_extract_var($sub_fields, $key);
245
- $sub_field['parent'] = $field['ID'];
246
-
247
- acf_update_500_field( $sub_field );
248
-
249
- }
250
-
251
- }
252
-
253
-
254
- } elseif( $field['type'] == 'flexible_content' ) {
255
-
256
- // get layouts
257
- $layouts = acf_extract_var( $orig, 'layouts' );
258
-
259
-
260
- // update layouts
261
- $field['layouts'] = array();
262
-
263
-
264
- // save sub fields
265
- if( !empty($layouts) ) {
266
-
267
- foreach( $layouts as $layout ) {
268
-
269
- // vars
270
- $layout_key = uniqid();
271
-
272
-
273
- // append layotu key
274
- $layout['key'] = $layout_key;
275
-
276
-
277
- // extract sub fields
278
- $sub_fields = acf_extract_var($layout, 'sub_fields');
279
-
280
-
281
- // save sub fields
282
- if( !empty($sub_fields) ) {
283
-
284
- $keys = array_keys($sub_fields);
285
-
286
- foreach( $keys as $key ) {
287
-
288
- $sub_field = acf_extract_var($sub_fields, $key);
289
- $sub_field['parent'] = $field['ID'];
290
- $sub_field['parent_layout'] = $layout_key;
291
-
292
- acf_update_500_field( $sub_field );
293
-
294
- }
295
- // foreach
296
-
297
- }
298
- // if
299
-
300
-
301
- // append layout
302
- $field['layouts'][] = $layout;
303
-
304
- }
305
- // foreach
306
-
307
- }
308
- // if
309
-
310
-
311
- // save field again with less sub field data
312
- $field = acf_update_field( $field );
313
-
314
- }
315
-
316
-
317
- // action for 3rd party
318
- do_action('acf/update_500_field', $field);
319
-
320
-
321
- // return
322
- return $field;
323
-
324
- }
325
-
326
-
327
- /*
328
- * acf_update_550
329
- *
330
- * These functions will update the DB for ACF v5.5.0
331
- *
332
- * @type function
333
- * @date 10/09/2016
334
- * @since 5.4.0
335
- *
336
- * @param n/a
337
- * @return n/a
338
- */
339
-
340
- function acf_update_550() { //acf_log('acf_update_550');
341
-
342
- // action for 3rd party
343
- do_action('acf/update_550');
344
-
345
-
346
- // termmeta
347
- acf_update_550_termmeta();
348
-
349
-
350
- // version
351
- acf_update_db_version('5.5.0');
352
-
353
- }
354
-
355
-
356
- /*
357
- * acf_update_550_termmeta
358
- *
359
- * This function will migrate all term meta
360
- *
361
- * @type function
362
- * @date 3/09/2016
363
- * @since 5.4.0
364
- *
365
- * @param n/a
366
- * @return n/a
367
- */
368
-
369
-
370
- function acf_update_550_termmeta() { //acf_log('acf_update_550_termmeta');
371
-
372
- // bail early if no table
373
- if( !acf_isset_termmeta() ) {
374
-
375
- update_option('acf_update_550_termmeta', 1); // no longer used
376
- //echo __('Term meta upgrade not possible (termmeta table does not exist)', 'acf');
377
- return;
378
-
379
- }
380
-
381
-
382
- // vars
383
- $taxonomies = get_taxonomies(false, 'objects');
384
-
385
-
386
- // bail early if no taxonomies
387
- if( !$taxonomies ) return;
388
-
389
-
390
- // loop
391
- foreach( $taxonomies as $taxonomy ) {
392
-
393
- acf_update_550_taxonomy( $taxonomy->name );
394
-
395
- }
396
-
397
-
398
- // delete trigger
399
- delete_option('acf_update_550_termmeta');
400
-
401
-
402
- // action for 3rd party
403
- do_action('acf/update_550_termmeta');
404
-
405
- }
406
-
407
-
408
- /*
409
- * acf_update_550_taxonomy
410
- *
411
- * This function will migrate term meta for a specific taxonomy
412
- *
413
- * @type function
414
- * @date 3/09/2016
415
- * @since 5.4.0
416
- *
417
- * @param $taxonomy (string)
418
- * @return n/a
419
- */
420
-
421
- function acf_update_550_taxonomy( $taxonomy ) { //acf_log('acf_update_550_taxonomy', $taxonomy);
422
-
423
- // global
424
- global $wpdb;
425
-
426
-
427
- // vars
428
- $search = $taxonomy . '_%';
429
- $_search = '_' . $search;
430
-
431
-
432
- // escape '_'
433
- // http://stackoverflow.com/questions/2300285/how-do-i-escape-in-sql-server
434
- $search = str_replace('_', '\_', $search);
435
- $_search = str_replace('_', '\_', $_search);
436
-
437
-
438
- // search
439
- // results show faster query times using 2 LIKE vs 2 wildcards
440
- $rows = $wpdb->get_results($wpdb->prepare(
441
- "SELECT *
442
- FROM $wpdb->options
443
- WHERE option_name LIKE %s
444
- OR option_name LIKE %s",
445
- $search,
446
- $_search
447
- ), ARRAY_A);
448
-
449
-
450
- // bail early if no rows
451
- if( empty($rows) ) return;
452
-
453
-
454
- // vars
455
- $search = $taxonomy . '_';
456
- $_search = '_' . $search;
457
-
458
-
459
- // loop
460
- foreach( $rows as $row ) {
461
-
462
- // use regex to find (_)taxonomy_(term_id)_(field_name)
463
- $matches = null;
464
- $regexp = '/^(_?)' . $taxonomy . '_(\d+)_(.+)/';
465
-
466
-
467
- // bail early if no match
468
- if( !preg_match($regexp, $row['option_name'], $matches) ) continue;
469
-
470
-
471
- /*
472
- Array
473
- (
474
- [0] => category_3_color
475
- [1] =>
476
- [2] => 3
477
- [3] => color
478
- )
479
- */
480
-
481
-
482
- // vars
483
- $term_id = $matches[2];
484
- $name = $matches[1] . $matches[3];
485
- $value = $row['option_value'];
486
-
487
-
488
- // update
489
- update_metadata( 'term', $term_id, $name, $value );
490
-
491
- }
492
-
493
-
494
- // action for 3rd party
495
- do_action('acf/update_550_taxonomy', $taxonomy);
496
-
497
- }
498
-
499
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/install.php DELETED
@@ -1,431 +0,0 @@
1
- <?php
2
-
3
- if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
-
5
- if( ! class_exists('acf_admin_install') ) :
6
-
7
- class acf_admin_install {
8
-
9
- // vars
10
- var $db_updates = array(
11
- '5.0.0' => 'acf_update_500',
12
- '5.5.0' => 'acf_update_550'
13
- );
14
-
15
-
16
- /*
17
- * __construct
18
- *
19
- * This function will setup the class functionality
20
- *
21
- * @type function
22
- * @date 5/03/2014
23
- * @since 5.0.0
24
- *
25
- * @param n/a
26
- * @return n/a
27
- */
28
-
29
- function __construct() {
30
-
31
- // actions
32
- add_action('admin_menu', array($this,'admin_menu'), 20);
33
- add_action('wp_upgrade', array($this,'wp_upgrade'), 10, 2);
34
-
35
-
36
- // ajax
37
- add_action('wp_ajax_acf/admin/db_update', array($this, 'ajax_db_update'));
38
-
39
- }
40
-
41
-
42
- /*
43
- * admin_menu
44
- *
45
- * This function will chck for available updates and add actions if needed
46
- *
47
- * @type function
48
- * @date 19/02/2014
49
- * @since 5.0.0
50
- *
51
- * @param n/a
52
- * @return n/a
53
- */
54
-
55
- function admin_menu() {
56
-
57
- // vars
58
- $updates = acf_get_db_updates();
59
-
60
-
61
- // bail early if no updates available
62
- if( !$updates ) return;
63
-
64
-
65
- // actions
66
- add_action('admin_notices', array($this, 'admin_notices'), 1);
67
-
68
-
69
- // add page
70
- $page = add_submenu_page('index.php', __('Upgrade Database','acf'), __('Upgrade Database','acf'), acf_get_setting('capability'), 'acf-upgrade', array($this,'html') );
71
-
72
-
73
- // actions
74
- add_action('load-' . $page, array($this,'load'));
75
-
76
- }
77
-
78
-
79
- /*
80
- * load
81
- *
82
- * This function will look at the $_POST data and run any functions if needed
83
- *
84
- * @type function
85
- * @date 7/01/2014
86
- * @since 5.0.0
87
- *
88
- * @param n/a
89
- * @return n/a
90
- */
91
-
92
- function load() {
93
-
94
- // hide upgrade
95
- remove_action('admin_notices', array($this, 'admin_notices'), 1);
96
-
97
-
98
- // load acf scripts
99
- acf_enqueue_scripts();
100
-
101
- }
102
-
103
-
104
- /*
105
- * admin_notices
106
- *
107
- * This function will render the DB Upgrade notice
108
- *
109
- * @type function
110
- * @date 17/10/13
111
- * @since 5.0.0
112
- *
113
- * @param n/a
114
- * @return n/a
115
- */
116
-
117
- function admin_notices() {
118
-
119
- // view
120
- $view = array(
121
- 'button_text' => __("Upgrade Database", 'acf'),
122
- 'button_url' => admin_url('index.php?page=acf-upgrade'),
123
- 'confirm' => true
124
- );
125
-
126
-
127
- // load view
128
- acf_get_view('install-notice', $view);
129
-
130
- }
131
-
132
-
133
- /*
134
- * html
135
- *
136
- * description
137
- *
138
- * @type function
139
- * @date 19/02/2014
140
- * @since 5.0.0
141
- *
142
- * @param $post_id (int)
143
- * @return $post_id (int)
144
- */
145
-
146
- function html() {
147
-
148
- // view
149
- $view = array(
150
- 'updates' => acf_get_db_updates(),
151
- 'plugin_version' => acf_get_setting('version')
152
- );
153
-
154
-
155
- // load view
156
- acf_get_view('install', $view);
157
-
158
- }
159
-
160
-
161
- /*
162
- * ajax_db_update
163
- *
164
- * description
165
- *
166
- * @type function
167
- * @date 24/10/13
168
- * @since 5.0.0
169
- *
170
- * @param $post_id (int)
171
- * @return $post_id (int)
172
- */
173
-
174
- function ajax_db_update() {
175
-
176
- // options
177
- $options = wp_parse_args( $_POST, array(
178
- 'nonce' => '',
179
- 'blog_id' => '',
180
- ));
181
-
182
-
183
- // validate
184
- if( !wp_verify_nonce($options['nonce'], 'acf_db_update') ) {
185
-
186
- wp_send_json_error(array(
187
- 'message' => __('Error validating request', 'acf')
188
- ));
189
-
190
- }
191
-
192
-
193
- // switch blog
194
- if( $options['blog_id'] ) {
195
-
196
- switch_to_blog( $options['blog_id'] );
197
-
198
- }
199
-
200
-
201
- // vars
202
- $updates = acf_get_db_updates();
203
- $message = '';
204
-
205
-
206
- // bail early if no updates
207
- if( empty($updates) ) {
208
-
209
- wp_send_json_error(array(
210
- 'message' => __('No updates available.', 'acf')
211
- ));
212
-
213
- }
214
-
215
-
216
- // install updates
217
- foreach( $updates as $version => $callback ) {
218
-
219
- $message .= $this->run_update( $callback );
220
-
221
- }
222
-
223
-
224
- // updates complete
225
- acf_update_db_version();
226
-
227
-
228
- // return
229
- wp_send_json_success(array(
230
- 'message' => $message
231
- ));
232
-
233
- }
234
-
235
-
236
- /*
237
- * run_db_update
238
- *
239
- * This function will perform a db upgrade
240
- *
241
- * @type function
242
- * @date 10/09/2016
243
- * @since 5.4.0
244
- *
245
- * @param $post_id (int)
246
- * @return $post_id (int)
247
- */
248
-
249
- function run_update( $callback = '' ) {
250
-
251
- // include update functions
252
- acf_include('includes/admin/install-updates.php');
253
-
254
-
255
- // bail early if not found
256
- if( !function_exists($callback) ) return false;
257
-
258
-
259
- // load any errors / feedback from update
260
- ob_start();
261
-
262
-
263
- // include
264
- call_user_func($callback);
265
-
266
-
267
- // get feedback
268
- $message = ob_get_clean();
269
-
270
-
271
- // return
272
- return $message;
273
-
274
- }
275
-
276
-
277
- /*
278
- * wp_upgrade
279
- *
280
- * This function will run when the WP database is updated
281
- *
282
- * @type function
283
- * @date 10/09/2016
284
- * @since 5.4.0
285
- *
286
- * @param $wp_db_version (string) The new $wp_db_version
287
- * @return $wp_current_db_version (string) The old (current) $wp_db_version
288
- */
289
-
290
- function wp_upgrade( $wp_db_version, $wp_current_db_version ) {
291
-
292
- // vars
293
- $acf_db_version = acf_get_db_version();
294
-
295
-
296
- // termmeta was added in WP 4.4 (34370)
297
- // if website has already updated to ACF 5.5.0, termmeta will not have yet been migrated
298
- if( $wp_db_version >= 34370 && $wp_current_db_version < 34370 && acf_version_compare($acf_db_version, '>=', '5.5.0') ) {
299
-
300
- $this->run_update('acf_update_550_termmeta');
301
-
302
- }
303
-
304
- }
305
-
306
- }
307
-
308
-
309
- // initialize
310
- acf()->admin->install = new acf_admin_install();
311
-
312
- endif; // class_exists check
313
-
314
-
315
- /*
316
- * acf_get_db_version
317
- *
318
- * This function will return the current ACF DB version
319
- *
320
- * @type function
321
- * @date 10/09/2016
322
- * @since 5.4.0
323
- *
324
- * @param $post_id (int)
325
- * @return $post_id (int)
326
- */
327
-
328
- function acf_get_db_version() {
329
-
330
- return get_option('acf_version');
331
-
332
- }
333
-
334
-
335
- /*
336
- * acf_update_db_version
337
- *
338
- * This function will update the current ACF DB version
339
- *
340
- * @type function
341
- * @date 10/09/2016
342
- * @since 5.4.0
343
- *
344
- * @param $post_id (int)
345
- * @return $post_id (int)
346
- */
347
-
348
- function acf_update_db_version( $version = '' ) {
349
-
350
- // default to latest
351
- if( !$version ) {
352
-
353
- $version = acf_get_setting('version');
354
-
355
- }
356
-
357
-
358
- // update
359
- update_option('acf_version', $version );
360
-
361
- }
362
-
363
-
364
- /*
365
- * acf_get_db_updates
366
- *
367
- * This function will return available db updates
368
- *
369
- * @type function
370
- * @date 12/05/2014
371
- * @since 5.0.0
372
- *
373
- * @param $post_id (int)
374
- * @return $post_id (int)
375
- */
376
-
377
- function acf_get_db_updates() {
378
-
379
- // vars
380
- $available = array();
381
- $db_updates = acf()->admin->install->db_updates;
382
- $acf_version = acf_get_setting('version');
383
- $db_version = acf_get_db_version();
384
-
385
-
386
- // bail early if is fresh install
387
- if( !$db_version ) {
388
-
389
- acf_update_db_version($acf_version);
390
- return false;
391
-
392
- }
393
-
394
-
395
- // bail early if is up to date
396
- if( acf_version_compare($db_version, '>=', $acf_version)) return false;
397
-
398
-
399
- // loop
400
- foreach( $db_updates as $version => $callback ) {
401
-
402
- // ignore if update is for a future version (may exist for testing)
403
- if( acf_version_compare( $version, '>', $acf_version ) ) continue;
404
-
405
-
406
- // ignore if update has already been run
407
- if( acf_version_compare( $version, '<=', $db_version ) ) continue;
408
-
409
-
410
- // append
411
- $available[ $version ] = $callback;
412
-
413
- }
414
-
415
-
416
- // bail early if no updates available
417
- // - also update DB to current version
418
- if( empty($available) ) {
419
-
420
- acf_update_db_version($acf_version);
421
- return false;
422
-
423
- }
424
-
425
-
426
- // return
427
- return $available;
428
-
429
- }
430
-
431
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/views/html-admin-page-upgrade-network.php ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Network Admin Database Upgrade
5
+ *
6
+ * Shows the databse upgrade process.
7
+ *
8
+ * @date 24/8/18
9
+ * @since 5.7.4
10
+ * @param void
11
+ */
12
+
13
+ ?>
14
+ <style type="text/css">
15
+
16
+ /* hide steps */
17
+ .show-on-complete {
18
+ display: none;
19
+ }
20
+
21
+ </style>
22
+ <div id="acf-upgrade-wrap" class="wrap">
23
+
24
+ <h1><?php _e("Upgrade Database", 'acf'); ?></h1>
25
+
26
+ <p><?php echo sprintf( __("The following sites require a DB upgrade. Check the ones you want to update and then click %s.", 'acf'), '"' . __('Upgrade Sites', 'acf') . '"'); ?></p>
27
+ <p><input type="submit" name="upgrade" value="<?php _e('Upgrade Sites', 'acf'); ?>" class="button" id="upgrade-sites"></p>
28
+
29
+ <table class="wp-list-table widefat">
30
+ <thead>
31
+ <tr>
32
+ <td class="manage-column check-column" scope="col">
33
+ <input type="checkbox" id="sites-select-all">
34
+ </td>
35
+ <th class="manage-column" scope="col" style="width:33%;">
36
+ <label for="sites-select-all"><?php _e("Site", 'acf'); ?></label>
37
+ </th>
38
+ <th><?php _e("Description", 'acf'); ?></th>
39
+ </tr>
40
+ </thead>
41
+ <tfoot>
42
+ <tr>
43
+ <td class="manage-column check-column" scope="col">
44
+ <input type="checkbox" id="sites-select-all-2">
45
+ </td>
46
+ <th class="manage-column" scope="col">
47
+ <label for="sites-select-all-2"><?php _e("Site", 'acf'); ?></label>
48
+ </th>
49
+ <th><?php _e("Description", 'acf'); ?></th>
50
+ </tr>
51
+ </tfoot>
52
+ <tbody id="the-list">
53
+ <?php
54
+
55
+ $sites = acf_get_sites();
56
+ if( $sites ):
57
+ foreach( $sites as $i => $site ):
58
+
59
+ // switch blog
60
+ switch_to_blog( $site['blog_id'] );
61
+
62
+ ?>
63
+ <tr<?php if( $i % 2 == 0 ): ?> class="alternate"<?php endif; ?>>
64
+ <th class="check-column" scope="row">
65
+ <?php if( acf_has_upgrade() ): ?>
66
+ <input type="checkbox" value="<?php echo $site['blog_id']; ?>" name="checked[]">
67
+ <?php endif; ?>
68
+ </th>
69
+ <td>
70
+ <strong><?php echo get_bloginfo('name'); ?></strong><br /><?php echo home_url(); ?>
71
+ </td>
72
+ <td>
73
+ <?php if( acf_has_upgrade() ): ?>
74
+ <span class="response"><?php printf(__('Site requires database upgrade from %s to %s', 'acf'), acf_get_db_version(), ACF_VERSION); ?></span>
75
+ <?php else: ?>
76
+ <?php _e("Site is up to date", 'acf'); ?>
77
+ <?php endif; ?>
78
+ </td>
79
+ </tr>
80
+ <?php
81
+
82
+ // restore
83
+ restore_current_blog();
84
+
85
+ endforeach;
86
+ endif;
87
+
88
+ ?>
89
+ </tbody>
90
+ </table>
91
+
92
+ <p><input type="submit" name="upgrade" value="<?php _e('Upgrade Sites', 'acf'); ?>" class="button" id="upgrade-sites-2"></p>
93
+ <p class="show-on-complete"><?php echo sprintf( __('Database Upgrade complete. <a href="%s">Return to network dashboard</a>', 'acf'), network_admin_url() ); ?></p>
94
+
95
+ <script type="text/javascript">
96
+ (function($) {
97
+
98
+ var upgrader = new acf.Model({
99
+ events: {
100
+ 'click #upgrade-sites': 'onClick',
101
+ 'click #upgrade-sites-2': 'onClick'
102
+ },
103
+ $inputs: function(){
104
+ return $('#the-list input:checked');
105
+ },
106
+ onClick: function( e, $el ){
107
+
108
+ // prevent default
109
+ e.preventDefault();
110
+
111
+ // confirm action
112
+ if( !confirm("<?php _e('It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the updater now?', 'acf'); ?>") ) {
113
+ return;
114
+ }
115
+
116
+ // upgrade
117
+ this.upgrade();
118
+ },
119
+ upgrade: function(){
120
+
121
+ // vars
122
+ var $inputs = this.$inputs();
123
+
124
+ // bail early if no sites selected
125
+ if( !$inputs.length ) {
126
+ return this.complete();
127
+ }
128
+
129
+ // disable buttons
130
+ $('.button').prop('disabled', true);
131
+
132
+ // vars
133
+ var $input = $inputs.first();
134
+ var $row = $input.closest('tr');
135
+ var text = '';
136
+ var success = false;
137
+
138
+ // show loading
139
+ $row.find('.response').html('<i class="acf-loading"></i></span> <?php printf(__('Upgrading data to version %s', 'acf'), ACF_VERSION); ?>');
140
+
141
+ // send ajax request to upgrade DB
142
+ $.ajax({
143
+ url: acf.get('ajaxurl'),
144
+ dataType: 'json',
145
+ type: 'post',
146
+ data: acf.prepareForAjax({
147
+ action: 'acf/ajax/upgrade',
148
+ blog_id: $input.val()
149
+ }),
150
+ success: function( json ){
151
+
152
+ // success
153
+ if( acf.isAjaxSuccess(json) ) {
154
+
155
+ // update
156
+ success = true;
157
+
158
+ // remove input
159
+ $input.remove();
160
+
161
+ // set response text
162
+ text = '<?php _e('Upgrade complete.', 'acf'); ?>';
163
+ if( jsonText = acf.getAjaxMessage(json) ) {
164
+ text = jsonText;
165
+ }
166
+
167
+ // error
168
+ } else {
169
+
170
+ // set response text
171
+ text = '<?php _e('Upgrade failed.', 'acf'); ?>';
172
+ if( jsonText = acf.getAjaxError(json) ) {
173
+ text += ' <pre>' + jsonText + '</pre>';
174
+ }
175
+ }
176
+ },
177
+ error: function( jqXHR, textStatus, errorThrown ){
178
+
179
+ // set response text
180
+ text = '<?php _e('Upgrade failed.', 'acf'); ?>';
181
+ if( errorThrown) {
182
+ text += ' <pre>' + errorThrown + '</pre>';
183
+ }
184
+ },
185
+ complete: this.proxy(function(){
186
+
187
+ // display text
188
+ $row.find('.response').html( text );
189
+
190
+ // if successful upgrade, proceed to next site. Otherwise, skip to complete.
191
+ if( success ) {
192
+ this.upgrade();
193
+ } else {
194
+ this.complete();
195
+ }
196
+ })
197
+ });
198
+ },
199
+ complete: function(){
200
+
201
+ // enable buttons
202
+ $('.button').prop('disabled', false);
203
+
204
+ // show message
205
+ $('.show-on-complete').show();
206
+ }
207
+ });
208
+
209
+ })(jQuery);
210
+ </script>
211
+ </div>
includes/admin/views/html-admin-page-upgrade.php ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Admin Database Upgrade
5
+ *
6
+ * Shows the databse upgrade process.
7
+ *
8
+ * @date 24/8/18
9
+ * @since 5.7.4
10
+ * @param void
11
+ */
12
+
13
+ ?>
14
+ <style type="text/css">
15
+
16
+ /* hide steps */
17
+ .step-1,
18
+ .step-2,
19
+ .step-3 {
20
+ display: none;
21
+ }
22
+
23
+ </style>
24
+ <div id="acf-upgrade-wrap" class="wrap">
25
+
26
+ <h1><?php _e("Upgrade Database", 'acf'); ?></h1>
27
+
28
+ <?php if( acf_has_upgrade() ): ?>
29
+
30
+ <p><?php _e('Reading upgrade tasks...', 'acf'); ?></p>
31
+ <p class="step-1"><i class="acf-loading"></i> <?php printf(__('Upgrading data to version %s', 'acf'), ACF_VERSION); ?></p>
32
+ <p class="step-2"></p>
33
+ <p class="step-3"><?php echo sprintf( __('Database upgrade complete. <a href="%s">See what\'s new</a>', 'acf' ), admin_url('edit.php?post_type=acf-field-group&page=acf-settings-info') ); ?></p>
34
+
35
+ <script type="text/javascript">
36
+ (function($) {
37
+
38
+ var upgrader = new acf.Model({
39
+ initialize: function(){
40
+
41
+ // allow user to read message for 1 second
42
+ this.setTimeout( this.upgrade, 1000 );
43
+ },
44
+ upgrade: function(){
45
+
46
+ // show step 1
47
+ $('.step-1').show();
48
+
49
+ // vars
50
+ var response = '';
51
+ var success = false;
52
+
53
+ // send ajax request to upgrade DB
54
+ $.ajax({
55
+ url: acf.get('ajaxurl'),
56
+ dataType: 'json',
57
+ type: 'post',
58
+ data: acf.prepareForAjax({
59
+ action: 'acf/ajax/upgrade'
60
+ }),
61
+ success: function( json ){
62
+
63
+ // success
64
+ if( acf.isAjaxSuccess(json) ) {
65
+
66
+ // update
67
+ success = true;
68
+
69
+ // set response text
70
+ if( jsonText = acf.getAjaxMessage(json) ) {
71
+ response = jsonText;
72
+ }
73
+
74
+ // error
75
+ } else {
76
+
77
+ // set response text
78
+ response = '<?php _e('Upgrade failed.', 'acf'); ?>';
79
+ if( jsonText = acf.getAjaxError(json) ) {
80
+ response += ' <pre>' + jsonText + '</pre>';
81
+ }
82
+ }
83
+ },
84
+ error: function( jqXHR, textStatus, errorThrown ){
85
+
86
+ // set response text
87
+ response = '<?php _e('Upgrade failed.', 'acf'); ?>';
88
+ if( errorThrown) {
89
+ response += ' <pre>' + errorThrown + '</pre>';
90
+ }
91
+ },
92
+ complete: this.proxy(function(){
93
+
94
+ // remove spinner
95
+ $('.acf-loading').hide();
96
+
97
+ // display response
98
+ if( response ) {
99
+ $('.step-2').show().html( response );
100
+ }
101
+
102
+ // display success
103
+ if( success ) {
104
+ $('.step-3').show();
105
+ }
106
+ })
107
+ });
108
+ }
109
+ });
110
+
111
+ })(jQuery);
112
+ </script>
113
+
114
+ <?php else: ?>
115
+
116
+ <p><?php _e('No updates available.', 'acf'); ?></p>
117
+
118
+ <?php endif; ?>
119
+ </div>
includes/admin/views/html-location-group.php CHANGED
@@ -6,15 +6,13 @@
6
  <tbody>
7
  <?php foreach( $group as $i => $rule ):
8
 
9
- // append id
 
 
 
10
  $rule['id'] = "rule_{$i}";
11
  $rule['group'] = $group_id;
12
 
13
-
14
- // valid rule
15
- $rule = acf_get_valid_location_rule($rule);
16
-
17
-
18
  // view
19
  acf_get_view('html-location-rule', array(
20
  'rule' => $rule
6
  <tbody>
7
  <?php foreach( $group as $i => $rule ):
8
 
9
+ // validate rule
10
+ $rule = acf_validate_location_rule($rule);
11
+
12
+ // append id and group
13
  $rule['id'] = "rule_{$i}";
14
  $rule['group'] = $group_id;
15
 
 
 
 
 
 
16
  // view
17
  acf_get_view('html-location-rule', array(
18
  'rule' => $rule
includes/admin/views/html-location-rule.php CHANGED
@@ -1,3 +1,9 @@
 
 
 
 
 
 
1
  <tr data-id="<?php echo $rule['id']; ?>">
2
  <td class="param">
3
  <?php
@@ -12,7 +18,7 @@
12
  acf_render_field(array(
13
  'type' => 'select',
14
  'name' => 'param',
15
- 'prefix' => $rule['prefix'],
16
  'value' => $rule['param'],
17
  'choices' => $choices,
18
  'class' => 'refresh-location-rule'
@@ -35,7 +41,7 @@
35
  acf_render_field(array(
36
  'type' => 'select',
37
  'name' => 'operator',
38
- 'prefix' => $rule['prefix'],
39
  'value' => $rule['operator'],
40
  'choices' => $choices
41
  ));
@@ -62,7 +68,7 @@
62
  acf_render_field(array(
63
  'type' => 'select',
64
  'name' => 'value',
65
- 'prefix' => $rule['prefix'],
66
  'value' => $rule['value'],
67
  'choices' => $choices
68
  ));
1
+ <?php
2
+
3
+ // vars
4
+ $prefix = 'acf_field_group[location]['.$rule['group'].']['.$rule['id'].']';
5
+
6
+ ?>
7
  <tr data-id="<?php echo $rule['id']; ?>">
8
  <td class="param">
9
  <?php
18
  acf_render_field(array(
19
  'type' => 'select',
20
  'name' => 'param',
21
+ 'prefix' => $prefix,
22
  'value' => $rule['param'],
23
  'choices' => $choices,
24
  'class' => 'refresh-location-rule'
41
  acf_render_field(array(
42
  'type' => 'select',
43
  'name' => 'operator',
44
+ 'prefix' => $prefix,
45
  'value' => $rule['operator'],
46
  'choices' => $choices
47
  ));
68
  acf_render_field(array(
69
  'type' => 'select',
70
  'name' => 'value',
71
+ 'prefix' => $prefix,
72
  'value' => $rule['value'],
73
  'choices' => $choices
74
  ));
includes/admin/views/html-notice-upgrade.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // calculate add-ons (non pro only)
4
+ $plugins = array();
5
+
6
+ if( !acf_get_setting('pro') ) {
7
+
8
+ if( is_plugin_active('acf-repeater/acf-repeater.php') ) $plugins[] = __("Repeater",'acf');
9
+ if( is_plugin_active('acf-flexible-content/acf-flexible-content.php') ) $plugins[] = __("Flexible Content",'acf');
10
+ if( is_plugin_active('acf-gallery/acf-gallery.php') ) $plugins[] = __("Gallery",'acf');
11
+ if( is_plugin_active('acf-options-page/acf-options-page.php') ) $plugins[] = __("Options Page",'acf');
12
+
13
+ }
14
+
15
+ ?>
16
+ <div id="acf-upgrade-notice" class="notice">
17
+
18
+ <div class="col-content">
19
+
20
+ <img src="<?php echo acf_get_url('assets/images/acf-logo.png'); ?>" />
21
+ <h2><?php _e("Database Upgrade Required",'acf'); ?></h2>
22
+ <p><?php printf(__("Thank you for updating to %s v%s!", 'acf'), acf_get_setting('name'), acf_get_setting('version') ); ?><br /><?php _e("This version contains improvements to your database and requires an upgrade.", 'acf'); ?></p>
23
+ <?php if( !empty($plugins) ): ?>
24
+ <p><?php printf(__("Please also ensure any premium add-ons (%s) have first been updated to the latest version.", 'acf'), implode(', ', $plugins) ); ?></p>
25
+ <?php endif; ?>
26
+ </div>
27
+
28
+ <div class="col-actions">
29
+ <a id="acf-upgrade-button" href="<?php echo $button_url; ?>" class="button button-primary button-hero"><?php echo $button_text; ?></a>
30
+ </div>
31
+
32
+ </div>
33
+ <?php if( $confirm ): ?>
34
+ <script type="text/javascript">
35
+ (function($) {
36
+
37
+ $("#acf-upgrade-button").on("click", function(){
38
+ return confirm("<?php _e( 'It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the updater now?', 'acf' ); ?>");
39
+ });
40
+
41
+ })(jQuery);
42
+ </script>
43
+ <?php endif; ?>
includes/admin/views/install-network.php DELETED
@@ -1,233 +0,0 @@
1
- <?php
2
-
3
- // vars
4
- $button = __('Upgrade Sites');
5
-
6
- ?>
7
- <div id="acf-upgrade-wrap" class="wrap">
8
-
9
- <h1><?php _e("Advanced Custom Fields Database Upgrade",'acf'); ?></h1>
10
-
11
- <p><?php echo sprintf( __("The following sites require a DB upgrade. Check the ones you want to update and then click %s.", 'acf'), '"' . $button . '"'); ?></p>
12
-
13
- <p><input type="submit" name="upgrade" value="<?php echo $button; ?>" class="button" id="upgrade-sites"></p>
14
-
15
- <table class="wp-list-table widefat">
16
-
17
- <thead>
18
- <tr>
19
- <td class="manage-column check-column" scope="col"><input type="checkbox" id="sites-select-all"></td>
20
- <th class="manage-column" scope="col" style="width:33%;"><label for="sites-select-all"><?php _e("Site", 'acf'); ?></label></th>
21
- <th><?php _e("Description", 'acf'); ?></th>
22
- </tr>
23
- </thead>
24
-
25
- <tfoot>
26
- <tr>
27
- <td class="manage-column check-column" scope="col"><input type="checkbox" id="sites-select-all-2"></td>
28
- <th class="manage-column" scope="col"><label for="sites-select-all-2"><?php _e("Site", 'acf'); ?></label></th>
29
- <th><?php _e("Description", 'acf'); ?></th>
30
- </tr>
31
- </tfoot>
32
-
33
- <tbody id="the-list">
34
-
35
- <?php foreach( $sites as $i => $site ): ?>
36
-
37
- <tr<?php if( $i % 2 == 0 ): ?> class="alternate"<?php endif; ?>>
38
- <th class="check-column" scope="row">
39
- <?php if( $site['updates'] ): ?>
40
- <input type="checkbox" value="<?php echo $site['blog_id']; ?>" name="checked[]">
41
- <?php endif; ?>
42
- </th>
43
- <td>
44
- <strong><?php echo $site['name']; ?></strong><br /><?php echo $site['url']; ?>
45
- </td>
46
- <td>
47
- <?php if( $site['updates'] ): ?>
48
- <span class="response"><?php printf(__('Site requires database upgrade from %s to %s', 'acf'), $site['acf_version'], $plugin_version); ?></span>
49
- <?php else: ?>
50
- <?php _e("Site is up to date", 'acf'); ?>
51
- <?php endif; ?>
52
- </td>
53
- </tr>
54
-
55
- <?php endforeach; ?>
56
-
57
- </tbody>
58
-
59
- </table>
60
-
61
- <p><input type="submit" name="upgrade" value="<?php echo $button; ?>" class="button" id="upgrade-sites-2"></p>
62
-
63
- <p class="show-on-complete"><?php echo sprintf( __('Database Upgrade complete. <a href="%s">Return to network dashboard</a>', 'acf'), network_admin_url() ); ?></p>
64
-
65
- <style type="text/css">
66
-
67
- /* hide show */
68
- .show-on-complete {
69
- display: none;
70
- }
71
-
72
- </style>
73
-
74
- <script type="text/javascript">
75
- (function($) {
76
-
77
- var upgrader = {
78
-
79
- $buttons: null,
80
-
81
- $inputs: null,
82
- i: 0,
83
-
84
- init : function(){
85
-
86
- // reference
87
- var self = this;
88
-
89
-
90
- // vars
91
- this.$buttons = $('#upgrade-sites, #upgrade-sites-2');
92
-
93
-
94
- // events
95
- this.$buttons.on('click', function( e ){
96
-
97
- // prevent default
98
- e.preventDefault();
99
-
100
-
101
- // confirm
102
- var answer = confirm("<?php _e('It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the updater now?', 'acf'); ?>");
103
-
104
-
105
- // bail early if no confirm
106
- if( !answer ) {
107
-
108
- return;
109
-
110
- }
111
-
112
-
113
- // populate inputs
114
- self.$inputs = $('#the-list input:checked');
115
-
116
-
117
- // upgrade
118
- self.upgrade();
119
-
120
- });
121
-
122
-
123
- // return
124
- return this;
125
-
126
- },
127
-
128
- upgrade: function(){
129
-
130
- // reference
131
- var self = this;
132
-
133
-
134
- // bail early if no sites
135
- if( !this.$inputs.length ) {
136
-
137
- return;
138
-
139
- }
140
-
141
-
142
- // complete
143
- if( this.i >= this.$inputs.length ) {
144
-
145
- this.complete();
146
- return;
147
-
148
- }
149
-
150
-
151
- // disable buttons
152
- this.$buttons.attr('disabled', 'disabled');
153
-
154
-
155
- // vars
156
- var $input = this.$inputs.eq( this.i ),
157
- $tr = $input.closest('tr'),
158
- text = '<?php _e('Upgrade complete', 'acf'); ?>';
159
-
160
-
161
- // add loading
162
- $tr.find('.response').html('<i class="acf-loading"></i></span> <?php printf(__('Upgrading data to version %s', 'acf'), $plugin_version); ?>');
163
-
164
-
165
- // get results
166
- var xhr = $.ajax({
167
- url: '<?php echo admin_url('admin-ajax.php'); ?>',
168
- dataType: 'json',
169
- type: 'post',
170
- data: {
171
- action: 'acf/admin/db_update',
172
- nonce: '<?php echo wp_create_nonce('acf_db_update'); ?>',
173
- blog_id: $input.val(),
174
- },
175
- success: function( json ){
176
-
177
- // remove input
178
- $input.prop('checked', false);
179
- $input.remove();
180
-
181
- // vars
182
- var response = '';
183
-
184
- // success
185
- if( acf.isAjaxSuccess(json) ) {
186
- response = acf.getAjaxMessage(json);
187
- } else {
188
- response = acf.getAjaxError(json);
189
- }
190
-
191
- // update text
192
- if( response ) {
193
- text = '<pre>' + response + '</pre>';
194
- }
195
- },
196
- complete: function(){
197
-
198
- $tr.find('.response').html( text );
199
-
200
-
201
- // upgrade next site
202
- self.next();
203
-
204
- }
205
- });
206
-
207
- },
208
-
209
- next: function(){
210
-
211
- this.i++;
212
-
213
- this.upgrade();
214
-
215
- },
216
-
217
- complete: function(){
218
-
219
- // enable buttons
220
- this.$buttons.removeAttr('disabled');
221
-
222
-
223
- // show message
224
- $('.show-on-complete').show();
225
-
226
- }
227
-
228
- }.init();
229
-
230
- })(jQuery);
231
- </script>
232
-
233
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/views/install-notice.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
-
3
- // calculate add-ons (non pro only)
4
- $plugins = array();
5
-
6
- if( !acf_get_setting('pro') ) {
7
-
8
- if( is_plugin_active('acf-repeater/acf-repeater.php') ) $plugins[] = __("Repeater",'acf');
9
- if( is_plugin_active('acf-flexible-content/acf-flexible-content.php') ) $plugins[] = __("Flexible Content",'acf');
10
- if( is_plugin_active('acf-gallery/acf-gallery.php') ) $plugins[] = __("Gallery",'acf');
11
- if( is_plugin_active('acf-options-page/acf-options-page.php') ) $plugins[] = __("Options Page",'acf');
12
-
13
- }
14
-
15
- ?>
16
- <div id="acf-upgrade-notice">
17
-
18
- <div class="inner">
19
-
20
- <div class="acf-icon logo">
21
- <i class="acf-sprite-logo"></i>
22
- </div>
23
-
24
- <div class="content">
25
-
26
- <h2><?php _e("Database Upgrade Required",'acf'); ?></h2>
27
-
28
- <p><?php printf(__("Thank you for updating to %s v%s!", 'acf'), acf_get_setting('name'), acf_get_setting('version') ); ?><br /><?php _e("Before you start using the new awesome features, please update your database to the newest version.", 'acf'); ?></p>
29
-
30
- <?php if( !empty($plugins) ): ?>
31
- <p><?php printf(__("Please also ensure any premium add-ons (%s) have first been updated to the latest version.", 'acf'), implode(', ', $plugins) ); ?></p>
32
- <?php endif; ?>
33
-
34
- <p><a id="acf-notice-action" href="<?php echo $button_url; ?>" class="button button-primary"><?php echo $button_text; ?></a></p>
35
-
36
- <?php if( $confirm ): ?>
37
- <script type="text/javascript">
38
- (function($) {
39
-
40
- $("#acf-notice-action").on("click", function(){
41
-
42
- var answer = confirm("<?php _e( 'It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the updater now?', 'acf' ); ?>");
43
- return answer;
44
-
45
- });
46
-
47
- })(jQuery);
48
- </script>
49
- <?php endif; ?>
50
-
51
- </div>
52
-
53
- <div class="clear"></div>
54
-
55
- </div>
56
-
57
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/views/install.php DELETED
@@ -1,108 +0,0 @@
1
- <div id="acf-upgrade-wrap" class="wrap">
2
-
3
- <h1><?php _e("Advanced Custom Fields Database Upgrade",'acf'); ?></h1>
4
-
5
- <?php if( $updates ): ?>
6
-
7
- <p><?php _e('Reading upgrade tasks...', 'acf'); ?></p>
8
-
9
- <p class="show-on-ajax"><i class="acf-loading"></i> <?php printf(__('Upgrading data to version %s', 'acf'), $plugin_version); ?></p>
10
-
11
- <p class="show-on-complete"><?php echo sprintf( __('Database Upgrade complete. <a href="%s">See what\'s new</a>', 'acf' ), admin_url('edit.php?post_type=acf-field-group&page=acf-settings-info') ); ?></p>
12
-
13
- <style type="text/css">
14
-
15
- /* hide show */
16
- .show-on-ajax,
17
- .show-on-complete {
18
- display: none;
19
- }
20
-
21
- </style>
22
-
23
- <script type="text/javascript">
24
- (function($) {
25
-
26
- var upgrader = {
27
-
28
- init: function(){
29
-
30
- // reference
31
- var self = this;
32
-
33
-
34
- // allow user to read message for 1 second
35
- setTimeout(function(){
36
-
37
- self.upgrade();
38
-
39
- }, 1000);
40
-
41
-
42
- // return
43
- return this;
44
- },
45
-
46
- upgrade: function(){
47
-
48
- // reference
49
- var self = this;
50
-
51
-
52
- // show message
53
- $('.show-on-ajax').show();
54
-
55
-
56
- // get results
57
- var xhr = $.ajax({
58
- url: '<?php echo admin_url('admin-ajax.php'); ?>',
59
- dataType: 'json',
60
- type: 'post',
61
- data: {
62
- action: 'acf/admin/db_update',
63
- nonce: '<?php echo wp_create_nonce('acf_db_update'); ?>'
64
- },
65
- success: function( json ){
66
-
67
- // vars
68
- var response = '';
69
-
70
- // success
71
- if( acf.isAjaxSuccess(json) ) {
72
- response = acf.getAjaxMessage(json);
73
- } else {
74
- response = acf.getAjaxError(json);
75
- }
76
-
77
- // bail early if no message text
78
- if( response ) {
79
- $('.show-on-ajax').html( response );
80
- }
81
- },
82
- complete: function( json ){
83
-
84
- // remove spinner
85
- $('.acf-loading').hide();
86
-
87
-
88
- // show complete
89
- $('.show-on-complete').show();
90
-
91
- }
92
- });
93
-
94
-
95
- }
96
-
97
- }.init();
98
-
99
- })(jQuery);
100
- </script>
101
-
102
- <?php else: ?>
103
-
104
- <p><?php _e('No updates available.', 'acf'); ?></p>
105
-
106
- <?php endif; ?>
107
-
108
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/views/settings-info.php CHANGED
@@ -2,9 +2,6 @@
2
 
3
  <h1><?php _e("Welcome to Advanced Custom Fields",'acf'); ?> <?php echo $version; ?></h1>
4
  <div class="about-text"><?php printf(__("Thank you for updating! ACF %s is bigger and better than ever before. We hope you like it.", 'acf'), $version); ?></div>
5
- <div class="acf-icon logo">
6
- <i class="acf-sprite-logo"></i>
7
- </div>
8
 
9
  <h2 class="nav-tab-wrapper">
10
  <?php foreach( $tabs as $tab_slug => $tab_title ): ?>
@@ -14,142 +11,134 @@
14
 
15
  <?php if( $active == 'new' ): ?>
16
 
17
- <h2 class="about-headline-callout"><?php _e("A smoother custom field experience", 'acf'); ?></h2>
18
-
19
- <div class="feature-section acf-three-col">
20
- <div>
21
- <img src="https://assets.advancedcustomfields.com/info/5.0.0/select2.png">
22
- <h3><?php _e("Improved Usability", 'acf'); ?></h3>
23
- <p><?php _e("Including the popular Select2 library has improved both usability and speed across a number of field types including post object, page link, taxonomy and select.", 'acf'); ?></p>
24
- </div>
25
- <div>
26
- <img src="https://assets.advancedcustomfields.com/info/5.0.0/design.png">
27
- <h3><?php _e("Improved Design", 'acf'); ?></h3>
28
- <p><?php _e("Many fields have undergone a visual refresh to make ACF look better than ever! Noticeable changes are seen on the gallery, relationship and oEmbed (new) fields!", 'acf'); ?></p>
29
- </div>
30
- <div>
31
- <img src="https://assets.advancedcustomfields.com/info/5.0.0/sub-fields.png">
32
- <h3><?php _e("Improved Data", 'acf'); ?></h3>
33
- <p><?php _e("Redesigning the data architecture has allowed sub fields to live independently from their parents. This allows you to drag and drop fields in and out of parent fields!", 'acf'); ?></p>
 
34
  </div>
35
  </div>
36
 
37
  <hr />
38
 
39
- <h2 class="about-headline-callout"><?php _e("Goodbye Add-ons. Hello PRO", 'acf'); ?></h2>
40
-
41
- <div class="feature-section acf-three-col">
42
-
43
- <div>
44
- <h3><?php _e("Introducing ACF PRO", 'acf'); ?></h3>
45
- <p><?php _e("We're changing the way premium functionality is delivered in an exciting way!", 'acf'); ?></p>
46
- <p><?php printf(__('All 4 premium add-ons have been combined into a new <a href="%s">Pro version of ACF</a>. With both personal and developer licenses available, premium functionality is more affordable and accessible than ever before!', 'acf'), esc_url('https://www.advancedcustomfields.com/pro')); ?></p>
47
- </div>
48
-
49
- <div>
50
- <h3><?php _e("Powerful Features", 'acf'); ?></h3>
51
- <p><?php _e("ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful gallery field and the ability to create extra admin options pages!", 'acf'); ?></p>
52
- <p><?php printf(__('Read more about <a href="%s">ACF PRO features</a>.', 'acf'), esc_url('https://www.advancedcustomfields.com/pro')); ?></p>
53
- </div>
54
-
55
- <div>
56
- <h3><?php _e("Easy Upgrading", 'acf'); ?></h3>
57
- <p><?php printf(__('To help make upgrading easy, <a href="%s">login to your store account</a> and claim a free copy of ACF PRO!', 'acf'), esc_url('https://www.advancedcustomfields.com/my-account/')); ?></p>
58
- <p><?php printf(__('We also wrote an <a href="%s">upgrade guide</a> to answer any questions, but if you do have one, please contact our support team via the <a href="%s">help desk</a>', 'acf'), esc_url('https://www.advancedcustomfields.com/resources/updates/upgrading-v4-v5/'), esc_url('https://support.advancedcustomfields.com')); ?>
59
 
60
- </div>
61
-
 
 
 
 
 
 
 
 
 
 
62
  </div>
63
 
64
  <hr />
65
 
66
- <h2 class="about-headline-callout"><?php _e("Under the Hood", 'acf'); ?></h2>
67
-
68
- <div class="feature-section acf-three-col">
69
-
70
- <div>
71
- <h4><?php _e("Smarter field settings", 'acf'); ?></h4>
72
- <p><?php _e("ACF now saves its field settings as individual post objects", 'acf'); ?></p>
73
- </div>
74
 
75
- <div>
76
- <h4><?php _e("More AJAX", 'acf'); ?></h4>
77
- <p><?php _e("More fields use AJAX powered search to speed up page loading", 'acf'); ?></p>
78
- </div>
79
 
80
- <div>
81
- <h4><?php _e("Local JSON", 'acf'); ?></h4>
82
- <p><?php _e("New auto export to JSON feature improves speed", 'acf'); ?></p>
83
- </div>
84
-
85
- <br />
86
-
87
- <div>
88
- <h4><?php _e("Better version control", 'acf'); ?></h4>
89
- <p><?php _e("New auto export to JSON feature allows field settings to be version controlled", 'acf'); ?></p>
90
- </div>
91
-
92
- <div>
93
- <h4><?php _e("Swapped XML for JSON", 'acf'); ?></h4>
94
- <p><?php _e("Import / Export now uses JSON in favour of XML", 'acf'); ?></p>
95
- </div>
96
-
97
- <div>
98
- <h4><?php _e("New Forms", 'acf'); ?></h4>
99
- <p><?php _e("Fields can now be mapped to comments, widgets and all user forms!", 'acf'); ?></p>
100
- </div>
101
-
102
- <br />
103
-
104
- <div>
105
- <h4><?php _e("New Field", 'acf'); ?></h4>
106
- <p><?php _e("A new field for embedding content has been added", 'acf'); ?></p>
107
- </div>
108
-
109
- <div>
110
- <h4><?php _e("New Gallery", 'acf'); ?></h4>
111
- <p><?php _e("The gallery field has undergone a much needed facelift", 'acf'); ?></p>
112
- </div>
113
-
114
- <div>
115
- <h4><?php _e("New Settings", 'acf'); ?></h4>
116
- <p><?php _e("Field group settings have been added for label placement and instruction placement", 'acf'); ?></p>
117
- </div>
118
-
119
- <br />
120
-
121
- <div>
122
- <h4><?php _e("Better Front End Forms", 'acf'); ?></h4>
123
- <p><?php _e("acf_form() can now create a new post on submission", 'acf'); ?></p>
124
- </div>
125
-
126
- <div>
127
- <h4><?php _e("Better Validation", 'acf'); ?></h4>
128
- <p><?php _e("Form validation is now done via PHP + AJAX in favour of only JS", 'acf'); ?></p>
129
- </div>
130
-
131
- <div>
132
- <h4><?php _e("Relationship Field", 'acf'); ?></h4>
133
- <p><?php _e("New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)", 'acf'); ?></p>
134
- </div>
135
-
136
- <br />
137
-
138
- <div>
139
- <h4><?php _e("Moving Fields", 'acf'); ?></h4>
140
- <p><?php _e("New field group functionality allows you to move a field between groups & parents", 'acf'); ?></p>
141
- </div>
142
-
143
- <div>
144
- <h4><?php _e("Page Link", 'acf'); ?></h4>
145
- <p><?php _e("New archives group in page_link field selection", 'acf'); ?></p>
146
- </div>
147
-
148
- <div>
149
- <h4><?php _e("Better Options Pages", 'acf'); ?></h4>
150
- <p><?php _e("New functions for options page allow creation of both parent and child menu pages", 'acf'); ?></p>
 
 
 
151
  </div>
152
-
153
  </div>
154
 
155
  <?php elseif( $active == 'changelog' ): ?>
2
 
3
  <h1><?php _e("Welcome to Advanced Custom Fields",'acf'); ?> <?php echo $version; ?></h1>
4
  <div class="about-text"><?php printf(__("Thank you for updating! ACF %s is bigger and better than ever before. We hope you like it.", 'acf'), $version); ?></div>
 
 
 
5
 
6
  <h2 class="nav-tab-wrapper">
7
  <?php foreach( $tabs as $tab_slug => $tab_title ): ?>
11
 
12
  <?php if( $active == 'new' ): ?>
13
 
14
+ <div class="feature-section">
15
+ <h2><?php _e("A Smoother Experience", 'acf'); ?> </h2>
16
+ <div class="acf-three-col">
17
+ <div>
18
+ <p><img src="https://assets.advancedcustomfields.com/info/5.0.0/select2.png" /></p>
19
+ <h3><?php _e("Improved Usability", 'acf'); ?></h3>
20
+ <p><?php _e("Including the popular Select2 library has improved both usability and speed across a number of field types including post object, page link, taxonomy and select.", 'acf'); ?></p>
21
+ </div>
22
+ <div>
23
+ <p><img src="https://assets.advancedcustomfields.com/info/5.0.0/design.png" /></p>
24
+ <h3><?php _e("Improved Design", 'acf'); ?></h3>
25
+ <p><?php _e("Many fields have undergone a visual refresh to make ACF look better than ever! Noticeable changes are seen on the gallery, relationship and oEmbed (new) fields!", 'acf'); ?></p>
26
+ </div>
27
+ <div>
28
+ <p><img src="https://assets.advancedcustomfields.com/info/5.0.0/sub-fields.png" /></p>
29
+ <h3><?php _e("Improved Data", 'acf'); ?></h3>
30
+ <p><?php _e("Redesigning the data architecture has allowed sub fields to live independently from their parents. This allows you to drag and drop fields in and out of parent fields!", 'acf'); ?></p>
31
+ </div>
32
  </div>
33
  </div>
34
 
35
  <hr />
36
 
37
+ <div class="feature-section">
38
+ <h2><?php _e("Goodbye Add-ons. Hello PRO", 'acf'); ?> 👋</h2>
39
+ <div class="acf-three-col">
40
+ <div>
41
+ <h3><?php _e("Introducing ACF PRO", 'acf'); ?></h3>
42
+ <p><?php _e("We're changing the way premium functionality is delivered in an exciting way!", 'acf'); ?></p>
43
+ <p><?php printf(__('All 4 premium add-ons have been combined into a new <a href="%s">Pro version of ACF</a>. With both personal and developer licenses available, premium functionality is more affordable and accessible than ever before!', 'acf'), esc_url('https://www.advancedcustomfields.com/pro')); ?></p>
44
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
+ <div>
47
+ <h3><?php _e("Powerful Features", 'acf'); ?></h3>
48
+ <p><?php _e("ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful gallery field and the ability to create extra admin options pages!", 'acf'); ?></p>
49
+ <p><?php printf(__('Read more about <a href="%s">ACF PRO features</a>.', 'acf'), esc_url('https://www.advancedcustomfields.com/pro')); ?></p>
50
+ </div>
51
+
52
+ <div>
53
+ <h3><?php _e("Easy Upgrading", 'acf'); ?></h3>
54
+ <p><?php _e('Upgrading to ACF PRO is easy. Simply purchase a license online and download the plugin!', 'acf'); ?></p>
55
+ <p><?php printf(__('We also wrote an <a href="%s">upgrade guide</a> to answer any questions, but if you do have one, please contact our support team via the <a href="%s">help desk</a>.', 'acf'), esc_url('https://www.advancedcustomfields.com/resources/upgrade-guide-acf-pro/'), esc_url('https://www.advancedcustomfields.com/support/')); ?></p>
56
+ </div>
57
+ </div>
58
  </div>
59
 
60
  <hr />
61
 
62
+ <div class="feature-section">
 
 
 
 
 
 
 
63
 
64
+ <h2><?php _e("New Features", 'acf'); ?> 🎉</h2>
 
 
 
65
 
66
+ <div class="acf-three-col">
67
+
68
+ <div>
69
+ <h3><?php _e("Link Field", 'acf'); ?></h3>
70
+ <p><?php _e("The Link field provides a simple way to select or define a link (url, title, target).", 'acf'); ?></p>
71
+ </div>
72
+
73
+ <div>
74
+ <h3><?php _e("Group Field", 'acf'); ?></h3>
75
+ <p><?php _e("The Group field provides a simple way to create a group of fields.", 'acf'); ?></p>
76
+ </div>
77
+
78
+ <div>
79
+ <h3><?php _e("oEmbed Field", 'acf'); ?></h3>
80
+ <p><?php _e("The oEmbed field allows an easy way to embed videos, images, tweets, audio, and other content.", 'acf'); ?></p>
81
+ </div>
82
+
83
+ <div>
84
+ <h3><?php _e("Clone Field", 'acf'); ?> <span class="badge"><?php _e('Pro', 'acf'); ?></span></h3>
85
+ <p><?php _e("The clone field allows you to select and display existing fields.", 'acf'); ?></p>
86
+ </div>
87
+
88
+ <div>
89
+ <h3><?php _e("More AJAX", 'acf'); ?></h3>
90
+ <p><?php _e("More fields use AJAX powered search to speed up page loading.", 'acf'); ?></p>
91
+ </div>
92
+
93
+ <div>
94
+ <h3><?php _e("Local JSON", 'acf'); ?></h3>
95
+ <p><?php _e("New auto export to JSON feature improves speed and allows for syncronisation.", 'acf'); ?></p>
96
+ </div>
97
+
98
+ <div>
99
+ <h3><?php _e("Easy Import / Export", 'acf'); ?></h3>
100
+ <p><?php _e("Both import and export can easily be done through a new tools page.", 'acf'); ?></p>
101
+ </div>
102
+
103
+ <div>
104
+ <h3><?php _e("New Form Locations", 'acf'); ?></h3>
105
+ <p><?php _e("Fields can now be mapped to menus, menu items, comments, widgets and all user forms!", 'acf'); ?></p>
106
+ </div>
107
+
108
+ <div>
109
+ <h3><?php _e("More Customization", 'acf'); ?></h3>
110
+ <p><?php _e("New PHP (and JS) actions and filters have been added to allow for more customization.", 'acf'); ?></p>
111
+ </div>
112
+
113
+ <div>
114
+ <h3><?php _e("Fresh UI", 'acf'); ?></h3>
115
+ <p><?php _e("The entire plugin has had a design refresh including new field types, settings and design!", 'acf'); ?></p>
116
+ </div>
117
+
118
+ <div>
119
+ <h3><?php _e("New Settings", 'acf'); ?></h3>
120
+ <p><?php _e("Field group settings have been added for Active, Label Placement, Instructions Placement and Description.", 'acf'); ?></p>
121
+ </div>
122
+
123
+ <div>
124
+ <h3><?php _e("Better Front End Forms", 'acf'); ?></h3>
125
+ <p><?php _e("acf_form() can now create a new post on submission with lots of new settings.", 'acf'); ?></p>
126
+ </div>
127
+
128
+ <div>
129
+ <h3><?php _e("Better Validation", 'acf'); ?></h3>
130
+ <p><?php _e("Form validation is now done via PHP + AJAX in favour of only JS.", 'acf'); ?></p>
131
+ </div>
132
+
133
+ <div>
134
+ <h3><?php _e("Moving Fields", 'acf'); ?></h3>
135
+ <p><?php _e("New field group functionality allows you to move a field between groups & parents.", 'acf'); ?></p>
136
+ </div>
137
+
138
+ <div><?php // intentional empty div for flex alignment ?></div>
139
+
140
  </div>
141
+
142
  </div>
143
 
144
  <?php elseif( $active == 'changelog' ): ?>
includes/ajax/class-acf-ajax-upgrade.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
+
5
+ if( ! class_exists('ACF_Ajax_Upgrade') ) :
6
+
7
+ class ACF_Ajax_Upgrade extends ACF_Ajax {
8
+
9
+ /** @var string The AJAX action name */
10
+ var $action = 'acf/ajax/upgrade';
11
+
12
+ /**
13
+ * get_response
14
+ *
15
+ * The actual logic for this AJAX request.
16
+ *
17
+ * @date 31/7/18
18
+ * @since 5.7.2
19
+ *
20
+ * @param void
21
+ * @return mixed The response data to send back or WP_Error.
22
+ */
23
+
24
+ function response() {
25
+
26
+ // switch blog
27
+ if( $this->has('blog_id') ) {
28
+ switch_to_blog( $this->get('blog_id') );
29
+ }
30
+
31
+ // bail early if no upgrade avaiable
32
+ if( !acf_has_upgrade() ) {
33
+ return new WP_Error( 'upgrade_error', __('No updates available.', 'acf') );
34
+ }
35
+
36
+ // listen for output
37
+ ob_start();
38
+
39
+ // run upgrades
40
+ acf_upgrade_all();
41
+
42
+ // store output
43
+ $error = ob_get_clean();
44
+
45
+ // return error if output
46
+ if( $error ) {
47
+ return new WP_Error( 'upgrade_error', $error );
48
+ }
49
+
50
+ // return
51
+ return true;
52
+ }
53
+ }
54
+
55
+ acf_new_instance('ACF_Ajax_Upgrade');
56
+
57
+ endif; // class_exists check
58
+
59
+ ?>
includes/api/api-helpers.php CHANGED
@@ -431,6 +431,24 @@ function acf_include( $file ) {
431
 
432
  }
433
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
434
 
435
  /*
436
  * acf_get_external_path
@@ -4537,33 +4555,43 @@ function acf_format_date( $value, $format ) {
4537
  function acf_log() {
4538
 
4539
  // vars
4540
- $log = '';
4541
  $args = func_get_args();
4542
 
4543
-
4544
  // loop
4545
  foreach( $args as $i => $arg ) {
4546
 
 
4547
  if( is_array($arg) || is_object($arg) ) {
4548
-
4549
  $arg = print_r($arg, true);
4550
-
 
4551
  } elseif( is_bool($arg) ) {
4552
-
4553
- $arg = ( $arg ? 'true' : 'false' ) . ' (bool)';
4554
-
4555
  }
4556
 
4557
-
4558
  // update
4559
  $args[ $i ] = $arg;
4560
-
4561
  }
4562
 
4563
-
4564
  // log
4565
  error_log( implode(' ', $args) );
4566
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4567
  }
4568
 
4569
 
@@ -5267,4 +5295,98 @@ function acf_parse_markdown( $text = '' ) {
5267
  return $text;
5268
  }
5269
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5270
  ?>
431
 
432
  }
433
 
434
+ /**
435
+ * acf_include_once
436
+ *
437
+ * Includes a file one time only.
438
+ *
439
+ * @date 24/8/18
440
+ * @since 5.7.4
441
+ *
442
+ * @param string $file The relative file path.
443
+ * @return void
444
+ */
445
+
446
+ function acf_include_once( $file = '' ) {
447
+ $path = acf_get_path( $file );
448
+ if( file_exists($path) ) {
449
+ include_once( $path );
450
+ }
451
+ }
452
 
453
  /*
454
  * acf_get_external_path
4555
  function acf_log() {
4556
 
4557
  // vars
 
4558
  $args = func_get_args();
4559
 
 
4560
  // loop
4561
  foreach( $args as $i => $arg ) {
4562
 
4563
+ // array | object
4564
  if( is_array($arg) || is_object($arg) ) {
 
4565
  $arg = print_r($arg, true);
4566
+
4567
+ // bool
4568
  } elseif( is_bool($arg) ) {
4569
+ $arg = 'bool(' . ( $arg ? 'true' : 'false' ) . ')';
 
 
4570
  }
4571
 
 
4572
  // update
4573
  $args[ $i ] = $arg;
 
4574
  }
4575
 
 
4576
  // log
4577
  error_log( implode(' ', $args) );
4578
+ }
4579
+
4580
+ /**
4581
+ * acf_dev_log
4582
+ *
4583
+ * Used to log variables only if ACF_DEV is defined
4584
+ *
4585
+ * @date 25/8/18
4586
+ * @since 5.7.4
4587
+ *
4588
+ * @param mixed
4589
+ * @return void
4590
+ */
4591
+ function acf_dev_log() {
4592
+ if( defined('ACF_DEV') && ACF_DEV ) {
4593
+ call_user_func_array('acf_log', func_get_args());
4594
+ }
4595
  }
4596
 
4597
 
5295
  return $text;
5296
  }
5297
 
5298
+ /**
5299
+ * acf_get_sites
5300
+ *
5301
+ * Returns an array of sites for a network.
5302
+ *
5303
+ * @date 29/08/2016
5304
+ * @since 5.4.0
5305
+ *
5306
+ * @param void
5307
+ * @return array
5308
+ */
5309
+ function acf_get_sites() {
5310
+
5311
+ // vars
5312
+ $results = array();
5313
+
5314
+ // function get_sites() was added in WP 4.6
5315
+ if( function_exists('get_sites') ) {
5316
+
5317
+ $_sites = get_sites(array(
5318
+ 'number' => 0
5319
+ ));
5320
+
5321
+ if( $_sites ) {
5322
+ foreach( $_sites as $_site ) {
5323
+ $_site = get_site( $_site );
5324
+ $results[] = $_site->to_array();
5325
+ }}
5326
+
5327
+ // function wp_get_sites() returns in the desired output
5328
+ } else {
5329
+ $results = wp_get_sites(array(
5330
+ 'limit' => 0
5331
+ ));
5332
+ }
5333
+
5334
+ // return
5335
+ return $results;
5336
+ }
5337
+
5338
+ /**
5339
+ * acf_convert_rules_to_groups
5340
+ *
5341
+ * Converts an array of rules from ACF4 to an array of groups for ACF5
5342
+ *
5343
+ * @date 25/8/18
5344
+ * @since 5.7.4
5345
+ *
5346
+ * @param array $rules An array of rules.
5347
+ * @param string $anyorall The anyorall setting used in ACF4. Defaults to 'any'.
5348
+ * @return array
5349
+ */
5350
+ function acf_convert_rules_to_groups( $rules, $anyorall = 'any' ) {
5351
+
5352
+ // vars
5353
+ $groups = array();
5354
+ $index = 0;
5355
+
5356
+ // loop
5357
+ foreach( $rules as $rule ) {
5358
+
5359
+ // extract vars
5360
+ $group = acf_extract_var( $rule, 'group_no' );
5361
+ $order = acf_extract_var( $rule, 'order_no' );
5362
+
5363
+ // calculate group if not defined
5364
+ if( $group === null ) {
5365
+ $group = $index;
5366
+
5367
+ // use $anyorall to determine if a new group is needed
5368
+ if( $anyorall == 'any' ) {
5369
+ $index++;
5370
+ }
5371
+ }
5372
+
5373
+ // calculate order if not defined
5374
+ if( $order === null ) {
5375
+ $order = isset($groups[ $group ]) ? count($groups[ $group ]) : 0;
5376
+ }
5377
+
5378
+ // append to group
5379
+ $groups[ $group ][ $order ] = $rule;
5380
+
5381
+ // sort groups
5382
+ ksort( $groups[ $group ] );
5383
+ }
5384
+
5385
+ // sort groups
5386
+ ksort( $groups );
5387
+
5388
+ // return
5389
+ return $groups;
5390
+ }
5391
+
5392
  ?>
includes/api/api-term.php CHANGED
@@ -241,14 +241,14 @@ function acf_get_pretty_taxonomies( $taxonomies = array() ) {
241
  * @date 19/8/18
242
  * @since 5.7.3
243
  *
244
- * @param mixed $term_id The term ID or a string of "slug:taxonomy".
245
  * @param string $taxonomy The taxonomyname.
246
  * @return WP_Term
247
  */
248
 
249
  function acf_get_term( $term_id, $taxonomy = '' ) {
250
 
251
- // allow $term_id parameter to be a string of "slug:taxonomy" of "slug:id"
252
  if( is_string($term_id) && strpos($term_id, ':') ) {
253
  list( $taxonomy, $term_id ) = explode(':', $term_id);
254
  $term = get_term_by( 'slug', $term_id, $taxonomy );
@@ -259,5 +259,41 @@ function acf_get_term( $term_id, $taxonomy = '' ) {
259
  return get_term( $term_id, $taxonomy );
260
  }
261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
 
263
  ?>
241
  * @date 19/8/18
242
  * @since 5.7.3
243
  *
244
+ * @param mixed $term_id The term ID or a string of "taxonomy:slug".
245
  * @param string $taxonomy The taxonomyname.
246
  * @return WP_Term
247
  */
248
 
249
  function acf_get_term( $term_id, $taxonomy = '' ) {
250
 
251
+ // allow $term_id parameter to be a string of "taxonomy:slug" or "taxonomy:id"
252
  if( is_string($term_id) && strpos($term_id, ':') ) {
253
  list( $taxonomy, $term_id ) = explode(':', $term_id);
254
  $term = get_term_by( 'slug', $term_id, $taxonomy );
259
  return get_term( $term_id, $taxonomy );
260
  }
261
 
262
+ /**
263
+ * acf_encode_term
264
+ *
265
+ * Returns a "taxonomy:slug" string for a given WP_Term.
266
+ *
267
+ * @date 27/8/18
268
+ * @since 5.7.4
269
+ *
270
+ * @param WP_Term $term The term object.
271
+ * @return string
272
+ */
273
+ function acf_encode_term( $term ) {
274
+ return "{$term->taxonomy}:{$term->slug}";
275
+ }
276
+
277
+ /**
278
+ * acf_decode_term
279
+ *
280
+ * Decodes a "taxonomy:slug" string into an array of taxonomy and slug.
281
+ *
282
+ * @date 27/8/18
283
+ * @since 5.7.4
284
+ *
285
+ * @param WP_Term $term The term object.
286
+ * @return string
287
+ */
288
+ function acf_decode_term( $string ) {
289
+ if( is_string($string) && strpos($string, ':') ) {
290
+ list( $taxonomy, $slug ) = explode(':', $string);
291
+ return array(
292
+ 'taxonomy' => $taxonomy,
293
+ 'slug' => $slug
294
+ );
295
+ }
296
+ return false;
297
+ }
298
 
299
  ?>
includes/compatibility.php CHANGED
@@ -1,282 +1,194 @@
1
- <?php
2
 
3
- class acf_compatibility {
 
 
 
 
4
 
5
- /*
6
  * __construct
7
  *
8
- * description
9
  *
10
- * @type function
11
  * @date 30/04/2014
12
  * @since 5.0.0
13
  *
14
- * @param $post_id (int)
15
- * @return $post_id (int)
16
  */
17
-
18
  function __construct() {
19
 
20
- // fields
21
- add_filter('acf/validate_field', array($this, 'validate_field'), 20, 1);
22
- add_filter('acf/validate_field/type=textarea', array($this, 'validate_textarea_field'), 20, 1);
23
- add_filter('acf/validate_field/type=relationship', array($this, 'validate_relationship_field'), 20, 1);
24
- add_filter('acf/validate_field/type=post_object', array($this, 'validate_relationship_field'), 20, 1);
25
- add_filter('acf/validate_field/type=page_link', array($this, 'validate_relationship_field'), 20, 1);
26
- add_filter('acf/validate_field/type=image', array($this, 'validate_image_field'), 20, 1);
27
- add_filter('acf/validate_field/type=file', array($this, 'validate_image_field'), 20, 1);
28
- add_filter('acf/validate_field/type=wysiwyg', array($this, 'validate_wysiwyg_field'), 20, 1);
29
- add_filter('acf/validate_field/type=date_picker', array($this, 'validate_date_picker_field'), 20, 1);
30
- add_filter('acf/validate_field/type=taxonomy', array($this, 'validate_taxonomy_field'), 20, 1);
31
  add_filter('acf/validate_field/type=date_time_picker', array($this, 'validate_date_time_picker_field'), 20, 1);
32
- add_filter('acf/validate_field/type=user', array($this, 'validate_user_field'), 20, 1);
33
-
34
-
35
- // field groups
36
- add_filter('acf/validate_field_group', array($this, 'validate_field_group'), 20, 1);
37
 
 
 
 
38
  }
39
 
40
-
41
- /*
42
  * validate_field
43
  *
44
- * This function will provide compatibility with ACF4 fields
45
  *
46
- * @type function
47
  * @date 23/04/2014
48
  * @since 5.0.0
49
  *
50
- * @param $field (array)
51
- * @return $field
52
  */
53
-
54
  function validate_field( $field ) {
55
 
56
- // conditional logic has changed
 
57
  if( isset($field['conditional_logic']['status']) ) {
58
 
59
- // extract logic
60
- $logic = acf_extract_var( $field, 'conditional_logic' );
61
-
62
-
63
- // disabled
64
- if( !empty($logic['status']) ) {
65
-
66
- // reset
67
- $field['conditional_logic'] = array();
68
-
69
-
70
- // vars
71
- $group = 0;
72
- $all_or_any = $logic['allorany'];
73
-
74
-
75
- // loop over rules
76
- if( !empty($logic['rules']) ) {
77
-
78
- foreach( $logic['rules'] as $rule ) {
79
-
80
- // sperate groups?
81
- if( $all_or_any == 'any' ) {
82
-
83
- $group++;
84
-
85
- }
86
-
87
-
88
- // add to group
89
- $field['conditional_logic'][ $group ][] = $rule;
90
-
91
- }
92
-
93
- }
94
-
95
-
96
- // reset keys
97
- $field['conditional_logic'] = array_values($field['conditional_logic']);
98
-
99
-
100
  } else {
101
-
102
  $field['conditional_logic'] = 0;
103
-
104
  }
105
-
106
  }
107
 
108
-
109
  // return
110
  return $field;
111
-
112
  }
113
 
114
-
115
- /*
116
- * validate_relationship_field
117
  *
118
- * This function will provide compatibility with ACF4 fields
119
  *
120
- * @type function
121
  * @date 23/04/2014
122
  * @since 5.0.0
123
  *
124
- * @param $field (array)
125
- * @return $field
126
  */
127
-
128
- function validate_relationship_field( $field ) {
129
-
130
- // force array
131
- $field['post_type'] = acf_get_array($field['post_type']);
132
- $field['taxonomy'] = acf_get_array($field['taxonomy']);
133
-
134
-
135
- // remove 'all' from post_type
136
- if( acf_in_array('all', $field['post_type']) ) {
137
-
138
- $field['post_type'] = array();
139
-
140
- }
141
-
142
-
143
- // remove 'all' from taxonomy
144
- if( acf_in_array('all', $field['taxonomy']) ) {
145
-
146
- $field['taxonomy'] = array();
147
-
148
- }
149
-
150
 
151
- // save_format is now return_format
152
- if( !empty($field['result_elements']) ) {
153
-
154
- $field['elements'] = acf_extract_var( $field, 'result_elements' );
155
-
156
  }
157
 
158
-
159
-
160
  // return
161
  return $field;
162
  }
163
 
164
-
165
- /*
166
- * validate_textarea_field
167
  *
168
- * This function will provide compatibility with ACF4 fields
169
  *
170
- * @type function
171
  * @date 23/04/2014
172
  * @since 5.0.0
173
  *
174
- * @param $field (array)
175
- * @return $field
176
  */
177
-
178
- function validate_textarea_field( $field ) {
179
 
180
- // formatting has been removed
181
- $formatting = acf_extract_var( $field, 'formatting' );
 
 
182
 
183
- if( $formatting === 'br' ) {
184
-
185
- $field['new_lines'] = 'br';
186
-
187
  }
188
 
 
 
 
 
189
 
190
  // return
191
  return $field;
192
  }
193
 
194
-
195
- /*
196
  * validate_image_field
197
  *
198
- * This function will provide compatibility with ACF4 fields
199
  *
200
- * @type function
201
  * @date 23/04/2014
202
  * @since 5.0.0
203
  *
204
- * @param $field (array)
205
- * @return $field
206
  */
207
-
208
  function validate_image_field( $field ) {
209
 
210
  // save_format is now return_format
211
- if( !empty($field['save_format']) ) {
212
-
213
  $field['return_format'] = acf_extract_var( $field, 'save_format' );
214
-
215
  }
216
 
217
-
218
  // object is now array
219
  if( $field['return_format'] == 'object' ) {
220
-
221
  $field['return_format'] = 'array';
222
-
223
  }
224
 
225
-
226
  // return
227
  return $field;
228
  }
229
 
230
-
231
- /*
232
  * validate_wysiwyg_field
233
  *
234
- * This function will provide compatibility with ACF4 fields
235
  *
236
- * @type function
237
  * @date 23/04/2014
238
  * @since 5.0.0
239
  *
240
- * @param $field (array)
241
- * @return $field
242
  */
243
-
244
  function validate_wysiwyg_field( $field ) {
245
 
246
  // media_upload is now numeric
247
  if( $field['media_upload'] === 'yes' ) {
248
-
249
  $field['media_upload'] = 1;
250
-
251
  } elseif( $field['media_upload'] === 'no' ) {
252
-
253
  $field['media_upload'] = 0;
254
-
255
  }
256
 
257
-
258
  // return
259
  return $field;
260
  }
261
 
262
-
263
- /*
264
  * validate_date_picker_field
265
  *
266
- * This function will provide compatibility with ACF4 fields
267
  *
268
- * @type function
269
  * @date 23/04/2014
270
  * @since 5.0.0
271
  *
272
- * @param $field (array)
273
- * @return $field
274
  */
275
-
276
  function validate_date_picker_field( $field ) {
277
 
278
- // v4 used date_format
279
- if( !empty($field['date_format']) ) {
280
 
281
  // extract vars
282
  $date_format = $field['date_format'];
@@ -293,55 +205,43 @@ class acf_compatibility {
293
  unset($field['date_format']);
294
  }
295
 
296
-
297
  // return
298
  return $field;
299
-
300
  }
301
 
302
-
303
- /*
304
  * validate_taxonomy_field
305
  *
306
- * This function will provide compatibility with ACF4 fields
307
  *
308
- * @type function
309
  * @date 23/04/2014
310
- * @since 5.0.0
311
  *
312
- * @param $field (array)
313
- * @return $field
314
  */
315
-
316
  function validate_taxonomy_field( $field ) {
317
 
318
- // 5.2.7
319
  if( isset($field['load_save_terms']) ) {
320
-
321
- $field['save_terms'] = $field['load_save_terms'];
322
-
323
  }
324
 
325
-
326
  // return
327
  return $field;
328
-
329
  }
330
 
331
-
332
- /*
333
  * validate_date_time_picker_field
334
  *
335
- * This function will provide compatibility with existing 3rd party fields
336
  *
337
- * @type function
338
  * @date 23/04/2014
339
- * @since 5.0.0
340
  *
341
- * @param $field (array)
342
- * @return $field
343
  */
344
-
345
  function validate_date_time_picker_field( $field ) {
346
 
347
  // 3rd party date time picker
@@ -353,78 +253,58 @@ class acf_compatibility {
353
  $date_format = acf_extract_var( $field, 'date_format' );
354
  $get_as_timestamp = acf_extract_var( $field, 'get_as_timestamp' );
355
 
356
-
357
  // convert from js to php
358
  $time_format = acf_convert_time_to_php( $time_format );
359
  $date_format = acf_convert_date_to_php( $date_format );
360
 
361
-
362
  // append settings
363
  $field['return_format'] = $date_format . ' ' . $time_format;
364
  $field['display_format'] = $date_format . ' ' . $time_format;
365
 
366
-
367
  // timestamp
368
  if( $get_as_timestamp === 'true' ) {
369
-
370
  $field['return_format'] = 'U';
371
-
372
  }
373
-
374
  }
375
-
376
 
377
  // return
378
  return $field;
379
-
380
  }
381
 
382
-
383
- /*
384
  * validate_user_field
385
  *
386
- * This function will provide compatibility with ACF4 fields
387
  *
388
- * @type function
389
  * @date 23/04/2014
390
- * @since 5.0.0
391
  *
392
- * @param $field (array)
393
- * @return $field
394
  */
395
-
396
  function validate_user_field( $field ) {
397
 
398
  // remove 'all' from roles
399
  if( acf_in_array('all', $field['role']) ) {
400
-
401
  $field['role'] = '';
402
-
403
  }
404
 
405
-
406
  // field_type removed in favour of multiple
407
- if( !empty($field['field_type']) ) {
408
 
409
  // extract vars
410
  $field_type = acf_extract_var( $field, 'field_type' );
411
 
412
-
413
  // multiple
414
  if( $field_type === 'multi_select' ) {
415
-
416
  $field['multiple'] = true;
417
-
418
  }
419
-
420
  }
421
 
422
-
423
  // return
424
  return $field;
425
  }
426
 
427
-
428
  /*
429
  * validate_field_group
430
  *
@@ -437,150 +317,105 @@ class acf_compatibility {
437
  * @param $field_group (array)
438
  * @return $field_group
439
  */
440
-
441
  function validate_field_group( $field_group ) {
442
 
443
  // vars
444
  $version = 5;
445
 
446
-
447
- // add missing 'key' (v5.0.0)
448
- if( empty($field_group['key']) ) {
449
-
450
- // update version
451
  $version = 4;
452
-
453
-
454
- // add missing key
455
- $field_group['key'] = empty($field_group['id']) ? uniqid('group_') : 'group_' . $field_group['id'];
456
-
457
  }
458
 
459
-
460
- // extract options (v5.0.0)
461
- if( !empty($field_group['options']) ) {
462
-
463
  $options = acf_extract_var($field_group, 'options');
464
  $field_group = array_merge($field_group, $options);
465
-
466
  }
467
 
468
-
469
- // location rules changed to groups (v5.0.0)
470
- if( !empty($field_group['location']['rules']) ) {
471
-
472
- // extract location
473
- $location = acf_extract_var( $field_group, 'location' );
474
-
475
-
476
- // reset location
477
- $field_group['location'] = array();
478
-
479
-
480
- // vars
481
- $group = 0;
482
- $all_or_any = $location['allorany'];
483
-
484
-
485
- // loop over rules
486
- if( !empty($location['rules']) ) {
487
-
488
- foreach( $location['rules'] as $rule ) {
489
-
490
- // sperate groups?
491
- if( $all_or_any == 'any' ) $group++;
492
-
493
-
494
- // add to group
495
- $field_group['location'][ $group ][] = $rule;
496
-
497
- }
498
-
499
- }
500
-
501
-
502
- // reset keys
503
- $field_group['location'] = array_values($field_group['location']);
504
-
505
  }
506
 
507
-
508
- // some location rules have changed (v5.0.0)
509
- if( !empty($field_group['location']) ) {
510
-
511
- // param changes
512
- $replace = array(
513
- 'taxonomy' => 'post_taxonomy',
514
- 'ef_media' => 'attachment',
515
- 'ef_taxonomy' => 'taxonomy',
516
- 'ef_user' => 'user_role',
517
- 'user_type' => 'current_user_role' // 5.2.0
518
- );
519
-
520
-
521
- // remove conflicting param
522
- if( $version == 5 ) {
523
-
524
- unset($replace['taxonomy']);
525
-
526
- }
527
-
528
-
529
- // loop over location groups
530
- foreach( $field_group['location'] as $i => $group ) {
531
-
532
- // bail early if group is empty
533
- if( empty($group) ) continue;
534
 
535
-
536
- // loop over group rules
537
- foreach( $group as $ii => $rule ) {
538
-
539
- // migrate param
540
- if( isset($replace[ $rule['param'] ]) ) {
541
-
542
- $rule['param'] = $replace[ $rule['param'] ];
543
-
544
- }
545
-
546
-
547
- // update
548
- $group[ $ii ] = $rule;
549
-
550
  }
551
-
552
-
553
- // update
554
- $field_group['location'][ $i ] = $group;
555
-
556
- }
557
-
558
- }
559
-
560
 
561
  // change layout to style (v5.0.0)
562
- if( !empty($field_group['layout']) ) {
563
-
564
  $field_group['style'] = acf_extract_var($field_group, 'layout');
565
-
566
  }
567
 
568
-
569
  // change no_box to seamless (v5.0.0)
570
  if( $field_group['style'] === 'no_box' ) {
571
-
572
  $field_group['style'] = 'seamless';
573
-
574
  }
575
 
576
-
577
  //return
578
  return $field_group;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
579
 
 
 
580
  }
581
 
582
  }
583
 
584
- new acf_compatibility();
 
 
585
 
586
  ?>
1
+ <?php
2
 
3
+ if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
+
5
+ if( ! class_exists('ACF_Compatibility') ) :
6
+
7
+ class ACF_Compatibility {
8
 
9
+ /**
10
  * __construct
11
  *
12
+ * Sets up the class functionality.
13
  *
 
14
  * @date 30/04/2014
15
  * @since 5.0.0
16
  *
17
+ * @param void
18
+ * @return void
19
  */
 
20
  function __construct() {
21
 
22
+ // actions
23
+ add_filter('acf/validate_field', array($this, 'validate_field'), 20, 1);
24
+ add_filter('acf/validate_field/type=textarea', array($this, 'validate_textarea_field'), 20, 1);
25
+ add_filter('acf/validate_field/type=relationship', array($this, 'validate_relationship_field'), 20, 1);
26
+ add_filter('acf/validate_field/type=post_object', array($this, 'validate_relationship_field'), 20, 1);
27
+ add_filter('acf/validate_field/type=page_link', array($this, 'validate_relationship_field'), 20, 1);
28
+ add_filter('acf/validate_field/type=image', array($this, 'validate_image_field'), 20, 1);
29
+ add_filter('acf/validate_field/type=file', array($this, 'validate_image_field'), 20, 1);
30
+ add_filter('acf/validate_field/type=wysiwyg', array($this, 'validate_wysiwyg_field'), 20, 1);
31
+ add_filter('acf/validate_field/type=date_picker', array($this, 'validate_date_picker_field'), 20, 1);
32
+ add_filter('acf/validate_field/type=taxonomy', array($this, 'validate_taxonomy_field'), 20, 1);
33
  add_filter('acf/validate_field/type=date_time_picker', array($this, 'validate_date_time_picker_field'), 20, 1);
34
+ add_filter('acf/validate_field/type=user', array($this, 'validate_user_field'), 20, 1);
35
+ add_filter('acf/validate_field_group', array($this, 'validate_field_group'), 20, 1);
 
 
 
36
 
37
+ // location
38
+ add_filter('acf/location/validate_rule/type=post_taxonomy', array($this, 'validate_post_taxonomy_location_rule'), 20, 1);
39
+ add_filter('acf/location/validate_rule/type=post_category', array($this, 'validate_post_taxonomy_location_rule'), 20, 1);
40
  }
41
 
42
+ /**
 
43
  * validate_field
44
  *
45
+ * Adds compatibility with deprecated settings
46
  *
 
47
  * @date 23/04/2014
48
  * @since 5.0.0
49
  *
50
+ * @param array $field The field array.
51
+ * @return array $field
52
  */
 
53
  function validate_field( $field ) {
54
 
55
+ // conditional logic data structure changed to groups in version 5.0.0
56
+ // convert previous data (status, rules, allorany) into groups
57
  if( isset($field['conditional_logic']['status']) ) {
58
 
59
+ // check status
60
+ if( $field['conditional_logic']['status'] ) {
61
+ $field['conditional_logic'] = acf_convert_rules_to_groups($field['conditional_logic']['rules'], $field['conditional_logic']['allorany']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  } else {
 
63
  $field['conditional_logic'] = 0;
 
64
  }
 
65
  }
66
 
 
67
  // return
68
  return $field;
 
69
  }
70
 
71
+ /**
72
+ * validate_textarea_field
 
73
  *
74
+ * Adds compatibility with deprecated settings
75
  *
 
76
  * @date 23/04/2014
77
  * @since 5.0.0
78
  *
79
+ * @param array $field The field array.
80
+ * @return array $field
81
  */
82
+ function validate_textarea_field( $field ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
 
84
+ // formatting has been removed
85
+ $formatting = acf_extract_var( $field, 'formatting' );
86
+ if( $formatting === 'br' ) {
87
+ $field['new_lines'] = 'br';
 
88
  }
89
 
 
 
90
  // return
91
  return $field;
92
  }
93
 
94
+ /**
95
+ * validate_relationship_field
 
96
  *
97
+ * Adds compatibility with deprecated settings
98
  *
 
99
  * @date 23/04/2014
100
  * @since 5.0.0
101
  *
102
+ * @param array $field The field array.
103
+ * @return array $field
104
  */
105
+ function validate_relationship_field( $field ) {
 
106
 
107
+ // remove 'all' from post_type
108
+ if( acf_in_array('all', $field['post_type']) ) {
109
+ $field['post_type'] = array();
110
+ }
111
 
112
+ // remove 'all' from taxonomy
113
+ if( acf_in_array('all', $field['taxonomy']) ) {
114
+ $field['taxonomy'] = array();
 
115
  }
116
 
117
+ // result_elements is now elements
118
+ if( isset($field['result_elements']) ) {
119
+ $field['elements'] = acf_extract_var( $field, 'result_elements' );
120
+ }
121
 
122
  // return
123
  return $field;
124
  }
125
 
126
+ /**
 
127
  * validate_image_field
128
  *
129
+ * Adds compatibility with deprecated settings
130
  *
 
131
  * @date 23/04/2014
132
  * @since 5.0.0
133
  *
134
+ * @param array $field The field array.
135
+ * @return array $field
136
  */
 
137
  function validate_image_field( $field ) {
138
 
139
  // save_format is now return_format
140
+ if( isset($field['save_format']) ) {
 
141
  $field['return_format'] = acf_extract_var( $field, 'save_format' );
 
142
  }
143
 
 
144
  // object is now array
145
  if( $field['return_format'] == 'object' ) {
 
146
  $field['return_format'] = 'array';
 
147
  }
148
 
 
149
  // return
150
  return $field;
151
  }
152
 
153
+ /**
 
154
  * validate_wysiwyg_field
155
  *
156
+ * Adds compatibility with deprecated settings
157
  *
 
158
  * @date 23/04/2014
159
  * @since 5.0.0
160
  *
161
+ * @param array $field The field array.
162
+ * @return array $field
163
  */
 
164
  function validate_wysiwyg_field( $field ) {
165
 
166
  // media_upload is now numeric
167
  if( $field['media_upload'] === 'yes' ) {
 
168
  $field['media_upload'] = 1;
 
169
  } elseif( $field['media_upload'] === 'no' ) {
 
170
  $field['media_upload'] = 0;
 
171
  }
172
 
 
173
  // return
174
  return $field;
175
  }
176
 
177
+ /**
 
178
  * validate_date_picker_field
179
  *
180
+ * Adds compatibility with deprecated settings
181
  *
 
182
  * @date 23/04/2014
183
  * @since 5.0.0
184
  *
185
+ * @param array $field The field array.
186
+ * @return array $field
187
  */
 
188
  function validate_date_picker_field( $field ) {
189
 
190
+ // date_format has changed to display_format
191
+ if( isset($field['date_format']) ) {
192
 
193
  // extract vars
194
  $date_format = $field['date_format'];
205
  unset($field['date_format']);
206
  }
207
 
 
208
  // return
209
  return $field;
 
210
  }
211
 
212
+ /**
 
213
  * validate_taxonomy_field
214
  *
215
+ * Adds compatibility with deprecated settings
216
  *
 
217
  * @date 23/04/2014
218
+ * @since 5.2.7
219
  *
220
+ * @param array $field The field array.
221
+ * @return array $field
222
  */
 
223
  function validate_taxonomy_field( $field ) {
224
 
225
+ // load_save_terms deprecated in favour of separate save_terms
226
  if( isset($field['load_save_terms']) ) {
227
+ $field['save_terms'] = acf_extract_var( $field, 'load_save_terms' );
 
 
228
  }
229
 
 
230
  // return
231
  return $field;
 
232
  }
233
 
234
+ /**
 
235
  * validate_date_time_picker_field
236
  *
237
+ * Adds compatibility with deprecated settings
238
  *
 
239
  * @date 23/04/2014
240
+ * @since 5.2.7
241
  *
242
+ * @param array $field The field array.
243
+ * @return array $field
244
  */
 
245
  function validate_date_time_picker_field( $field ) {
246
 
247
  // 3rd party date time picker
253
  $date_format = acf_extract_var( $field, 'date_format' );
254
  $get_as_timestamp = acf_extract_var( $field, 'get_as_timestamp' );
255
 
 
256
  // convert from js to php
257
  $time_format = acf_convert_time_to_php( $time_format );
258
  $date_format = acf_convert_date_to_php( $date_format );
259
 
 
260
  // append settings
261
  $field['return_format'] = $date_format . ' ' . $time_format;
262
  $field['display_format'] = $date_format . ' ' . $time_format;
263
 
 
264
  // timestamp
265
  if( $get_as_timestamp === 'true' ) {
 
266
  $field['return_format'] = 'U';
 
267
  }
 
268
  }
 
269
 
270
  // return
271
  return $field;
 
272
  }
273
 
274
+ /**
 
275
  * validate_user_field
276
  *
277
+ * Adds compatibility with deprecated settings
278
  *
 
279
  * @date 23/04/2014
280
+ * @since 5.2.7
281
  *
282
+ * @param array $field The field array.
283
+ * @return array $field
284
  */
 
285
  function validate_user_field( $field ) {
286
 
287
  // remove 'all' from roles
288
  if( acf_in_array('all', $field['role']) ) {
 
289
  $field['role'] = '';
 
290
  }
291
 
 
292
  // field_type removed in favour of multiple
293
+ if( isset($field['field_type']) ) {
294
 
295
  // extract vars
296
  $field_type = acf_extract_var( $field, 'field_type' );
297
 
 
298
  // multiple
299
  if( $field_type === 'multi_select' ) {
 
300
  $field['multiple'] = true;
 
301
  }
 
302
  }
303
 
 
304
  // return
305
  return $field;
306
  }
307
 
 
308
  /*
309
  * validate_field_group
310
  *
317
  * @param $field_group (array)
318
  * @return $field_group
319
  */
 
320
  function validate_field_group( $field_group ) {
321
 
322
  // vars
323
  $version = 5;
324
 
325
+ // field group key was added in version 5.0.0
326
+ // detect ACF4 data and generate key
327
+ if( !$field_group['key'] ) {
 
 
328
  $version = 4;
329
+ $field_group['key'] = uniqid('group_');
 
 
 
 
330
  }
331
 
332
+ // prior to version 5.0.0, settings were saved in an 'options' array
333
+ // extract and merge options into the field group
334
+ if( isset($field_group['options']) ) {
 
335
  $options = acf_extract_var($field_group, 'options');
336
  $field_group = array_merge($field_group, $options);
 
337
  }
338
 
339
+ // location data structure changed to groups in version 4.1.0
340
+ // convert previous data (rules, allorany) into groups
341
+ if( isset($field_group['location']['rules']) ) {
342
+ $field_group['location'] = acf_convert_rules_to_groups($field_group['location']['rules'], $field_group['location']['allorany']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  }
344
 
345
+ // some location rule names have changed in version 5.0.0
346
+ // loop over location data and modify rules
347
+ $replace = array(
348
+ 'taxonomy' => 'post_taxonomy',
349
+ 'ef_media' => 'attachment',
350
+ 'ef_taxonomy' => 'taxonomy',
351
+ 'ef_user' => 'user_role',
352
+ 'user_type' => 'current_user_role' // 5.2.0
353
+ );
354
+
355
+ // only replace 'taxonomy' rule if is an ACF4 field group
356
+ if( $version > 4 ) {
357
+ unset($replace['taxonomy']);
358
+ }
359
+
360
+ // loop over location groups
361
+ if( $field_group['location'] ) {
362
+ foreach( $field_group['location'] as $i => $group ) {
363
+
364
+ // loop over group rules
365
+ if( $group ) {
366
+ foreach( $group as $j => $rule ) {
 
 
 
 
 
367
 
368
+ // migrate param
369
+ if( isset($replace[ $rule['param'] ]) ) {
370
+ $field_group['location'][ $i ][ $j ]['param'] = $replace[ $rule['param'] ];
 
 
 
 
 
 
 
 
 
 
 
 
371
  }
372
+ }}
373
+ }}
 
 
 
 
 
 
 
374
 
375
  // change layout to style (v5.0.0)
376
+ if( isset($field_group['layout']) ) {
 
377
  $field_group['style'] = acf_extract_var($field_group, 'layout');
 
378
  }
379
 
 
380
  // change no_box to seamless (v5.0.0)
381
  if( $field_group['style'] === 'no_box' ) {
 
382
  $field_group['style'] = 'seamless';
 
383
  }
384
 
 
385
  //return
386
  return $field_group;
387
+ }
388
+
389
+ /**
390
+ * validate_post_taxonomy_location_rule
391
+ *
392
+ * description
393
+ *
394
+ * @date 27/8/18
395
+ * @since 5.7.4
396
+ *
397
+ * @param type $var Description. Default.
398
+ * @return type Description.
399
+ */
400
+ function validate_post_taxonomy_location_rule( $rule ) {
401
+
402
+ // previous versions of ACF (v4.4.12) saved value as term_id
403
+ // convert term_id into "taxonomy:slug" string
404
+ if( is_numeric($rule['value']) ) {
405
+ $term = acf_get_term( $rule['value'] );
406
+ if( $term ) {
407
+ $rule['value'] = acf_encode_term($term);
408
+ }
409
+ }
410
 
411
+ // return
412
+ return $rule;
413
  }
414
 
415
  }
416
 
417
+ acf_new_instance('ACF_Compatibility');
418
+
419
+ endif; // class_exists check
420
 
421
  ?>
includes/fields/class-acf-field-post_object.php CHANGED
@@ -221,10 +221,9 @@ class acf_field_post_object extends acf_field {
221
 
222
 
223
  // optgroup or single
224
- if( count($args['post_type']) == 1 ) {
225
-
226
  $results = $results[0]['children'];
227
-
228
  }
229
 
230
 
221
 
222
 
223
  // optgroup or single
224
+ $post_type = acf_get_array( $args['post_type'] );
225
+ if( count($post_type) == 1 ) {
226
  $results = $results[0]['children'];
 
227
  }
228
 
229
 
includes/locations.php CHANGED
@@ -192,20 +192,19 @@ function acf_get_location_rule_types() {
192
  }
193
 
194
 
195
- /*
196
- * acf_get_valid_location_rule
197
  *
198
- * This function will return a valid location rule array
199
  *
200
- * @type function
201
- * @date 30/5/17
202
- * @since 5.6.0
203
  *
204
- * @param $rule (array)
205
- * @return (array)
206
  */
207
 
208
- function acf_get_valid_location_rule( $rule ) {
209
 
210
  // defaults
211
  $rule = wp_parse_args( $rule, array(
@@ -216,17 +215,14 @@ function acf_get_valid_location_rule( $rule ) {
216
  'value' => '',
217
  ));
218
 
219
-
220
- // prefix for inputs
221
- $rule['prefix'] = 'acf_field_group[location]['.$rule['group'].']['.$rule['id'].']';
222
-
223
 
224
  // return
225
  return $rule;
226
-
227
  }
228
 
229
-
230
  /*
231
  * acf_get_location_rule_operators
232
  *
@@ -250,6 +246,7 @@ function acf_get_location_rule_operators( $rule ) {
250
 
251
 
252
  // filter
 
253
  $operators = apply_filters( "acf/location/rule_operators/{$rule['param']}", $operators, $rule );
254
  $operators = apply_filters( "acf/location/rule_operators", $operators, $rule );
255
 
@@ -280,6 +277,7 @@ function acf_get_location_rule_values( $rule ) {
280
 
281
 
282
  // filter
 
283
  $values = apply_filters( "acf/location/rule_values/{$rule['param']}", $values, $rule );
284
  $values = apply_filters( "acf/location/rule_values", $values, $rule );
285
 
@@ -311,6 +309,8 @@ function acf_match_location_rule( $rule, $screen ) {
311
 
312
 
313
  // filter
 
 
314
  $result = apply_filters( "acf/location/rule_match/{$rule['param']}", $result, $rule, $screen );
315
  $result = apply_filters( "acf/location/rule_match", $result, $rule, $screen );
316
 
@@ -353,4 +353,20 @@ function acf_get_location_screen( $screen, $field_group ) {
353
 
354
  }
355
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
356
  ?>
192
  }
193
 
194
 
195
+ /**
196
+ * acf_validate_location_rule
197
  *
198
+ * Returns a valid location rule array.
199
  *
200
+ * @date 28/8/18
201
+ * @since 5.7.4
 
202
  *
203
+ * @param $rule array The rule array.
204
+ * @return array
205
  */
206
 
207
+ function acf_validate_location_rule( $rule = false ) {
208
 
209
  // defaults
210
  $rule = wp_parse_args( $rule, array(
215
  'value' => '',
216
  ));
217
 
218
+ // filter
219
+ $rule = apply_filters( "acf/location/validate_rule/type={$rule['param']}", $rule );
220
+ $rule = apply_filters( "acf/location/validate_rule", $rule);
 
221
 
222
  // return
223
  return $rule;
 
224
  }
225
 
 
226
  /*
227
  * acf_get_location_rule_operators
228
  *
246
 
247
 
248
  // filter
249
+ $operators = apply_filters( "acf/location/rule_operators/type={$rule['param']}", $operators, $rule );
250
  $operators = apply_filters( "acf/location/rule_operators/{$rule['param']}", $operators, $rule );
251
  $operators = apply_filters( "acf/location/rule_operators", $operators, $rule );
252
 
277
 
278
 
279
  // filter
280
+ $values = apply_filters( "acf/location/rule_values/type={$rule['param']}", $values, $rule );
281
  $values = apply_filters( "acf/location/rule_values/{$rule['param']}", $values, $rule );
282
  $values = apply_filters( "acf/location/rule_values", $values, $rule );
283
 
309
 
310
 
311
  // filter
312
+ $result = apply_filters( "acf/location/match_rule/type={$rule['param']}", $result, $rule, $screen );
313
+ $result = apply_filters( "acf/location/match_rule", $result, $rule, $screen );
314
  $result = apply_filters( "acf/location/rule_match/{$rule['param']}", $result, $rule, $screen );
315
  $result = apply_filters( "acf/location/rule_match", $result, $rule, $screen );
316
 
353
 
354
  }
355
 
356
+ /**
357
+ * acf_get_valid_location_rule
358
+ *
359
+ * Deprecated in 5.7.4. Use acf_validate_location_rule() instead.
360
+ *
361
+ * @date 30/5/17
362
+ * @since 5.6.0
363
+ *
364
+ * @param $rule array The rule array.
365
+ * @return array
366
+ */
367
+
368
+ function acf_get_valid_location_rule( $rule ) {
369
+ return acf_validate_location_rule( $rule );
370
+ }
371
+
372
  ?>
includes/upgrades.php ADDED
@@ -0,0 +1,507 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * acf_has_upgrade
5
+ *
6
+ * Returns true if this site has an upgrade avaialble.
7
+ *
8
+ * @date 24/8/18
9
+ * @since 5.7.4
10
+ *
11
+ * @param void
12
+ * @return bool
13
+ */
14
+ function acf_has_upgrade() {
15
+
16
+ // vars
17
+ $db_version = acf_get_db_version();
18
+
19
+ // return true if DB version is < latest upgrade version
20
+ if( $db_version && acf_version_compare($db_version, '<', '5.5.0') ) {
21
+ return true;
22
+ }
23
+
24
+ // update DB version if needed
25
+ if( $db_version !== ACF_VERSION ) {
26
+ acf_update_db_version( ACF_VERSION );
27
+ }
28
+
29
+ // return
30
+ return false;
31
+ }
32
+
33
+ /**
34
+ * acf_upgrade_all
35
+ *
36
+ * Returns true if this site has an upgrade avaialble.
37
+ *
38
+ * @date 24/8/18
39
+ * @since 5.7.4
40
+ *
41
+ * @param void
42
+ * @return bool
43
+ */
44
+ function acf_upgrade_all() {
45
+
46
+ // log
47
+ acf_dev_log('acf_upgrade_all');
48
+
49
+ // vars
50
+ $db_version = acf_get_db_version();
51
+
52
+ // 5.0.0
53
+ if( acf_version_compare($db_version, '<', '5.0.0') ) {
54
+ acf_upgrade_500();
55
+ }
56
+
57
+ // 5.5.0
58
+ if( acf_version_compare($db_version, '<', '5.5.0') ) {
59
+ acf_upgrade_550();
60
+ }
61
+
62
+ // upgrade DB version once all updates are complete
63
+ acf_update_db_version( ACF_VERSION );
64
+ }
65
+
66
+ /**
67
+ * acf_get_db_version
68
+ *
69
+ * Returns the ACF DB version.
70
+ *
71
+ * @date 10/09/2016
72
+ * @since 5.4.0
73
+ *
74
+ * @param void
75
+ * @return string
76
+ */
77
+ function acf_get_db_version() {
78
+ return get_option('acf_version');
79
+ }
80
+
81
+ /*
82
+ * acf_update_db_version
83
+ *
84
+ * Updates the ACF DB version.
85
+ *
86
+ * @date 10/09/2016
87
+ * @since 5.4.0
88
+ *
89
+ * @param string $version The new version.
90
+ * @return void
91
+ */
92
+ function acf_update_db_version( $version = '' ) {
93
+ update_option('acf_version', $version );
94
+ }
95
+
96
+ /**
97
+ * acf_upgrade_500
98
+ *
99
+ * Version 5 introduces new post types for field groups and fields.
100
+ *
101
+ * @date 23/8/18
102
+ * @since 5.7.4
103
+ *
104
+ * @param void
105
+ * @return void
106
+ */
107
+ function acf_upgrade_500() {
108
+
109
+ // log
110
+ acf_dev_log('acf_upgrade_500');
111
+
112
+ // action
113
+ do_action('acf/upgrade_500');
114
+
115
+ // do tasks
116
+ acf_upgrade_500_field_groups();
117
+
118
+ // update version
119
+ acf_update_db_version('5.0.0');
120
+ }
121
+
122
+ /**
123
+ * acf_upgrade_500_field_groups
124
+ *
125
+ * Upgrades all ACF4 field groups to ACF5
126
+ *
127
+ * @date 23/8/18
128
+ * @since 5.7.4
129
+ *
130
+ * @param void
131
+ * @return void
132
+ */
133
+ function acf_upgrade_500_field_groups() {
134
+
135
+ // log
136
+ acf_dev_log('acf_upgrade_500_field_groups');
137
+
138
+ // get old field groups
139
+ $ofgs = get_posts(array(
140
+ 'numberposts' => -1,
141
+ 'post_type' => 'acf',
142
+ 'orderby' => 'menu_order title',
143
+ 'order' => 'asc',
144
+ 'suppress_filters' => true,
145
+ ));
146
+
147
+ // loop
148
+ if( $ofgs ) {
149
+ foreach( $ofgs as $ofg ){
150
+ acf_upgrade_500_field_group( $ofg );
151
+ }
152
+ }
153
+ }
154
+
155
+ /**
156
+ * acf_upgrade_500_field_group
157
+ *
158
+ * Upgrades a ACF4 field group to ACF5
159
+ *
160
+ * @date 23/8/18
161
+ * @since 5.7.4
162
+ *
163
+ * @param object $ofg The old field group post object.
164
+ * @return array $nfg The new field group array.
165
+ */
166
+ function acf_upgrade_500_field_group( $ofg ) {
167
+
168
+ // vars
169
+ $nfg = array(
170
+ 'ID' => 0,
171
+ 'title' => $ofg->post_title,
172
+ 'menu_order' => $ofg->menu_order,
173
+ );
174
+
175
+ // construct the location rules
176
+ $rules = get_post_meta($ofg->ID, 'rule', false);
177
+ $anyorall = get_post_meta($ofg->ID, 'allorany', true);
178
+ if( is_array($rules) ) {
179
+
180
+ // if field group was duplicated, rules may be a serialized string!
181
+ $rules = array_map('maybe_unserialize', $rules);
182
+
183
+ // convert rules to groups
184
+ $nfg['location'] = acf_convert_rules_to_groups( $rules, $anyorall );
185
+ }
186
+
187
+ // settings
188
+ if( $position = get_post_meta($ofg->ID, 'position', true) ) {
189
+ $nfg['position'] = $position;
190
+ }
191
+
192
+ if( $layout = get_post_meta($ofg->ID, 'layout', true) ) {
193
+ $nfg['layout'] = $layout;
194
+ }
195
+
196
+ if( $hide_on_screen = get_post_meta($ofg->ID, 'hide_on_screen', true) ) {
197
+ $nfg['hide_on_screen'] = maybe_unserialize($hide_on_screen);
198
+ }
199
+
200
+ // save field group
201
+ // acf_upgrade_field_group will call the acf_get_valid_field_group function and apply 'compatibility' changes
202
+ $nfg = acf_update_field_group( $nfg );
203
+
204
+ // action for 3rd party
205
+ do_action('acf/upgrade_500_field_group', $nfg, $ofg);
206
+
207
+ // log
208
+ acf_dev_log('acf_upgrade_500_field_group', $ofg, $nfg);
209
+
210
+ // upgrade fields
211
+ acf_upgrade_500_fields( $ofg, $nfg );
212
+
213
+ // trash?
214
+ if( $ofg->post_status == 'trash' ) {
215
+ acf_trash_field_group( $nfg['ID'] );
216
+ }
217
+
218
+ // return
219
+ return $nfg;
220
+ }
221
+
222
+ /**
223
+ * acf_upgrade_500_fields
224
+ *
225
+ * Upgrades all ACF4 fields to ACF5 from a specific field group
226
+ *
227
+ * @date 23/8/18
228
+ * @since 5.7.4
229
+ *
230
+ * @param object $ofg The old field group post object.
231
+ * @param array $nfg The new field group array.
232
+ * @return void
233
+ */
234
+ function acf_upgrade_500_fields( $ofg, $nfg ) {
235
+
236
+ // global
237
+ global $wpdb;
238
+
239
+ // get field from postmeta
240
+ $rows = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE post_id = %d AND meta_key LIKE %s", $ofg->ID, 'field_%'), ARRAY_A);
241
+
242
+ // check
243
+ if( $rows ) {
244
+
245
+ // vars
246
+ $checked = array();
247
+
248
+ // loop
249
+ foreach( $rows as $row ) {
250
+
251
+ // vars
252
+ $field = $row['meta_value'];
253
+ $field = maybe_unserialize( $field );
254
+ $field = maybe_unserialize( $field ); // run again for WPML
255
+
256
+ // bail early if key already migrated (potential duplicates in DB)
257
+ if( isset($checked[ $field['key'] ]) ) continue;
258
+ $checked[ $field['key'] ] = 1;
259
+
260
+ // add parent
261
+ $field['parent'] = $nfg['ID'];
262
+
263
+ // migrate field
264
+ $field = acf_upgrade_500_field( $field );
265
+ }
266
+ }
267
+ }
268
+
269
+ /**
270
+ * acf_upgrade_500_field
271
+ *
272
+ * Upgrades a ACF4 field to ACF5
273
+ *
274
+ * @date 23/8/18
275
+ * @since 5.7.4
276
+ *
277
+ * @param array $field The old field.
278
+ * @return array $field The new field.
279
+ */
280
+ function acf_upgrade_500_field( $field ) {
281
+
282
+ // order_no is now menu_order
283
+ $field['menu_order'] = acf_extract_var( $field, 'order_no', 0 );
284
+
285
+ // correct very old field keys (field2 => field_2)
286
+ if( substr($field['key'], 0, 6) !== 'field_' ) {
287
+ $field['key'] = 'field_' . str_replace('field', '', $field['key']);
288
+ }
289
+
290
+ // extract sub fields
291
+ $sub_fields = array();
292
+ if( $field['type'] == 'repeater' ) {
293
+
294
+ // loop over sub fields
295
+ if( !empty($field['sub_fields']) ) {
296
+ foreach( $field['sub_fields'] as $sub_field ) {
297
+ $sub_fields[] = $sub_field;
298
+ }
299
+ }
300
+
301
+ // remove sub fields from field
302
+ unset( $field['sub_fields'] );
303
+
304
+ } elseif( $field['type'] == 'flexible_content' ) {
305
+
306
+ // loop over layouts
307
+ if( is_array($field['layouts']) ) {
308
+ foreach( $field['layouts'] as $i => $layout ) {
309
+
310
+ // generate key
311
+ $layout['key'] = uniqid('layout_');
312
+
313
+ // loop over sub fields
314
+ if( !empty($layout['sub_fields']) ) {
315
+ foreach( $layout['sub_fields'] as $sub_field ) {
316
+ $sub_field['parent_layout'] = $layout['key'];
317
+ $sub_fields[] = $sub_field;
318
+ }
319
+ }
320
+
321
+ // remove sub fields from layout
322
+ unset( $layout['sub_fields'] );
323
+
324
+ // update
325
+ $field['layouts'][ $i ] = $layout;
326
+
327
+ }
328
+ }
329
+ }
330
+
331
+ // save field
332
+ $field = acf_update_field( $field );
333
+
334
+ // log
335
+ acf_dev_log('acf_upgrade_500_field', $field);
336
+
337
+ // sub fields
338
+ if( $sub_fields ) {
339
+ foreach( $sub_fields as $sub_field ) {
340
+ $sub_field['parent'] = $field['ID'];
341
+ acf_upgrade_500_field($sub_field);
342
+ }
343
+ }
344
+
345
+ // action for 3rd party
346
+ do_action('acf/update_500_field', $field);
347
+
348
+ // return
349
+ return $field;
350
+ }
351
+
352
+ /**
353
+ * acf_upgrade_550
354
+ *
355
+ * Version 5.5 adds support for the wp_termmeta table added in WP 4.4.
356
+ *
357
+ * @date 23/8/18
358
+ * @since 5.7.4
359
+ *
360
+ * @param void
361
+ * @return void
362
+ */
363
+ function acf_upgrade_550() {
364
+
365
+ // log
366
+ acf_dev_log('acf_upgrade_550');
367
+
368
+ // action
369
+ do_action('acf/upgrade_550');
370
+
371
+ // do tasks
372
+ acf_upgrade_550_termmeta();
373
+
374
+ // update version
375
+ acf_update_db_version('5.5.0');
376
+ }
377
+
378
+ /**
379
+ * acf_upgrade_550_termmeta
380
+ *
381
+ * Upgrades all ACF4 termmeta saved in wp_options to the wp_termmeta table.
382
+ *
383
+ * @date 23/8/18
384
+ * @since 5.7.4
385
+ *
386
+ * @param void
387
+ * @return void
388
+ */
389
+ function acf_upgrade_550_termmeta() {
390
+
391
+ // log
392
+ acf_dev_log('acf_upgrade_550_termmeta');
393
+
394
+ // bail early if no wp_termmeta table
395
+ if( get_option('db_version') < 34370 ) {
396
+ return;
397
+ }
398
+
399
+ // get all taxonomies
400
+ $taxonomies = get_taxonomies(false, 'objects');
401
+
402
+ // loop
403
+ if( $taxonomies ) {
404
+ foreach( $taxonomies as $taxonomy ) {
405
+ acf_upgrade_550_taxonomy( $taxonomy->name );
406
+ }}
407
+
408
+ // action for 3rd party
409
+ do_action('acf/upgrade_550_termmeta');
410
+ }
411
+
412
+ /*
413
+ * acf_wp_upgrade_550_termmeta
414
+ *
415
+ * When the database is updated to support term meta, migrate ACF term meta data across.
416
+ *
417
+ * @date 23/8/18
418
+ * @since 5.7.4
419
+ *
420
+ * @param string $wp_db_version The new $wp_db_version.
421
+ * @param string $wp_current_db_version The old (current) $wp_db_version.
422
+ * @return void
423
+ */
424
+ function acf_wp_upgrade_550_termmeta( $wp_db_version, $wp_current_db_version ) {
425
+ if( $wp_db_version >= 34370 && $wp_current_db_version < 34370 ) {
426
+ if( acf_version_compare(acf_get_db_version(), '>', '5.5.0') ) {
427
+ acf_upgrade_550_termmeta();
428
+ }
429
+ }
430
+ }
431
+ add_action( 'wp_upgrade', 'acf_wp_upgrade_550_termmeta', 10, 2 );
432
+
433
+ /**
434
+ * acf_upgrade_550_taxonomy
435
+ *
436
+ * Upgrades all ACF4 termmeta for a specific taxonomy.
437
+ *
438
+ * @date 24/8/18
439
+ * @since 5.7.4
440
+ *
441
+ * @param string $taxonomy The taxonomy name.
442
+ * @return void
443
+ */
444
+ function acf_upgrade_550_taxonomy( $taxonomy ) {
445
+
446
+ // log
447
+ acf_dev_log('acf_upgrade_550_taxonomy', $taxonomy);
448
+
449
+ // global
450
+ global $wpdb;
451
+
452
+ // vars
453
+ $search = $taxonomy . '_%';
454
+ $_search = '_' . $search;
455
+
456
+ // escape '_'
457
+ // http://stackoverflow.com/questions/2300285/how-do-i-escape-in-sql-server
458
+ $search = str_replace('_', '\_', $search);
459
+ $_search = str_replace('_', '\_', $_search);
460
+
461
+ // search
462
+ // results show faster query times using 2 LIKE vs 2 wildcards
463
+ $rows = $wpdb->get_results($wpdb->prepare(
464
+ "SELECT *
465
+ FROM $wpdb->options
466
+ WHERE option_name LIKE %s
467
+ OR option_name LIKE %s",
468
+ $search,
469
+ $_search
470
+ ), ARRAY_A);
471
+
472
+ // loop
473
+ if( $rows ) {
474
+ foreach( $rows as $row ) {
475
+
476
+ /*
477
+ Use regex to find "(_)taxonomy_(term_id)_(field_name)" and populate $matches:
478
+ Array
479
+ (
480
+ [0] => _category_3_color
481
+ [1] => _
482
+ [2] => 3
483
+ [3] => color
484
+ )
485
+ */
486
+ if( !preg_match("/^(_?){$taxonomy}_(\d+)_(.+)/", $row['option_name'], $matches) ) {
487
+ continue;
488
+ }
489
+
490
+ // vars
491
+ $term_id = $matches[2];
492
+ $meta_name = $matches[1] . $matches[3];
493
+ $meta_value = $row['option_value'];
494
+
495
+ // log
496
+ acf_dev_log('acf_upgrade_550_term', $term_id, $meta_name, $meta_value);
497
+
498
+ // update
499
+ update_metadata( 'term', $term_id, $meta_name, $meta_value );
500
+ }}
501
+
502
+ // action for 3rd party
503
+ do_action('acf/upgrade_550_taxonomy', $taxonomy);
504
+ }
505
+
506
+
507
+ ?>
includes/wpml.php CHANGED
@@ -48,8 +48,8 @@ class acf_wpml_compatibility {
48
 
49
 
50
  // actions
51
- add_action('acf/update_500', array($this, 'update_500'), 10);
52
- add_action('acf/update_500_field_group', array($this, 'update_500_field_group'), 10, 2);
53
  add_action('acf/update_field_group', array($this, 'update_field_group'), 2, 1);
54
  add_action('icl_make_duplicate', array($this, 'icl_make_duplicate'), 10, 4);
55
 
@@ -112,7 +112,7 @@ class acf_wpml_compatibility {
112
 
113
 
114
  /*
115
- * update_500
116
  *
117
  * This function will update the WPML settings to allow 'acf-field-group' to be translatable
118
  *
@@ -124,7 +124,7 @@ class acf_wpml_compatibility {
124
  * @return $post_id (int)
125
  */
126
 
127
- function update_500() {
128
 
129
  // global
130
  global $sitepress;
@@ -153,7 +153,7 @@ class acf_wpml_compatibility {
153
 
154
 
155
  /*
156
- * update_500_field_group
157
  *
158
  * This function will update the icl_translations table data when creating the fiedl groups
159
  *
@@ -165,7 +165,7 @@ class acf_wpml_compatibility {
165
  * @return n/a
166
  */
167
 
168
- function update_500_field_group($field_group, $ofg) {
169
 
170
  // global
171
  global $wpdb;
48
 
49
 
50
  // actions
51
+ add_action('acf/upgrade_500', array($this, 'upgrade_500'), 10);
52
+ add_action('acf/upgrade_500_field_group', array($this, 'upgrade_500_field_group'), 10, 2);
53
  add_action('acf/update_field_group', array($this, 'update_field_group'), 2, 1);
54
  add_action('icl_make_duplicate', array($this, 'icl_make_duplicate'), 10, 4);
55
 
112
 
113
 
114
  /*
115
+ * upgrade_500
116
  *
117
  * This function will update the WPML settings to allow 'acf-field-group' to be translatable
118
  *
124
  * @return $post_id (int)
125
  */
126
 
127
+ function upgrade_500() {
128
 
129
  // global
130
  global $sitepress;
153
 
154
 
155
  /*
156
+ * upgrade_500_field_group
157
  *
158
  * This function will update the icl_translations table data when creating the fiedl groups
159
  *
165
  * @return n/a
166
  */
167
 
168
+ function upgrade_500_field_group($field_group, $ofg) {
169
 
170
  // global
171
  global $wpdb;
lang/acf-fa_IR.mo CHANGED
Binary file
lang/acf-fa_IR.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n"
4
  "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
5
- "POT-Creation-Date: 2018-01-24 14:29+0330\n"
6
- "PO-Revision-Date: 2018-02-06 10:05+1000\n"
7
  "Last-Translator: Elliot Condon <e@elliotcondon.com>\n"
8
  "Language-Team: Kamel Kimiaei Fard <Kamel.Kimiaei.Fard@gmail.com>\n"
9
  "Language: fa\n"
@@ -11,106 +11,107 @@ msgstr ""
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "Plural-Forms: nplurals=1; plural=0;\n"
14
- "X-Generator: Poedit 1.8.1\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
 
 
17
  "X-Poedit-Basepath: ..\n"
18
  "X-Poedit-WPHeader: acf.php\n"
19
  "X-Textdomain-Support: yes\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
- #: acf.php:67
24
  msgid "Advanced Custom Fields"
25
  msgstr "زمینه‌های دلخواه پیشرفته"
26
 
27
- #: acf.php:369 includes/admin/admin.php:117
28
  msgid "Field Groups"
29
  msgstr "گروه‌های زمینه"
30
 
31
- #: acf.php:370
32
  msgid "Field Group"
33
  msgstr "گروه زمینه"
34
 
35
- #: acf.php:371 acf.php:403 includes/admin/admin.php:118
36
- #: pro/fields/class-acf-field-flexible-content.php:559
37
  msgid "Add New"
38
  msgstr "افزودن"
39
 
40
- #: acf.php:372
41
  msgid "Add New Field Group"
42
  msgstr "افزودن گروه زمینه جدید"
43
 
44
- #: acf.php:373
45
  msgid "Edit Field Group"
46
  msgstr "ویرایش گروه زمینه"
47
 
48
- #: acf.php:374
49
  msgid "New Field Group"
50
  msgstr "گروه زمینه جدید"
51
 
52
- #: acf.php:375
53
  msgid "View Field Group"
54
  msgstr "مشاهده گروه زمینه"
55
 
56
- #: acf.php:376
57
  msgid "Search Field Groups"
58
  msgstr "جستجوی گروه های زمینه"
59
 
60
- #: acf.php:377
61
  msgid "No Field Groups found"
62
  msgstr "گروه زمینه ای یافت نشد"
63
 
64
- #: acf.php:378
65
  msgid "No Field Groups found in Trash"
66
  msgstr "گروه زمینه ای در زباله دان یافت نشد"
67
 
68
- #: acf.php:401 includes/admin/admin-field-group.php:182
69
- #: includes/admin/admin-field-group.php:275
70
  #: includes/admin/admin-field-groups.php:510
71
- #: pro/fields/class-acf-field-clone.php:807
72
  msgid "Fields"
73
  msgstr "زمینه ها"
74
 
75
- #: acf.php:402
76
  msgid "Field"
77
  msgstr "زمینه"
78
 
79
- #: acf.php:404
80
  msgid "Add New Field"
81
  msgstr "زمینه جدید"
82
 
83
- #: acf.php:405
84
  msgid "Edit Field"
85
  msgstr "ویرایش زمینه"
86
 
87
- #: acf.php:406 includes/admin/views/field-group-fields.php:41
88
  #: includes/admin/views/settings-info.php:105
89
  msgid "New Field"
90
  msgstr "زمینه جدید"
91
 
92
- #: acf.php:407
93
  msgid "View Field"
94
  msgstr "نمایش زمینه"
95
 
96
- #: acf.php:408
97
  msgid "Search Fields"
98
  msgstr "جستجوی گروه های زمینه"
99
 
100
- #: acf.php:409
101
  msgid "No Fields found"
102
  msgstr "گروه زمینه ای یافت نشد"
103
 
104
- #: acf.php:410
105
  msgid "No Fields found in Trash"
106
  msgstr "گروه زمینه ای در زباله دان یافت نشد"
107
 
108
- #: acf.php:449 includes/admin/admin-field-group.php:390
109
  #: includes/admin/admin-field-groups.php:567
110
  msgid "Inactive"
111
  msgstr "غیرفعال"
112
 
113
- #: acf.php:454
114
  #, php-format
115
  msgid "Inactive <span class=\"count\">(%s)</span>"
116
  msgid_plural "Inactive <span class=\"count\">(%s)</span>"
@@ -146,100 +147,96 @@ msgstr "گروه زمینه برنامه ریزی انتشار پیدا کرده
146
  msgid "Field group draft updated."
147
  msgstr "پیش نویش گروه زمینه بروز شد."
148
 
149
- #: includes/admin/admin-field-group.php:183
150
- msgid "Location"
151
- msgstr "مکان"
152
 
153
- #: includes/admin/admin-field-group.php:184
154
- #: includes/admin/tools/class-acf-admin-tool-export.php:295
155
- msgid "Settings"
156
- msgstr "تنظیمات"
 
 
 
157
 
158
- #: includes/admin/admin-field-group.php:269
159
  msgid "Move to trash. Are you sure?"
160
  msgstr "انتقال به زباله دان، آیا شما مطمئنید؟"
161
 
162
- #: includes/admin/admin-field-group.php:270
163
- msgid "checked"
164
- msgstr "انتخاب شده"
165
-
166
- #: includes/admin/admin-field-group.php:271
167
  msgid "No toggle fields available"
168
  msgstr "هیچ زمینه شرط پذیری موجود نیست"
169
 
170
- #: includes/admin/admin-field-group.php:272
171
- msgid "Field group title is required"
172
- msgstr "عنوان گروه زمینه ضروری است"
 
 
 
 
173
 
174
- #: includes/admin/admin-field-group.php:273
 
 
 
 
 
 
 
 
175
  #: includes/api/api-field-group.php:751
176
  msgid "copy"
177
  msgstr "کپی"
178
 
179
- #: includes/admin/admin-field-group.php:274
180
- #: includes/admin/views/field-group-field-conditional-logic.php:54
181
- #: includes/admin/views/field-group-field-conditional-logic.php:154
182
  #: includes/admin/views/field-group-locations.php:29
183
  #: includes/admin/views/html-location-group.php:3
184
- #: includes/api/api-helpers.php:4001
185
  msgid "or"
186
  msgstr "یا"
187
 
188
- #: includes/admin/admin-field-group.php:276
189
- msgid "Parent fields"
190
- msgstr "زمینه های مادر"
191
-
192
- #: includes/admin/admin-field-group.php:277
193
- msgid "Sibling fields"
194
- msgstr "زمینه های هدف"
195
-
196
- #: includes/admin/admin-field-group.php:278
197
- msgid "Move Custom Field"
198
- msgstr "جابجایی زمینه دلخواه"
199
-
200
- #: includes/admin/admin-field-group.php:279
201
- msgid "This field cannot be moved until its changes have been saved"
202
- msgstr "این زمینه قبل از اینکه ذخیره شود نمی تواند جابجا شود"
203
-
204
- #: includes/admin/admin-field-group.php:280
205
  msgid "Null"
206
  msgstr "خالی (null)"
207
 
208
- #: includes/admin/admin-field-group.php:281 includes/input.php:258
209
- msgid "The changes you made will be lost if you navigate away from this page"
210
- msgstr "اگر از صفحه جاری خارج شوید ، تغییرات شما ذخیره نخواهند شد"
211
 
212
- #: includes/admin/admin-field-group.php:282
213
- msgid "The string \"field_\" may not be used at the start of a field name"
214
- msgstr "کلمه متنی \"field_\" نباید در ابتدای نام فیلد استفاده شود."
 
215
 
216
- #: includes/admin/admin-field-group.php:360
217
  msgid "Field Keys"
218
  msgstr "کایدهای زمینه"
219
 
220
- #: includes/admin/admin-field-group.php:390
221
  #: includes/admin/views/field-group-options.php:9
222
  msgid "Active"
223
  msgstr "فعال"
224
 
225
- #: includes/admin/admin-field-group.php:801
226
  msgid "Move Complete."
227
  msgstr "انتقال کامل شد."
228
 
229
- #: includes/admin/admin-field-group.php:802
230
  #, php-format
231
  msgid "The %s field can now be found in the %s field group"
232
  msgstr "زمینه %s اکنون در گروه زمینه %s قرار گرفته است"
233
 
234
- #: includes/admin/admin-field-group.php:803
235
  msgid "Close Window"
236
  msgstr "بستن زمینه"
237
 
238
- #: includes/admin/admin-field-group.php:844
239
  msgid "Please select the destination for this field"
240
  msgstr "مقصد انتقال این زمینه را مشخص کنید"
241
 
242
- #: includes/admin/admin-field-group.php:851
243
  msgid "Move Field"
244
  msgstr "جابجایی زمینه"
245
 
@@ -277,7 +274,7 @@ msgid "Sync available"
277
  msgstr "هماهنگ سازی موجود است"
278
 
279
  #: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38
280
- #: pro/fields/class-acf-field-gallery.php:355
281
  msgid "Title"
282
  msgstr "عنوان"
283
 
@@ -285,7 +282,7 @@ msgstr "عنوان"
285
  #: includes/admin/views/field-group-options.php:96
286
  #: includes/admin/views/install-network.php:21
287
  #: includes/admin/views/install-network.php:29
288
- #: pro/fields/class-acf-field-gallery.php:382
289
  msgid "Description"
290
  msgstr "توضیحات"
291
 
@@ -340,14 +337,14 @@ msgstr "تکثیر این زمینه"
340
 
341
  #: includes/admin/admin-field-groups.php:667
342
  #: includes/admin/admin-field-groups.php:683
343
- #: includes/admin/views/field-group-field.php:49
344
- #: pro/fields/class-acf-field-flexible-content.php:558
345
  msgid "Duplicate"
346
  msgstr "تکثیر"
347
 
348
  #: includes/admin/admin-field-groups.php:700
349
- #: includes/fields/class-acf-field-google-map.php:112
350
- #: includes/fields/class-acf-field-relationship.php:656
351
  msgid "Search"
352
  msgstr "جستجو"
353
 
@@ -379,7 +376,7 @@ msgid "Tools"
379
  msgstr "ابزارها"
380
 
381
  #: includes/admin/admin.php:113
382
- #: includes/admin/views/field-group-options.php:118
383
  msgid "Custom Fields"
384
  msgstr "زمینه های دلخواه"
385
 
@@ -396,7 +393,7 @@ msgstr "بازبینی و به‌روزرسانی سایت‌ها"
396
  msgid "Error validating request"
397
  msgstr "خطا در اعتبار سنجی درخواست"
398
 
399
- #: includes/admin/install.php:210 includes/admin/views/install.php:105
400
  msgid "No updates available."
401
  msgstr "به‌روزرسانی موجود نیست."
402
 
@@ -444,31 +441,57 @@ msgid "Select Field Groups"
444
  msgstr "انتخاب گروه های زمینه"
445
 
446
  #: includes/admin/tools/class-acf-admin-tool-export.php:336
447
- msgid "Select the field groups you would like to export and then select your export method. Use the download button to export to a .json file which you can then import to another ACF installation. Use the generate button to export to PHP code which you can place in your theme."
448
- msgstr "گروه زمینه هایی که مایل به تهیه خروجی آنها هستید را انتخاب کنید و در ادامه روش خروجی را نیز مشخص کنید. از دکمه دانلود برای خروجی فایل .json برای وارد کردن در یک سایت دیگر که این افزونه نصب شده است استفاده کنید. از دکمه تولید می توانید برای ساخت کد PHP برای قراردادن در قالب خود استفاده کنید."
 
 
 
 
 
 
 
 
449
 
450
  #: includes/admin/tools/class-acf-admin-tool-export.php:341
451
  msgid "Export File"
452
  msgstr "خروجی فایل"
453
 
454
  #: includes/admin/tools/class-acf-admin-tool-export.php:414
455
- msgid "The following code can be used to register a local version of the selected field group(s). A local field group can provide many benefits such as faster load times, version control & dynamic fields/settings. Simply copy and paste the following code to your theme's functions.php file or include it within an external file."
456
- msgstr "این کد می تواند برای ثبت یک نسخه محلی (لوکال)از گروه زمینه های انتخاب شده استفاده شود. یک نسخه محلی فواید زیادی دارد، مثلا سرعت لود بالاتر، کنترل نسخه و پویاسازی زمینه ها و تنظیماتشان. به راحتی می توانید کد زیر را در فایل function.php خود کپی کنید و یا از یک فایل دیگر انرا فراخوانی نمایید."
 
 
 
 
 
 
 
 
 
457
 
458
  #: includes/admin/tools/class-acf-admin-tool-export.php:446
459
  msgid "Copy to clipboard"
460
  msgstr "درج در حافظه موقت"
461
 
 
 
 
 
462
  #: includes/admin/tools/class-acf-admin-tool-import.php:26
463
  msgid "Import Field Groups"
464
  msgstr "وارد کردن گروه های زمینه"
465
 
466
  #: includes/admin/tools/class-acf-admin-tool-import.php:61
467
- msgid "Select the Advanced Custom Fields JSON file you would like to import. When you click the import button below, ACF will import the field groups."
468
- msgstr "فایل JSON ای که قبلا از این افزونه خروجی گرفته اید را انتخاب کنید تا وارد شود. زمانی که دکمه وارد کردن را در زیر کلیک کنید، سیستم اقدام به ساخت گروه های زمینه خواهد نمود"
 
 
 
 
 
469
 
470
  #: includes/admin/tools/class-acf-admin-tool-import.php:66
471
- #: includes/fields/class-acf-field-file.php:35
472
  msgid "Select File"
473
  msgstr "انتخاب پرونده"
474
 
@@ -477,7 +500,7 @@ msgid "Import File"
477
  msgstr "وارد کردن فایل"
478
 
479
  #: includes/admin/tools/class-acf-admin-tool-import.php:100
480
- #: includes/fields/class-acf-field-file.php:159
481
  msgid "No file selected"
482
  msgstr "هیچ پرونده ای انتخاب نشده"
483
 
@@ -499,123 +522,113 @@ msgid "Imported 1 field group"
499
  msgid_plural "Imported %s field groups"
500
  msgstr[0] "تعداد %s گروه زمینه وارد شد"
501
 
502
- #: includes/admin/views/field-group-field-conditional-logic.php:28
503
  msgid "Conditional Logic"
504
  msgstr "منطق شرطی"
505
 
506
- #: includes/admin/views/field-group-field-conditional-logic.php:54
507
  msgid "Show this field if"
508
  msgstr "نمایش این گروه زمینه اگر"
509
 
510
- #: includes/admin/views/field-group-field-conditional-logic.php:103
511
- #: includes/locations.php:247
512
- msgid "is equal to"
513
- msgstr "برابر شود با"
514
-
515
- #: includes/admin/views/field-group-field-conditional-logic.php:104
516
- #: includes/locations.php:248
517
- msgid "is not equal to"
518
- msgstr "برابر نشود با"
519
-
520
- #: includes/admin/views/field-group-field-conditional-logic.php:141
521
  #: includes/admin/views/html-location-rule.php:80
522
  msgid "and"
523
  msgstr "و"
524
 
525
- #: includes/admin/views/field-group-field-conditional-logic.php:156
526
  #: includes/admin/views/field-group-locations.php:31
527
  msgid "Add rule group"
528
  msgstr "افزودن گروه قانون"
529
 
530
- #: includes/admin/views/field-group-field.php:41
531
- #: pro/fields/class-acf-field-flexible-content.php:403
532
- #: pro/fields/class-acf-field-repeater.php:296
533
  msgid "Drag to reorder"
534
  msgstr "گرفتن و کشیدن برای مرتب سازی"
535
 
 
536
  #: includes/admin/views/field-group-field.php:45
537
- #: includes/admin/views/field-group-field.php:48
538
  msgid "Edit field"
539
  msgstr "ویرایش زمینه"
540
 
541
- #: includes/admin/views/field-group-field.php:48
542
- #: includes/fields/class-acf-field-file.php:141
543
- #: includes/fields/class-acf-field-image.php:122
544
  #: includes/fields/class-acf-field-link.php:139
545
- #: pro/fields/class-acf-field-gallery.php:342
546
  msgid "Edit"
547
  msgstr "ویرایش"
548
 
549
- #: includes/admin/views/field-group-field.php:49
550
  msgid "Duplicate field"
551
  msgstr "تکثیر زمینه"
552
 
553
- #: includes/admin/views/field-group-field.php:50
554
  msgid "Move field to another group"
555
  msgstr "انتقال زمینه ها به گروه دیگر"
556
 
557
- #: includes/admin/views/field-group-field.php:50
558
  msgid "Move"
559
  msgstr "انتقال"
560
 
561
- #: includes/admin/views/field-group-field.php:51
562
  msgid "Delete field"
563
  msgstr "حذف زمینه"
564
 
565
- #: includes/admin/views/field-group-field.php:51
566
- #: pro/fields/class-acf-field-flexible-content.php:557
567
  msgid "Delete"
568
  msgstr "حذف"
569
 
570
- #: includes/admin/views/field-group-field.php:67
571
  msgid "Field Label"
572
  msgstr "برچسب زمینه"
573
 
574
- #: includes/admin/views/field-group-field.php:68
575
  msgid "This is the name which will appear on the EDIT page"
576
  msgstr "این نامی است که در صفحه \"ویرایش\" نمایش داده خواهد شد."
577
 
578
- #: includes/admin/views/field-group-field.php:77
579
  msgid "Field Name"
580
  msgstr "نام زمینه"
581
 
582
- #: includes/admin/views/field-group-field.php:78
583
  msgid "Single word, no spaces. Underscores and dashes allowed"
584
  msgstr "تک کلمه، بدون فاصله. خط زیرین و خط تیره ها مجازاند"
585
 
586
- #: includes/admin/views/field-group-field.php:87
587
  msgid "Field Type"
588
  msgstr "نوع زمینه"
589
 
590
- #: includes/admin/views/field-group-field.php:98
591
  msgid "Instructions"
592
  msgstr "دستورالعمل ها"
593
 
594
- #: includes/admin/views/field-group-field.php:99
595
  msgid "Instructions for authors. Shown when submitting data"
596
  msgstr "دستورالعمل هایی برای نویسندگان. هنگام ارسال داده ها نمایش داده می شوند"
597
 
598
- #: includes/admin/views/field-group-field.php:108
599
  msgid "Required?"
600
  msgstr "لازم است؟"
601
 
602
- #: includes/admin/views/field-group-field.php:131
603
  msgid "Wrapper Attributes"
604
  msgstr "مشخصات پوشش فیلد"
605
 
606
- #: includes/admin/views/field-group-field.php:137
607
  msgid "width"
608
  msgstr "عرض"
609
 
610
- #: includes/admin/views/field-group-field.php:152
611
  msgid "class"
612
  msgstr "کلاس"
613
 
614
- #: includes/admin/views/field-group-field.php:165
615
  msgid "id"
616
  msgstr "شناسه"
617
 
618
- #: includes/admin/views/field-group-field.php:177
619
  msgid "Close Field"
620
  msgstr "بستن زمینه"
621
 
@@ -625,16 +638,16 @@ msgstr "شماره ترتیب"
625
 
626
  #: includes/admin/views/field-group-fields.php:5
627
  #: includes/fields/class-acf-field-button-group.php:198
628
- #: includes/fields/class-acf-field-checkbox.php:415
629
- #: includes/fields/class-acf-field-radio.php:306
630
- #: includes/fields/class-acf-field-select.php:432
631
- #: pro/fields/class-acf-field-flexible-content.php:584
632
  msgid "Label"
633
  msgstr "برچسب زمینه"
634
 
635
  #: includes/admin/views/field-group-fields.php:6
636
- #: includes/fields/class-acf-field-taxonomy.php:964
637
- #: pro/fields/class-acf-field-flexible-content.php:597
638
  msgid "Name"
639
  msgstr "نام"
640
 
@@ -647,8 +660,12 @@ msgid "Type"
647
  msgstr "نوع زمینه"
648
 
649
  #: includes/admin/views/field-group-fields.php:14
650
- msgid "No fields. Click the <strong>+ Add Field</strong> button to create your first field."
651
- msgstr "هیچ زمینه ای وجود ندارد. روی دکمه<strong>+ افزودن زمینه</strong> کلیک کنید تا اولین زمینه خود را بسازید."
 
 
 
 
652
 
653
  #: includes/admin/views/field-group-fields.php:31
654
  msgid "+ Add Field"
@@ -659,8 +676,12 @@ msgid "Rules"
659
  msgstr "قوانین"
660
 
661
  #: includes/admin/views/field-group-locations.php:10
662
- msgid "Create a set of rules to determine which edit screens will use these advanced custom fields"
663
- msgstr "مجموعه ای از قوانین را بسازید تا مشخص کنید در کدام صفحه ویرایش ، این زمینه های دلخواه سفارشی نمایش داده شوند."
 
 
 
 
664
 
665
  #: includes/admin/views/field-group-options.php:23
666
  msgid "Style"
@@ -699,6 +720,11 @@ msgstr "مکان برچسب"
699
  msgid "Top aligned"
700
  msgstr "سمت بالا"
701
 
 
 
 
 
 
702
  #: includes/admin/views/field-group-options.php:70
703
  msgid "Instruction placement"
704
  msgstr "مکان دستورالعمل ها"
@@ -724,74 +750,78 @@ msgid "Shown in field group list"
724
  msgstr "نمایش لیست گروه زمینه"
725
 
726
  #: includes/admin/views/field-group-options.php:107
727
- msgid "Hide on screen"
728
- msgstr "مخفی کردن در صفحه"
729
-
730
- #: includes/admin/views/field-group-options.php:108
731
- msgid "<b>Select</b> items to <b>hide</b> them from the edit screen."
732
- msgstr "<b>انتخاب</b> آیتم ها برای <b>پنهان کردن</b> آن ها از صفحه ویرایش."
733
-
734
- #: includes/admin/views/field-group-options.php:108
735
- msgid "If multiple field groups appear on an edit screen, the first field group's options will be used (the one with the lowest order number)"
736
- msgstr "اگر چندین گروه زمینه در یک صفحه ویرایش نمایش داده شود،اولین تنظیمات گروه زمینه استفاده خواهد شد. (یکی با کمترین شماره)"
737
-
738
- #: includes/admin/views/field-group-options.php:115
739
  msgid "Permalink"
740
  msgstr "پیوند یکتا"
741
 
742
- #: includes/admin/views/field-group-options.php:116
743
  msgid "Content Editor"
744
  msgstr "ویرایش گر محتوا(ادیتور اصلی)"
745
 
746
- #: includes/admin/views/field-group-options.php:117
747
  msgid "Excerpt"
748
  msgstr "چکیده"
749
 
750
- #: includes/admin/views/field-group-options.php:119
751
  msgid "Discussion"
752
  msgstr "گفتگو"
753
 
754
- #: includes/admin/views/field-group-options.php:120
755
  msgid "Comments"
756
  msgstr "دیدگاه ها"
757
 
758
- #: includes/admin/views/field-group-options.php:121
759
  msgid "Revisions"
760
  msgstr "بازنگری ها"
761
 
762
- #: includes/admin/views/field-group-options.php:122
763
  msgid "Slug"
764
  msgstr "نامک"
765
 
766
- #: includes/admin/views/field-group-options.php:123
767
  msgid "Author"
768
  msgstr "نویسنده"
769
 
770
- #: includes/admin/views/field-group-options.php:124
771
  msgid "Format"
772
  msgstr "فرمت"
773
 
774
- #: includes/admin/views/field-group-options.php:125
775
  msgid "Page Attributes"
776
  msgstr "صفات برگه"
777
 
778
- #: includes/admin/views/field-group-options.php:126
779
- #: includes/fields/class-acf-field-relationship.php:670
780
  msgid "Featured Image"
781
  msgstr "تصویر شاخص"
782
 
783
- #: includes/admin/views/field-group-options.php:127
784
  msgid "Categories"
785
  msgstr "دسته ها"
786
 
787
- #: includes/admin/views/field-group-options.php:128
788
  msgid "Tags"
789
  msgstr "برچسب ها"
790
 
791
- #: includes/admin/views/field-group-options.php:129
792
  msgid "Send Trackbacks"
793
  msgstr "ارسال بازتاب ها"
794
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
795
  #: includes/admin/views/html-location-group.php:3
796
  msgid "Show this field group if"
797
  msgstr "نمایش این گروه زمینه اگر"
@@ -807,7 +837,9 @@ msgstr "به‌روزرسانی پایگاه داده زمینه های دلخو
807
 
808
  #: includes/admin/views/install-network.php:11
809
  #, php-format
810
- msgid "The following sites require a DB upgrade. Check the ones you want to update and then click %s."
 
 
811
  msgstr "این سایت ها نیاز به به روز رسانی دارند برای انجام %s کلیک کنید."
812
 
813
  #: includes/admin/views/install-network.php:20
@@ -826,13 +858,19 @@ msgstr "سایت به روز است"
826
 
827
  #: includes/admin/views/install-network.php:63
828
  #, php-format
829
- msgid "Database Upgrade complete. <a href=\"%s\">Return to network dashboard</a>"
830
- msgstr "به روزرسانی دیتابیس انجام شد. <a href=\"%s\">بازگشت به پیشخوان شبکه</a>"
 
 
831
 
832
  #: includes/admin/views/install-network.php:102
833
  #: includes/admin/views/install-notice.php:42
834
- msgid "It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the updater now?"
835
- msgstr "قویا توصیه می شود از بانک اطلاعاتی خود قبل از هر کاری پشتیبان تهیه کنید. آیا مایلید به روز رسانی انجام شود؟"
 
 
 
 
836
 
837
  #: includes/admin/views/install-network.php:158
838
  msgid "Upgrade complete"
@@ -874,13 +912,21 @@ msgid "Thank you for updating to %s v%s!"
874
  msgstr "از شما برای بروزرسانی به آخرین نسخه %s v%s ممنون هستیم!"
875
 
876
  #: includes/admin/views/install-notice.php:28
877
- msgid "Before you start using the new awesome features, please update your database to the newest version."
878
- msgstr "قبل از اینکه از تمام امکانات شگفت انگیز جدید استفاده کنید لازم است بانک اطلاعاتی را به روز کنید"
 
 
 
 
879
 
880
  #: includes/admin/views/install-notice.php:31
881
  #, php-format
882
- msgid "Please also ensure any premium add-ons (%s) have first been updated to the latest version."
883
- msgstr "لطفا اطمینان حاصل کنید که افزودنی های تجاري (%s) ابتدا به آخرین نسخه بروز شده‌اند."
 
 
 
 
884
 
885
  #: includes/admin/views/install.php:7
886
  msgid "Reading upgrade tasks..."
@@ -905,8 +951,12 @@ msgstr "به افزونه زمینه های دلخواه پیشرفته خوش
905
 
906
  #: includes/admin/views/settings-info.php:4
907
  #, php-format
908
- msgid "Thank you for updating! ACF %s is bigger and better than ever before. We hope you like it."
909
- msgstr "از اینکه به روزرسانی کردید متشکریم! افزونه زمینه دلخواه پیشرفته %s بزرگتر و بهتر از قبل شده است. امیدواریم لذت ببرید."
 
 
 
 
910
 
911
  #: includes/admin/views/settings-info.php:17
912
  msgid "A smoother custom field experience"
@@ -917,24 +967,42 @@ msgid "Improved Usability"
917
  msgstr "کاربری بهینه شده"
918
 
919
  #: includes/admin/views/settings-info.php:23
920
- msgid "Including the popular Select2 library has improved both usability and speed across a number of field types including post object, page link, taxonomy and select."
921
- msgstr "استفاده از کتابخانه محبوب Select2 باعث سرعت در عملکرد و کاربری بهتر در انواع زمینه هاشامل آبجکت نوشته، پیوند(لینک) صفحه ، طبقه بندی و زمینه های انتخاب(Select) شده است"
 
 
 
 
 
 
922
 
923
  #: includes/admin/views/settings-info.php:27
924
  msgid "Improved Design"
925
  msgstr "طراحی بهینه شده"
926
 
927
  #: includes/admin/views/settings-info.php:28
928
- msgid "Many fields have undergone a visual refresh to make ACF look better than ever! Noticeable changes are seen on the gallery, relationship and oEmbed (new) fields!"
929
- msgstr "بسیاری از زمینه ها از نظر ظاهری باز طراحی شدند تا این افزونه از قبل بهتر شده باشد. تغییرات چشم گیر در گالری و ارتباط و زمینه جدید به نام oEmbed صورت گرفته است."
 
 
 
 
 
 
930
 
931
  #: includes/admin/views/settings-info.php:32
932
  msgid "Improved Data"
933
  msgstr "داده ها بهینه شده اند"
934
 
935
  #: includes/admin/views/settings-info.php:33
936
- msgid "Redesigning the data architecture has allowed sub fields to live independently from their parents. This allows you to drag and drop fields in and out of parent fields!"
937
- msgstr "بازطراحی معماری داده ها این اجازه را به زمینه های زیرمجموعه داده است که بدون زمینه های والد باقی بمانند. این به شما کمک می کند که زمینه ها را از یک فیلد اصلی خارج یا به آن وارد نمایید !"
 
 
 
 
 
 
938
 
939
  #: includes/admin/views/settings-info.php:39
940
  msgid "Goodbye Add-ons. Hello PRO"
@@ -945,21 +1013,34 @@ msgid "Introducing ACF PRO"
945
  msgstr "معرفی نسخه حرفه ای"
946
 
947
  #: includes/admin/views/settings-info.php:45
948
- msgid "We're changing the way premium functionality is delivered in an exciting way!"
949
- msgstr "ما در حال تغییر راه عملکردهای پولی افزونه به شیوه ای هیجان انگیز هستیم!"
 
 
950
 
951
  #: includes/admin/views/settings-info.php:46
952
  #, php-format
953
- msgid "All 4 premium add-ons have been combined into a new <a href=\"%s\">Pro version of ACF</a>. With both personal and developer licenses available, premium functionality is more affordable and accessible than ever before!"
954
- msgstr "هر چهار افزدونی پولی یکی شده و تحت عنوان <a href=\"%s\">نسخه حرفه ای (Pro) </a> از افزونه زمینه های دلخواه معرفی شده اند. دو نسخه شخصی و توسعه دهنده موجود است که در هر دو این امکانات بهتر و دسترس تر از قبل موجود است!"
 
 
 
 
 
 
955
 
956
  #: includes/admin/views/settings-info.php:50
957
  msgid "Powerful Features"
958
  msgstr "امکانات قدرتمند"
959
 
960
  #: includes/admin/views/settings-info.php:51
961
- msgid "ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful gallery field and the ability to create extra admin options pages!"
962
- msgstr "نسخه حرفه دارای امکانات قدرتمندی نظیر داده های تکرارپذیر، محتوای منعطف، یک زمینه گالری زیبا و امکان ساخت صفحات تنظیمات می باشد !"
 
 
 
 
 
963
 
964
  #: includes/admin/views/settings-info.php:52
965
  #, php-format
@@ -972,13 +1053,22 @@ msgstr "به روزرسانی آسان"
972
 
973
  #: includes/admin/views/settings-info.php:57
974
  #, php-format
975
- msgid "To help make upgrading easy, <a href=\"%s\">login to your store account</a> and claim a free copy of ACF PRO!"
976
- msgstr "برای به روزرسانی ساده <a href=\"%s\"> به بخش کاربری خود در فروشگاه وارد شوید </a> و یک نسخه از ویرایش حرفه ای را دانلود کنید!"
 
 
 
 
977
 
978
  #: includes/admin/views/settings-info.php:58
979
  #, php-format
980
- msgid "We also wrote an <a href=\"%s\">upgrade guide</a> to answer any questions, but if you do have one, please contact our support team via the <a href=\"%s\">help desk</a>"
981
- msgstr "همچنین یک <a href=\"%s\"> راهنمای به روزرسانی</a> برای پاسخ به سوالات نوشته ایم ولی اگر هنوز سوالی دارید از <a href=\"%s\">تیم پشتیبانی</a> بپرسید "
 
 
 
 
 
982
 
983
  #: includes/admin/views/settings-info.php:66
984
  msgid "Under the Hood"
@@ -990,7 +1080,8 @@ msgstr "تنظیمات زمینه ها هوشمندتر شدند"
990
 
991
  #: includes/admin/views/settings-info.php:72
992
  msgid "ACF now saves its field settings as individual post objects"
993
- msgstr "افزونه اکنون تنظیمات زمینه ها را به عنوان آبجکت ها مختلف نوشته ذخیره می کند"
 
994
 
995
  #: includes/admin/views/settings-info.php:76
996
  msgid "More AJAX"
@@ -1013,7 +1104,9 @@ msgid "Better version control"
1013
  msgstr "کنترل نسخه بهتر"
1014
 
1015
  #: includes/admin/views/settings-info.php:89
1016
- msgid "New auto export to JSON feature allows field settings to be version controlled"
 
 
1017
  msgstr "اکنون با خروجی جدید JSON امکان کنترل نسخه بهتر را فراهم کردیم"
1018
 
1019
  #: includes/admin/views/settings-info.php:93
@@ -1030,7 +1123,9 @@ msgstr "فرم های جدید"
1030
 
1031
  #: includes/admin/views/settings-info.php:99
1032
  msgid "Fields can now be mapped to comments, widgets and all user forms!"
1033
- msgstr "گزینه ها اکنون می توانند به نظرات، ابزارک ها و حتی فرم های مربوط به کاربران متصل شوند !"
 
 
1034
 
1035
  #: includes/admin/views/settings-info.php:106
1036
  msgid "A new field for embedding content has been added"
@@ -1049,7 +1144,9 @@ msgid "New Settings"
1049
  msgstr "تنظیمات جدید"
1050
 
1051
  #: includes/admin/views/settings-info.php:116
1052
- msgid "Field group settings have been added for label placement and instruction placement"
 
 
1053
  msgstr "تنظیماتی به گروه زمینه برای مکان برچسب ها و توضیحات اضافه شده است"
1054
 
1055
  #: includes/admin/views/settings-info.php:122
@@ -1066,14 +1163,16 @@ msgstr "خطایابی بهتر"
1066
 
1067
  #: includes/admin/views/settings-info.php:128
1068
  msgid "Form validation is now done via PHP + AJAX in favour of only JS"
1069
- msgstr "خطایابی فرم (validation) اکنون از طریق PHP + AJAX به جای JS انجام می شود"
 
1070
 
1071
  #: includes/admin/views/settings-info.php:132
1072
  msgid "Relationship Field"
1073
  msgstr "زمینه ارتباط"
1074
 
1075
  #: includes/admin/views/settings-info.php:133
1076
- msgid "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)"
 
1077
  msgstr "تنظیمات جدید برای زمینه ارتباط و فیلتر کردن اضافه شده است"
1078
 
1079
  #: includes/admin/views/settings-info.php:139
@@ -1081,8 +1180,12 @@ msgid "Moving Fields"
1081
  msgstr "جابجایی زمینه ها"
1082
 
1083
  #: includes/admin/views/settings-info.php:140
1084
- msgid "New field group functionality allows you to move a field between groups & parents"
1085
- msgstr "عملکرد جدید گروه زمینه ها به شما امکان جابجایی زمینه ها بین گروه ها و بین گروه های والد را می دهد"
 
 
 
 
1086
 
1087
  #: includes/admin/views/settings-info.php:144
1088
  #: includes/fields/class-acf-field-page_link.php:25
@@ -1098,110 +1201,238 @@ msgid "Better Options Pages"
1098
  msgstr "صفحه تنظیمات بهتر"
1099
 
1100
  #: includes/admin/views/settings-info.php:150
1101
- msgid "New functions for options page allow creation of both parent and child menu pages"
1102
- msgstr "تنظیمات جدید برای صفحه تنظیمات اجازه ساخت هر دو صفحه منوی والد و زیرمجموعه را می دهد"
 
 
 
 
1103
 
1104
- #: includes/admin/views/settings-info.php:159
1105
  #, php-format
1106
  msgid "We think you'll love the changes in %s."
1107
  msgstr "فکر می کنیم شما تغییرات در %s را دوست خواهید داشت"
1108
 
1109
- #: includes/api/api-helpers.php:900
1110
  msgid "Thumbnail"
1111
  msgstr "تصویر بندانگشتی"
1112
 
1113
- #: includes/api/api-helpers.php:901
1114
  msgid "Medium"
1115
  msgstr "متوسط"
1116
 
1117
- #: includes/api/api-helpers.php:902
1118
  msgid "Large"
1119
  msgstr "بزرگ"
1120
 
1121
- #: includes/api/api-helpers.php:951
1122
  msgid "Full Size"
1123
  msgstr "اندازه کامل"
1124
 
1125
- #: includes/api/api-helpers.php:1292 includes/api/api-helpers.php:1865
1126
- #: pro/fields/class-acf-field-clone.php:992
1127
  msgid "(no title)"
1128
  msgstr "(بدون عنوان)"
1129
 
1130
- #: includes/api/api-helpers.php:3922
1131
  #, php-format
1132
  msgid "Image width must be at least %dpx."
1133
  msgstr "عرض تصویر باید حداقل %d پیکسل باشد."
1134
 
1135
- #: includes/api/api-helpers.php:3927
1136
  #, php-format
1137
  msgid "Image width must not exceed %dpx."
1138
  msgstr "عرض تصویر نباید از %d پیکسل بیشتر باشد."
1139
 
1140
- #: includes/api/api-helpers.php:3943
1141
  #, php-format
1142
  msgid "Image height must be at least %dpx."
1143
  msgstr "ارتفاع فایل باید حداقل %d پیکسل باشد."
1144
 
1145
- #: includes/api/api-helpers.php:3948
1146
  #, php-format
1147
  msgid "Image height must not exceed %dpx."
1148
  msgstr "ارتفاع تصویر نباید از %d پیکسل بیشتر باشد."
1149
 
1150
- #: includes/api/api-helpers.php:3966
1151
  #, php-format
1152
  msgid "File size must be at least %s."
1153
  msgstr "حجم فایل باید حداقل %s باشد."
1154
 
1155
- #: includes/api/api-helpers.php:3971
1156
  #, php-format
1157
  msgid "File size must must not exceed %s."
1158
  msgstr "حجم فایل ها نباید از %s بیشتر باشد."
1159
 
1160
- #: includes/api/api-helpers.php:4005
1161
  #, php-format
1162
  msgid "File type must be %s."
1163
  msgstr "نوع فایل باید %s باشد"
1164
 
1165
- #: includes/fields.php:144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1166
  msgid "Basic"
1167
  msgstr "پایه"
1168
 
1169
- #: includes/fields.php:145 includes/forms/form-front.php:47
1170
  msgid "Content"
1171
  msgstr "محتوا"
1172
 
1173
- #: includes/fields.php:146
1174
  msgid "Choice"
1175
  msgstr "انتخاب"
1176
 
1177
- #: includes/fields.php:147
1178
  msgid "Relational"
1179
  msgstr "رابطه"
1180
 
1181
- #: includes/fields.php:148
1182
  msgid "jQuery"
1183
  msgstr "جی کوئری"
1184
 
1185
- #: includes/fields.php:149
1186
- #: includes/fields/class-acf-field-button-group.php:177
1187
- #: includes/fields/class-acf-field-checkbox.php:384
1188
  #: includes/fields/class-acf-field-group.php:474
1189
- #: includes/fields/class-acf-field-radio.php:285
1190
- #: pro/fields/class-acf-field-clone.php:839
1191
- #: pro/fields/class-acf-field-flexible-content.php:554
1192
- #: pro/fields/class-acf-field-flexible-content.php:603
1193
- #: pro/fields/class-acf-field-repeater.php:450
1194
  msgid "Layout"
1195
  msgstr "چیدمان"
1196
 
1197
- #: includes/fields.php:326
1198
- msgid "Field type does not exist"
1199
- msgstr "نوع زمینه وجود ندارد"
1200
-
1201
- #: includes/fields.php:326
1202
- msgid "Unknown"
1203
- msgstr "ناشناخته"
1204
-
1205
  #: includes/fields/class-acf-field-accordion.php:24
1206
  msgid "Accordion"
1207
  msgstr "آکاردئونی"
@@ -1228,8 +1459,12 @@ msgid "Endpoint"
1228
  msgstr "نقطه پایانی"
1229
 
1230
  #: includes/fields/class-acf-field-accordion.php:120
1231
- msgid "Define an endpoint for the previous accordion to stop. This accordion will not be visible."
1232
- msgstr "یک نقطه پایانی برای توقف آکاردئون قبلی تعریف کنید. این آکاردئون مخفی خواهد بود."
 
 
 
 
1233
 
1234
  #: includes/fields/class-acf-field-button-group.php:24
1235
  msgid "Button Group"
@@ -1238,28 +1473,28 @@ msgstr "گروه دکمه ها"
1238
  #: includes/fields/class-acf-field-button-group.php:149
1239
  #: includes/fields/class-acf-field-checkbox.php:344
1240
  #: includes/fields/class-acf-field-radio.php:235
1241
- #: includes/fields/class-acf-field-select.php:368
1242
  msgid "Choices"
1243
  msgstr "انتخاب ها"
1244
 
1245
  #: includes/fields/class-acf-field-button-group.php:150
1246
  #: includes/fields/class-acf-field-checkbox.php:345
1247
  #: includes/fields/class-acf-field-radio.php:236
1248
- #: includes/fields/class-acf-field-select.php:369
1249
  msgid "Enter each choice on a new line."
1250
  msgstr "هر انتخاب را در یک خط جدید وارد کنید."
1251
 
1252
  #: includes/fields/class-acf-field-button-group.php:150
1253
  #: includes/fields/class-acf-field-checkbox.php:345
1254
  #: includes/fields/class-acf-field-radio.php:236
1255
- #: includes/fields/class-acf-field-select.php:369
1256
  msgid "For more control, you may specify both a value and label like this:"
1257
  msgstr "برای کنترل بیشتر، ممکن است هر دو مقدار و برچسب را مانند زیر مشخص کنید:"
1258
 
1259
  #: includes/fields/class-acf-field-button-group.php:150
1260
  #: includes/fields/class-acf-field-checkbox.php:345
1261
  #: includes/fields/class-acf-field-radio.php:236
1262
- #: includes/fields/class-acf-field-select.php:369
1263
  msgid "red : Red"
1264
  msgstr "red : قرمز"
1265
 
@@ -1267,87 +1502,87 @@ msgstr "red : قرمز"
1267
  #: includes/fields/class-acf-field-page_link.php:513
1268
  #: includes/fields/class-acf-field-post_object.php:412
1269
  #: includes/fields/class-acf-field-radio.php:244
1270
- #: includes/fields/class-acf-field-select.php:386
1271
- #: includes/fields/class-acf-field-taxonomy.php:793
1272
- #: includes/fields/class-acf-field-user.php:408
1273
  msgid "Allow Null?"
1274
  msgstr "آیا Null مجاز است؟"
1275
 
1276
  #: includes/fields/class-acf-field-button-group.php:168
1277
- #: includes/fields/class-acf-field-checkbox.php:375
1278
  #: includes/fields/class-acf-field-color_picker.php:131
1279
  #: includes/fields/class-acf-field-email.php:118
1280
  #: includes/fields/class-acf-field-number.php:127
1281
- #: includes/fields/class-acf-field-radio.php:276
1282
- #: includes/fields/class-acf-field-range.php:148
1283
- #: includes/fields/class-acf-field-select.php:377
1284
  #: includes/fields/class-acf-field-text.php:119
1285
  #: includes/fields/class-acf-field-textarea.php:102
1286
  #: includes/fields/class-acf-field-true_false.php:135
1287
  #: includes/fields/class-acf-field-url.php:100
1288
- #: includes/fields/class-acf-field-wysiwyg.php:410
1289
  msgid "Default Value"
1290
  msgstr "مقدار پیش فرض"
1291
 
1292
  #: includes/fields/class-acf-field-button-group.php:169
1293
  #: includes/fields/class-acf-field-email.php:119
1294
  #: includes/fields/class-acf-field-number.php:128
1295
- #: includes/fields/class-acf-field-radio.php:277
1296
- #: includes/fields/class-acf-field-range.php:149
1297
  #: includes/fields/class-acf-field-text.php:120
1298
  #: includes/fields/class-acf-field-textarea.php:103
1299
  #: includes/fields/class-acf-field-url.php:101
1300
- #: includes/fields/class-acf-field-wysiwyg.php:411
1301
  msgid "Appears when creating a new post"
1302
  msgstr "هنگام ایجاد یک نوشته جدید نمایش داده می شود"
1303
 
1304
  #: includes/fields/class-acf-field-button-group.php:183
1305
- #: includes/fields/class-acf-field-checkbox.php:391
1306
- #: includes/fields/class-acf-field-radio.php:292
1307
  msgid "Horizontal"
1308
  msgstr "افقی"
1309
 
1310
  #: includes/fields/class-acf-field-button-group.php:184
1311
- #: includes/fields/class-acf-field-checkbox.php:390
1312
- #: includes/fields/class-acf-field-radio.php:291
1313
  msgid "Vertical"
1314
  msgstr "عمودی"
1315
 
1316
  #: includes/fields/class-acf-field-button-group.php:191
1317
- #: includes/fields/class-acf-field-checkbox.php:408
1318
- #: includes/fields/class-acf-field-file.php:204
1319
- #: includes/fields/class-acf-field-image.php:188
1320
  #: includes/fields/class-acf-field-link.php:166
1321
- #: includes/fields/class-acf-field-radio.php:299
1322
- #: includes/fields/class-acf-field-taxonomy.php:833
1323
  msgid "Return Value"
1324
  msgstr "مقدار بازگشت"
1325
 
1326
  #: includes/fields/class-acf-field-button-group.php:192
1327
- #: includes/fields/class-acf-field-checkbox.php:409
1328
- #: includes/fields/class-acf-field-file.php:205
1329
- #: includes/fields/class-acf-field-image.php:189
1330
  #: includes/fields/class-acf-field-link.php:167
1331
- #: includes/fields/class-acf-field-radio.php:300
1332
  msgid "Specify the returned value on front end"
1333
  msgstr "مقدار برگشتی در نمایش نهایی را تعیین کنید"
1334
 
1335
  #: includes/fields/class-acf-field-button-group.php:197
1336
- #: includes/fields/class-acf-field-checkbox.php:414
1337
- #: includes/fields/class-acf-field-radio.php:305
1338
- #: includes/fields/class-acf-field-select.php:431
1339
  msgid "Value"
1340
  msgstr "مقدار"
1341
 
1342
  #: includes/fields/class-acf-field-button-group.php:199
1343
- #: includes/fields/class-acf-field-checkbox.php:416
1344
- #: includes/fields/class-acf-field-radio.php:307
1345
- #: includes/fields/class-acf-field-select.php:433
1346
  msgid "Both (Array)"
1347
  msgstr "هر دو (آرایه)"
1348
 
1349
  #: includes/fields/class-acf-field-checkbox.php:25
1350
- #: includes/fields/class-acf-field-taxonomy.php:780
1351
  msgid "Checkbox"
1352
  msgstr "جعبه انتخاب(چک باکس)"
1353
 
@@ -1375,16 +1610,16 @@ msgstr "ذخیره دلخواه"
1375
  msgid "Save 'custom' values to the field's choices"
1376
  msgstr "ذخیره مقادیر دلخواه در انتخاب های زمینه"
1377
 
1378
- #: includes/fields/class-acf-field-checkbox.php:376
1379
- #: includes/fields/class-acf-field-select.php:378
1380
  msgid "Enter each default value on a new line"
1381
  msgstr "هر مقدار پیش فرض را در یک خط جدید وارد کنید"
1382
 
1383
- #: includes/fields/class-acf-field-checkbox.php:398
1384
  msgid "Toggle"
1385
  msgstr "انتخاب"
1386
 
1387
- #: includes/fields/class-acf-field-checkbox.php:399
1388
  msgid "Prepend an extra checkbox to toggle all choices"
1389
  msgstr "اضافه کردن چک باکس اضافی برای انتخاب همه"
1390
 
@@ -1412,77 +1647,78 @@ msgstr "رنگ فعلی"
1412
  msgid "Date Picker"
1413
  msgstr "تاریخ"
1414
 
1415
- #: includes/fields/class-acf-field-date_picker.php:33
1416
  msgctxt "Date Picker JS closeText"
1417
  msgid "Done"
1418
  msgstr "انجام شد"
1419
 
1420
- #: includes/fields/class-acf-field-date_picker.php:34
1421
  msgctxt "Date Picker JS currentText"
1422
  msgid "Today"
1423
  msgstr "امروز"
1424
 
1425
- #: includes/fields/class-acf-field-date_picker.php:35
1426
  msgctxt "Date Picker JS nextText"
1427
  msgid "Next"
1428
  msgstr "بعدی"
1429
 
1430
- #: includes/fields/class-acf-field-date_picker.php:36
1431
  msgctxt "Date Picker JS prevText"
1432
  msgid "Prev"
1433
  msgstr "قبلی"
1434
 
1435
- #: includes/fields/class-acf-field-date_picker.php:37
1436
  msgctxt "Date Picker JS weekHeader"
1437
  msgid "Wk"
1438
  msgstr "هفته"
1439
 
1440
- #: includes/fields/class-acf-field-date_picker.php:207
1441
- #: includes/fields/class-acf-field-date_time_picker.php:181
1442
  #: includes/fields/class-acf-field-time_picker.php:109
1443
  msgid "Display Format"
1444
  msgstr "فرمت نمایش"
1445
 
1446
- #: includes/fields/class-acf-field-date_picker.php:208
1447
- #: includes/fields/class-acf-field-date_time_picker.php:182
1448
  #: includes/fields/class-acf-field-time_picker.php:110
1449
  msgid "The format displayed when editing a post"
1450
  msgstr "قالب در زمان نمایش نوشته دیده خواهد شد"
1451
 
1452
- #: includes/fields/class-acf-field-date_picker.php:216
1453
- #: includes/fields/class-acf-field-date_picker.php:247
1454
- #: includes/fields/class-acf-field-date_time_picker.php:191
1455
- #: includes/fields/class-acf-field-date_time_picker.php:208
1456
  #: includes/fields/class-acf-field-time_picker.php:117
1457
  #: includes/fields/class-acf-field-time_picker.php:132
1458
  msgid "Custom:"
1459
  msgstr "دلخواه:"
1460
 
1461
- #: includes/fields/class-acf-field-date_picker.php:226
1462
  msgid "Save Format"
1463
  msgstr "ذخیره قالب"
1464
 
1465
- #: includes/fields/class-acf-field-date_picker.php:227
1466
  msgid "The format used when saving a value"
1467
  msgstr "قالب استفاده در زمان ذخیره مقدار"
1468
 
1469
- #: includes/fields/class-acf-field-date_picker.php:237
1470
- #: includes/fields/class-acf-field-date_time_picker.php:198
1471
  #: includes/fields/class-acf-field-post_object.php:432
1472
- #: includes/fields/class-acf-field-relationship.php:697
1473
- #: includes/fields/class-acf-field-select.php:426
1474
  #: includes/fields/class-acf-field-time_picker.php:124
 
1475
  msgid "Return Format"
1476
  msgstr "فرمت بازگشت"
1477
 
1478
- #: includes/fields/class-acf-field-date_picker.php:238
1479
- #: includes/fields/class-acf-field-date_time_picker.php:199
1480
  #: includes/fields/class-acf-field-time_picker.php:125
1481
  msgid "The format returned via template functions"
1482
  msgstr "قالب توسط توابع پوسته نمایش داده خواهد شد"
1483
 
1484
- #: includes/fields/class-acf-field-date_picker.php:256
1485
- #: includes/fields/class-acf-field-date_time_picker.php:215
1486
  msgid "Week Starts On"
1487
  msgstr "اولین روز هفته"
1488
 
@@ -1490,77 +1726,77 @@ msgstr "اولین روز هفته"
1490
  msgid "Date Time Picker"
1491
  msgstr "انتخاب کننده زمان و تاریخ"
1492
 
1493
- #: includes/fields/class-acf-field-date_time_picker.php:33
1494
  msgctxt "Date Time Picker JS timeOnlyTitle"
1495
  msgid "Choose Time"
1496
  msgstr "انتخاب زمان"
1497
 
1498
- #: includes/fields/class-acf-field-date_time_picker.php:34
1499
  msgctxt "Date Time Picker JS timeText"
1500
  msgid "Time"
1501
  msgstr "زمان"
1502
 
1503
- #: includes/fields/class-acf-field-date_time_picker.php:35
1504
  msgctxt "Date Time Picker JS hourText"
1505
  msgid "Hour"
1506
  msgstr "ساعت"
1507
 
1508
- #: includes/fields/class-acf-field-date_time_picker.php:36
1509
  msgctxt "Date Time Picker JS minuteText"
1510
  msgid "Minute"
1511
  msgstr "دقیقه"
1512
 
1513
- #: includes/fields/class-acf-field-date_time_picker.php:37
1514
  msgctxt "Date Time Picker JS secondText"
1515
  msgid "Second"
1516
  msgstr "ثانیه"
1517
 
1518
- #: includes/fields/class-acf-field-date_time_picker.php:38
1519
  msgctxt "Date Time Picker JS millisecText"
1520
  msgid "Millisecond"
1521
  msgstr "میلی ثانیه"
1522
 
1523
- #: includes/fields/class-acf-field-date_time_picker.php:39
1524
  msgctxt "Date Time Picker JS microsecText"
1525
  msgid "Microsecond"
1526
  msgstr "میکرو ثانیه"
1527
 
1528
- #: includes/fields/class-acf-field-date_time_picker.php:40
1529
  msgctxt "Date Time Picker JS timezoneText"
1530
  msgid "Time Zone"
1531
  msgstr "منطقه زمانی"
1532
 
1533
- #: includes/fields/class-acf-field-date_time_picker.php:41
1534
  msgctxt "Date Time Picker JS currentText"
1535
  msgid "Now"
1536
  msgstr "الان"
1537
 
1538
- #: includes/fields/class-acf-field-date_time_picker.php:42
1539
  msgctxt "Date Time Picker JS closeText"
1540
  msgid "Done"
1541
  msgstr "انجام شد"
1542
 
1543
- #: includes/fields/class-acf-field-date_time_picker.php:43
1544
  msgctxt "Date Time Picker JS selectText"
1545
  msgid "Select"
1546
  msgstr "انتخاب"
1547
 
1548
- #: includes/fields/class-acf-field-date_time_picker.php:45
1549
  msgctxt "Date Time Picker JS amText"
1550
  msgid "AM"
1551
  msgstr "صبح"
1552
 
1553
- #: includes/fields/class-acf-field-date_time_picker.php:46
1554
  msgctxt "Date Time Picker JS amTextShort"
1555
  msgid "A"
1556
  msgstr "صبح"
1557
 
1558
- #: includes/fields/class-acf-field-date_time_picker.php:49
1559
  msgctxt "Date Time Picker JS pmText"
1560
  msgid "PM"
1561
  msgstr "عصر"
1562
 
1563
- #: includes/fields/class-acf-field-date_time_picker.php:50
1564
  msgctxt "Date Time Picker JS pmTextShort"
1565
  msgid "P"
1566
  msgstr "عصر"
@@ -1590,7 +1826,7 @@ msgstr "در داخل ورودی نمایش داده می شود"
1590
  #: includes/fields/class-acf-field-email.php:136
1591
  #: includes/fields/class-acf-field-number.php:145
1592
  #: includes/fields/class-acf-field-password.php:80
1593
- #: includes/fields/class-acf-field-range.php:187
1594
  #: includes/fields/class-acf-field-text.php:137
1595
  msgid "Prepend"
1596
  msgstr "پیشوند"
@@ -1598,7 +1834,7 @@ msgstr "پیشوند"
1598
  #: includes/fields/class-acf-field-email.php:137
1599
  #: includes/fields/class-acf-field-number.php:146
1600
  #: includes/fields/class-acf-field-password.php:81
1601
- #: includes/fields/class-acf-field-range.php:188
1602
  #: includes/fields/class-acf-field-text.php:138
1603
  msgid "Appears before the input"
1604
  msgstr "قبل از ورودی نمایش داده می شود"
@@ -1606,7 +1842,7 @@ msgstr "قبل از ورودی نمایش داده می شود"
1606
  #: includes/fields/class-acf-field-email.php:145
1607
  #: includes/fields/class-acf-field-number.php:154
1608
  #: includes/fields/class-acf-field-password.php:89
1609
- #: includes/fields/class-acf-field-range.php:196
1610
  #: includes/fields/class-acf-field-text.php:146
1611
  msgid "Append"
1612
  msgstr "پسوند"
@@ -1614,7 +1850,7 @@ msgstr "پسوند"
1614
  #: includes/fields/class-acf-field-email.php:146
1615
  #: includes/fields/class-acf-field-number.php:155
1616
  #: includes/fields/class-acf-field-password.php:90
1617
- #: includes/fields/class-acf-field-range.php:197
1618
  #: includes/fields/class-acf-field-text.php:147
1619
  msgid "Appears after the input"
1620
  msgstr "بعد از ورودی نمایش داده می شود"
@@ -1623,72 +1859,58 @@ msgstr "بعد از ورودی نمایش داده می شود"
1623
  msgid "File"
1624
  msgstr "پرونده"
1625
 
1626
- #: includes/fields/class-acf-field-file.php:36
1627
  msgid "Edit File"
1628
  msgstr "ویرایش پرونده"
1629
 
1630
- #: includes/fields/class-acf-field-file.php:37
1631
  msgid "Update File"
1632
  msgstr "بروزرسانی پرونده"
1633
 
1634
- #: includes/fields/class-acf-field-file.php:38
1635
- #: includes/fields/class-acf-field-image.php:43 includes/media.php:57
1636
- #: pro/fields/class-acf-field-gallery.php:44
1637
- msgid "Uploaded to this post"
1638
- msgstr "بارگذاری شده در این نوشته"
1639
-
1640
- #: includes/fields/class-acf-field-file.php:130
1641
  msgid "File name"
1642
  msgstr "نام فایل"
1643
 
1644
- #: includes/fields/class-acf-field-file.php:134
1645
- #: includes/fields/class-acf-field-file.php:237
1646
  #: includes/fields/class-acf-field-file.php:248
1647
- #: includes/fields/class-acf-field-image.php:248
1648
- #: includes/fields/class-acf-field-image.php:277
1649
- #: pro/fields/class-acf-field-gallery.php:690
1650
- #: pro/fields/class-acf-field-gallery.php:719
 
1651
  msgid "File size"
1652
  msgstr "اندازه فایل"
1653
 
1654
- #: includes/fields/class-acf-field-file.php:143
1655
- #: includes/fields/class-acf-field-image.php:124
1656
- #: includes/fields/class-acf-field-link.php:140 includes/input.php:269
1657
- #: pro/fields/class-acf-field-gallery.php:343
1658
- #: pro/fields/class-acf-field-gallery.php:531
1659
- msgid "Remove"
1660
- msgstr "حذف"
1661
-
1662
- #: includes/fields/class-acf-field-file.php:159
1663
  msgid "Add File"
1664
  msgstr "افزودن پرونده"
1665
 
1666
- #: includes/fields/class-acf-field-file.php:210
1667
  msgid "File Array"
1668
  msgstr "آرایه فایل"
1669
 
1670
- #: includes/fields/class-acf-field-file.php:211
1671
  msgid "File URL"
1672
  msgstr "آدرس پرونده"
1673
 
1674
- #: includes/fields/class-acf-field-file.php:212
1675
  msgid "File ID"
1676
  msgstr "شناسه(ID) پرونده"
1677
 
1678
- #: includes/fields/class-acf-field-file.php:219
1679
- #: includes/fields/class-acf-field-image.php:213
1680
- #: pro/fields/class-acf-field-gallery.php:655
1681
  msgid "Library"
1682
  msgstr "کتابخانه"
1683
 
1684
- #: includes/fields/class-acf-field-file.php:220
1685
- #: includes/fields/class-acf-field-image.php:214
1686
- #: pro/fields/class-acf-field-gallery.php:656
1687
  msgid "Limit the media library choice"
1688
  msgstr "محدود کردن انتخاب کتابخانه چندرسانه ای"
1689
 
1690
- #: includes/fields/class-acf-field-file.php:225
1691
- #: includes/fields/class-acf-field-image.php:219
1692
  #: includes/locations/class-acf-location-attachment.php:101
1693
  #: includes/locations/class-acf-location-comment.php:79
1694
  #: includes/locations/class-acf-location-nav-menu.php:102
@@ -1696,42 +1918,42 @@ msgstr "محدود کردن انتخاب کتابخانه چندرسانه ای"
1696
  #: includes/locations/class-acf-location-user-form.php:87
1697
  #: includes/locations/class-acf-location-user-role.php:111
1698
  #: includes/locations/class-acf-location-widget.php:83
1699
- #: pro/fields/class-acf-field-gallery.php:661
1700
  msgid "All"
1701
  msgstr "همه"
1702
 
1703
- #: includes/fields/class-acf-field-file.php:226
1704
- #: includes/fields/class-acf-field-image.php:220
1705
- #: pro/fields/class-acf-field-gallery.php:662
1706
  msgid "Uploaded to post"
1707
  msgstr "بارگذاری شده در نوشته"
1708
 
1709
- #: includes/fields/class-acf-field-file.php:233
1710
- #: includes/fields/class-acf-field-image.php:227
1711
- #: pro/fields/class-acf-field-gallery.php:669
1712
  msgid "Minimum"
1713
  msgstr "کمترین"
1714
 
1715
- #: includes/fields/class-acf-field-file.php:234
1716
  #: includes/fields/class-acf-field-file.php:245
 
1717
  msgid "Restrict which files can be uploaded"
1718
  msgstr "محدودیت در آپلود فایل ها"
1719
 
1720
- #: includes/fields/class-acf-field-file.php:244
1721
- #: includes/fields/class-acf-field-image.php:256
1722
- #: pro/fields/class-acf-field-gallery.php:698
1723
  msgid "Maximum"
1724
  msgstr "بیشترین"
1725
 
1726
- #: includes/fields/class-acf-field-file.php:255
1727
- #: includes/fields/class-acf-field-image.php:285
1728
- #: pro/fields/class-acf-field-gallery.php:727
1729
  msgid "Allowed file types"
1730
  msgstr "انواع مجاز فایل"
1731
 
1732
- #: includes/fields/class-acf-field-file.php:256
1733
- #: includes/fields/class-acf-field-image.php:286
1734
- #: pro/fields/class-acf-field-gallery.php:728
1735
  msgid "Comma separated list. Leave blank for all types"
1736
  msgstr "با کامای انگلیسی جدا کرده یا برای عدم محدودیت خالی بگذارید"
1737
 
@@ -1739,54 +1961,50 @@ msgstr "با کامای انگلیسی جدا کرده یا برای عدم مح
1739
  msgid "Google Map"
1740
  msgstr "نقشه گوگل"
1741
 
1742
- #: includes/fields/class-acf-field-google-map.php:40
1743
- msgid "Locating"
1744
- msgstr "مکان یابی"
1745
-
1746
- #: includes/fields/class-acf-field-google-map.php:41
1747
  msgid "Sorry, this browser does not support geolocation"
1748
  msgstr "با عرض پوزش، این مرورگر از موقعیت یابی جغرافیایی پشتیبانی نمی کند"
1749
 
1750
- #: includes/fields/class-acf-field-google-map.php:113
1751
  msgid "Clear location"
1752
  msgstr "حذف مکان"
1753
 
1754
- #: includes/fields/class-acf-field-google-map.php:114
1755
  msgid "Find current location"
1756
  msgstr "پیدا کردن مکان فعلی"
1757
 
1758
- #: includes/fields/class-acf-field-google-map.php:117
1759
  msgid "Search for address..."
1760
  msgstr "جستجو برای آدرس . . ."
1761
 
1762
- #: includes/fields/class-acf-field-google-map.php:147
1763
- #: includes/fields/class-acf-field-google-map.php:158
1764
  msgid "Center"
1765
  msgstr "مرکز"
1766
 
1767
- #: includes/fields/class-acf-field-google-map.php:148
1768
- #: includes/fields/class-acf-field-google-map.php:159
1769
  msgid "Center the initial map"
1770
  msgstr "نقشه اولیه را وسط قرار بده"
1771
 
1772
- #: includes/fields/class-acf-field-google-map.php:170
1773
  msgid "Zoom"
1774
  msgstr "بزرگنمایی"
1775
 
1776
- #: includes/fields/class-acf-field-google-map.php:171
1777
  msgid "Set the initial zoom level"
1778
  msgstr "تعین مقدار بزرگنمایی اولیه"
1779
 
1780
- #: includes/fields/class-acf-field-google-map.php:180
1781
- #: includes/fields/class-acf-field-image.php:239
1782
- #: includes/fields/class-acf-field-image.php:268
1783
- #: includes/fields/class-acf-field-oembed.php:281
1784
- #: pro/fields/class-acf-field-gallery.php:681
1785
- #: pro/fields/class-acf-field-gallery.php:710
1786
  msgid "Height"
1787
  msgstr "ارتفاع"
1788
 
1789
- #: includes/fields/class-acf-field-google-map.php:181
1790
  msgid "Customise the map height"
1791
  msgstr "سفارشی کردن ارتفاع نقشه"
1792
 
@@ -1795,33 +2013,33 @@ msgid "Group"
1795
  msgstr "گروه"
1796
 
1797
  #: includes/fields/class-acf-field-group.php:459
1798
- #: pro/fields/class-acf-field-repeater.php:389
1799
  msgid "Sub Fields"
1800
  msgstr "زمینه های زیرمجموعه"
1801
 
1802
  #: includes/fields/class-acf-field-group.php:475
1803
- #: pro/fields/class-acf-field-clone.php:840
1804
  msgid "Specify the style used to render the selected fields"
1805
  msgstr "استایل جهت نمایش فیلد انتخابی"
1806
 
1807
  #: includes/fields/class-acf-field-group.php:480
1808
- #: pro/fields/class-acf-field-clone.php:845
1809
- #: pro/fields/class-acf-field-flexible-content.php:614
1810
- #: pro/fields/class-acf-field-repeater.php:458
1811
  msgid "Block"
1812
  msgstr "بلوک"
1813
 
1814
  #: includes/fields/class-acf-field-group.php:481
1815
- #: pro/fields/class-acf-field-clone.php:846
1816
- #: pro/fields/class-acf-field-flexible-content.php:613
1817
- #: pro/fields/class-acf-field-repeater.php:457
1818
  msgid "Table"
1819
  msgstr "جدول"
1820
 
1821
  #: includes/fields/class-acf-field-group.php:482
1822
- #: pro/fields/class-acf-field-clone.php:847
1823
- #: pro/fields/class-acf-field-flexible-content.php:615
1824
- #: pro/fields/class-acf-field-repeater.php:459
1825
  msgid "Row"
1826
  msgstr "سطر"
1827
 
@@ -1829,64 +2047,58 @@ msgstr "سطر"
1829
  msgid "Image"
1830
  msgstr "تصویر"
1831
 
1832
- #: includes/fields/class-acf-field-image.php:40
1833
  msgid "Select Image"
1834
  msgstr "انتخاب تصویر"
1835
 
1836
- #: includes/fields/class-acf-field-image.php:41
1837
- #: pro/fields/class-acf-field-gallery.php:42
1838
  msgid "Edit Image"
1839
  msgstr "ویرایش تصویر"
1840
 
1841
- #: includes/fields/class-acf-field-image.php:42
1842
- #: pro/fields/class-acf-field-gallery.php:43
1843
  msgid "Update Image"
1844
  msgstr "بروزرسانی تصویر"
1845
 
1846
- #: includes/fields/class-acf-field-image.php:44
1847
- msgid "All images"
1848
- msgstr "تمام تصاویر"
1849
-
1850
- #: includes/fields/class-acf-field-image.php:140
1851
  msgid "No image selected"
1852
  msgstr "هیچ تصویری انتخاب نشده"
1853
 
1854
- #: includes/fields/class-acf-field-image.php:140
1855
  msgid "Add Image"
1856
  msgstr "افزودن تصویر"
1857
 
1858
- #: includes/fields/class-acf-field-image.php:194
1859
  msgid "Image Array"
1860
  msgstr "آرایه تصاویر"
1861
 
1862
- #: includes/fields/class-acf-field-image.php:195
1863
  msgid "Image URL"
1864
  msgstr "آدرس تصویر"
1865
 
1866
- #: includes/fields/class-acf-field-image.php:196
1867
  msgid "Image ID"
1868
  msgstr "شناسه(ID) تصویر"
1869
 
1870
- #: includes/fields/class-acf-field-image.php:203
1871
  msgid "Preview Size"
1872
  msgstr "اندازه پیش نمایش"
1873
 
1874
- #: includes/fields/class-acf-field-image.php:204
1875
  msgid "Shown when entering data"
1876
  msgstr "هنگام وارد کردن داده ها نمایش داده می شود"
1877
 
1878
- #: includes/fields/class-acf-field-image.php:228
1879
- #: includes/fields/class-acf-field-image.php:257
1880
- #: pro/fields/class-acf-field-gallery.php:670
1881
- #: pro/fields/class-acf-field-gallery.php:699
1882
  msgid "Restrict which images can be uploaded"
1883
  msgstr "محدودیت در آپلود تصاویر"
1884
 
1885
- #: includes/fields/class-acf-field-image.php:231
1886
- #: includes/fields/class-acf-field-image.php:260
1887
- #: includes/fields/class-acf-field-oembed.php:270
1888
- #: pro/fields/class-acf-field-gallery.php:673
1889
- #: pro/fields/class-acf-field-gallery.php:702
1890
  msgid "Width"
1891
  msgstr "عرض"
1892
 
@@ -1954,17 +2166,17 @@ msgid "Number"
1954
  msgstr "شماره"
1955
 
1956
  #: includes/fields/class-acf-field-number.php:163
1957
- #: includes/fields/class-acf-field-range.php:157
1958
  msgid "Minimum Value"
1959
  msgstr "حداقل مقدار"
1960
 
1961
  #: includes/fields/class-acf-field-number.php:172
1962
- #: includes/fields/class-acf-field-range.php:167
1963
  msgid "Maximum Value"
1964
  msgstr "حداکثر مقدار"
1965
 
1966
  #: includes/fields/class-acf-field-number.php:181
1967
- #: includes/fields/class-acf-field-range.php:177
1968
  msgid "Step Size"
1969
  msgstr "اندازه مرحله"
1970
 
@@ -1986,21 +2198,12 @@ msgstr "مقدار باید کوچکتر یا مساوی %d باشد"
1986
  msgid "oEmbed"
1987
  msgstr "oEmbed"
1988
 
1989
- #: includes/fields/class-acf-field-oembed.php:219
1990
  msgid "Enter URL"
1991
  msgstr "آدرس را وارد کنید"
1992
 
1993
- #: includes/fields/class-acf-field-oembed.php:234
1994
- #: includes/fields/class-acf-field-taxonomy.php:898
1995
- msgid "Error."
1996
- msgstr "خطا."
1997
-
1998
- #: includes/fields/class-acf-field-oembed.php:234
1999
- msgid "No embed found for the given URL."
2000
- msgstr "امکان جاسازی برای آدرس وارد شده یافت نشد."
2001
-
2002
- #: includes/fields/class-acf-field-oembed.php:267
2003
- #: includes/fields/class-acf-field-oembed.php:278
2004
  msgid "Embed Size"
2005
  msgstr "اندازه جانمایی"
2006
 
@@ -2010,31 +2213,31 @@ msgstr "بایگانی ها"
2010
 
2011
  #: includes/fields/class-acf-field-page_link.php:269
2012
  #: includes/fields/class-acf-field-post_object.php:268
2013
- #: includes/fields/class-acf-field-taxonomy.php:986
2014
  msgid "Parent"
2015
  msgstr "مادر"
2016
 
2017
  #: includes/fields/class-acf-field-page_link.php:485
2018
  #: includes/fields/class-acf-field-post_object.php:384
2019
- #: includes/fields/class-acf-field-relationship.php:623
2020
  msgid "Filter by Post Type"
2021
  msgstr "فیلتر با نوع نوشته"
2022
 
2023
  #: includes/fields/class-acf-field-page_link.php:493
2024
  #: includes/fields/class-acf-field-post_object.php:392
2025
- #: includes/fields/class-acf-field-relationship.php:631
2026
  msgid "All post types"
2027
  msgstr "تمام انواع نوشته"
2028
 
2029
  #: includes/fields/class-acf-field-page_link.php:499
2030
  #: includes/fields/class-acf-field-post_object.php:398
2031
- #: includes/fields/class-acf-field-relationship.php:637
2032
  msgid "Filter by Taxonomy"
2033
  msgstr "فیلتر با طبقه بندی"
2034
 
2035
  #: includes/fields/class-acf-field-page_link.php:507
2036
  #: includes/fields/class-acf-field-post_object.php:406
2037
- #: includes/fields/class-acf-field-relationship.php:645
2038
  msgid "All taxonomies"
2039
  msgstr "تمام طبقه بندی ها"
2040
 
@@ -2044,8 +2247,8 @@ msgstr "اجازه آدرس های آرشیو"
2044
 
2045
  #: includes/fields/class-acf-field-page_link.php:533
2046
  #: includes/fields/class-acf-field-post_object.php:422
2047
- #: includes/fields/class-acf-field-select.php:396
2048
- #: includes/fields/class-acf-field-user.php:418
2049
  msgid "Select multiple values?"
2050
  msgstr "آیا چندین مقدار انتخاب شوند؟"
2051
 
@@ -2055,12 +2258,12 @@ msgstr "رمزعبور"
2055
 
2056
  #: includes/fields/class-acf-field-post_object.php:25
2057
  #: includes/fields/class-acf-field-post_object.php:437
2058
- #: includes/fields/class-acf-field-relationship.php:702
2059
  msgid "Post Object"
2060
  msgstr "آبجکت یک نوشته"
2061
 
2062
  #: includes/fields/class-acf-field-post_object.php:438
2063
- #: includes/fields/class-acf-field-relationship.php:703
2064
  msgid "Post ID"
2065
  msgstr "شناسه(ID) نوشته"
2066
 
@@ -2092,157 +2295,150 @@ msgstr "محدوده"
2092
  msgid "Relationship"
2093
  msgstr "ارتباط"
2094
 
2095
- #: includes/fields/class-acf-field-relationship.php:37
2096
- msgid "Minimum values reached ( {min} values )"
2097
- msgstr "مقار به حداقل رسیده است ( {max} )"
2098
-
2099
- #: includes/fields/class-acf-field-relationship.php:38
2100
  msgid "Maximum values reached ( {max} values )"
2101
  msgstr "مقادیر به حداکثر رسیده اند ( {max} آیتم )"
2102
 
2103
- #: includes/fields/class-acf-field-relationship.php:39
2104
  msgid "Loading"
2105
  msgstr "درحال خواندن"
2106
 
2107
- #: includes/fields/class-acf-field-relationship.php:40
2108
  msgid "No matches found"
2109
  msgstr "مطابقتی یافت نشد"
2110
 
2111
- #: includes/fields/class-acf-field-relationship.php:423
2112
  msgid "Select post type"
2113
  msgstr "انتحاب نوع نوشته"
2114
 
2115
- #: includes/fields/class-acf-field-relationship.php:449
2116
  msgid "Select taxonomy"
2117
  msgstr "انتخاب طبقه بندی"
2118
 
2119
- #: includes/fields/class-acf-field-relationship.php:539
2120
  msgid "Search..."
2121
  msgstr "جستجو . . ."
2122
 
2123
- #: includes/fields/class-acf-field-relationship.php:651
2124
  msgid "Filters"
2125
  msgstr "فیلترها"
2126
 
2127
- #: includes/fields/class-acf-field-relationship.php:657
2128
  #: includes/locations/class-acf-location-post-type.php:27
2129
  msgid "Post Type"
2130
  msgstr "نوع نوشته"
2131
 
2132
- #: includes/fields/class-acf-field-relationship.php:658
2133
  #: includes/fields/class-acf-field-taxonomy.php:28
2134
- #: includes/fields/class-acf-field-taxonomy.php:763
 
2135
  msgid "Taxonomy"
2136
  msgstr "طبقه بندی"
2137
 
2138
- #: includes/fields/class-acf-field-relationship.php:665
2139
  msgid "Elements"
2140
  msgstr "عناصر"
2141
 
2142
- #: includes/fields/class-acf-field-relationship.php:666
2143
  msgid "Selected elements will be displayed in each result"
2144
  msgstr "عناصر انتخاب شده در هر نتیجه نمایش داده خواهند شد"
2145
 
2146
- #: includes/fields/class-acf-field-relationship.php:677
2147
  msgid "Minimum posts"
2148
  msgstr "حداقل تعداد نوشته‌ها"
2149
 
2150
- #: includes/fields/class-acf-field-relationship.php:686
2151
  msgid "Maximum posts"
2152
  msgstr "حداکثر تعداد نوشته ها"
2153
 
2154
- #: includes/fields/class-acf-field-relationship.php:790
2155
- #: pro/fields/class-acf-field-gallery.php:800
2156
  #, php-format
2157
  msgid "%s requires at least %s selection"
2158
  msgid_plural "%s requires at least %s selections"
2159
  msgstr[0] "%s نیاز دارد به حداقل %s بخش"
2160
 
2161
  #: includes/fields/class-acf-field-select.php:25
2162
- #: includes/fields/class-acf-field-taxonomy.php:785
2163
  msgctxt "noun"
2164
  msgid "Select"
2165
  msgstr "انتخاب"
2166
 
2167
- #: includes/fields/class-acf-field-select.php:38
2168
  msgctxt "Select2 JS matches_1"
2169
  msgid "One result is available, press enter to select it."
2170
  msgstr "یک نتیجه موجود است برای انتخاب اینتر کنید"
2171
 
2172
- #: includes/fields/class-acf-field-select.php:39
2173
  #, php-format
2174
  msgctxt "Select2 JS matches_n"
2175
  msgid "%d results are available, use up and down arrow keys to navigate."
2176
- msgstr "نتایج %d در دسترس است با استفاده از کلید بالا و پایین روی آنها حرکت کنید."
 
2177
 
2178
- #: includes/fields/class-acf-field-select.php:40
2179
  msgctxt "Select2 JS matches_0"
2180
  msgid "No matches found"
2181
  msgstr "مشابهی یافت نشد"
2182
 
2183
- #: includes/fields/class-acf-field-select.php:41
2184
  msgctxt "Select2 JS input_too_short_1"
2185
  msgid "Please enter 1 or more characters"
2186
  msgstr "یک یا چند حرف وارد کنید"
2187
 
2188
- #: includes/fields/class-acf-field-select.php:42
2189
  #, php-format
2190
  msgctxt "Select2 JS input_too_short_n"
2191
  msgid "Please enter %d or more characters"
2192
  msgstr "لطفا %d یا چند کاراکتر دیگر وارد کنید"
2193
 
2194
- #: includes/fields/class-acf-field-select.php:43
2195
  msgctxt "Select2 JS input_too_long_1"
2196
  msgid "Please delete 1 character"
2197
  msgstr "یک حرف را حذف کنید"
2198
 
2199
- #: includes/fields/class-acf-field-select.php:44
2200
  #, php-format
2201
  msgctxt "Select2 JS input_too_long_n"
2202
  msgid "Please delete %d characters"
2203
  msgstr "لطفا %d کاراکتر را حذف کنید"
2204
 
2205
- #: includes/fields/class-acf-field-select.php:45
2206
  msgctxt "Select2 JS selection_too_long_1"
2207
  msgid "You can only select 1 item"
2208
  msgstr "فقط می توانید یک آیتم را انتخاب کنید"
2209
 
2210
- #: includes/fields/class-acf-field-select.php:46
2211
  #, php-format
2212
  msgctxt "Select2 JS selection_too_long_n"
2213
  msgid "You can only select %d items"
2214
  msgstr "شما فقط می توانید %d مورد را انتخاب کنید"
2215
 
2216
- #: includes/fields/class-acf-field-select.php:47
2217
  msgctxt "Select2 JS load_more"
2218
  msgid "Loading more results&hellip;"
2219
  msgstr "بارگذاری نتایج بیشتر&hellip;"
2220
 
2221
- #: includes/fields/class-acf-field-select.php:48
2222
  msgctxt "Select2 JS searching"
2223
  msgid "Searching&hellip;"
2224
  msgstr "جستجو &hellip;"
2225
 
2226
- #: includes/fields/class-acf-field-select.php:49
2227
  msgctxt "Select2 JS load_fail"
2228
  msgid "Loading failed"
2229
  msgstr "خطا در فراخوانی داده ها"
2230
 
2231
- #: includes/fields/class-acf-field-select.php:255 includes/media.php:54
2232
- msgctxt "verb"
2233
- msgid "Select"
2234
- msgstr "انتخاب"
2235
-
2236
- #: includes/fields/class-acf-field-select.php:406
2237
  #: includes/fields/class-acf-field-true_false.php:144
2238
  msgid "Stylised UI"
2239
  msgstr "ظاهر بهینه شده"
2240
 
2241
- #: includes/fields/class-acf-field-select.php:416
2242
  msgid "Use AJAX to lazy load choices?"
2243
  msgstr "از ایجکس برای خواندن گزینه های استفاده شود؟"
2244
 
2245
- #: includes/fields/class-acf-field-select.php:427
2246
  msgid "Specify the value returned"
2247
  msgstr "مقدار بازگشتی را انتخاب کنید"
2248
 
@@ -2258,100 +2454,96 @@ msgstr "تب"
2258
  msgid "Placement"
2259
  msgstr "جانمایی"
2260
 
2261
- #: includes/fields/class-acf-field-tab.php:107
2262
- msgid "Left aligned"
2263
- msgstr "سمت چپ"
2264
-
2265
  #: includes/fields/class-acf-field-tab.php:115
2266
- msgid "Define an endpoint for the previous tabs to stop. This will start a new group of tabs."
2267
- msgstr "یک نقطه پایانی برای توقف زبانه قبلی تعریف کنید. این کار باعث می‌شود گروه جدیدی از زبانه‌ها ایجاد شود."
 
 
 
 
2268
 
2269
- #: includes/fields/class-acf-field-taxonomy.php:713
2270
  #, php-format
2271
  msgctxt "No terms"
2272
  msgid "No %s"
2273
  msgstr "بدون %s"
2274
 
2275
- #: includes/fields/class-acf-field-taxonomy.php:732
2276
- msgid "None"
2277
- msgstr "هیچ"
2278
-
2279
- #: includes/fields/class-acf-field-taxonomy.php:764
2280
  msgid "Select the taxonomy to be displayed"
2281
  msgstr "طبقه‌بندی را برای برون بری انتخاب کنید"
2282
 
2283
- #: includes/fields/class-acf-field-taxonomy.php:773
2284
  msgid "Appearance"
2285
  msgstr "ظاهر"
2286
 
2287
- #: includes/fields/class-acf-field-taxonomy.php:774
2288
  msgid "Select the appearance of this field"
2289
  msgstr "ظاهر این زمینه را مشخص کنید"
2290
 
2291
- #: includes/fields/class-acf-field-taxonomy.php:779
2292
  msgid "Multiple Values"
2293
  msgstr "چندین مقدار"
2294
 
2295
- #: includes/fields/class-acf-field-taxonomy.php:781
2296
  msgid "Multi Select"
2297
  msgstr "چندین انتخاب"
2298
 
2299
- #: includes/fields/class-acf-field-taxonomy.php:783
2300
  msgid "Single Value"
2301
  msgstr "تک مقدار"
2302
 
2303
- #: includes/fields/class-acf-field-taxonomy.php:784
2304
  msgid "Radio Buttons"
2305
  msgstr "دکمه های رادیویی"
2306
 
2307
- #: includes/fields/class-acf-field-taxonomy.php:803
2308
  msgid "Create Terms"
2309
  msgstr "ساخت آیتم (ترم)"
2310
 
2311
- #: includes/fields/class-acf-field-taxonomy.php:804
2312
  msgid "Allow new terms to be created whilst editing"
2313
  msgstr "اجازه به ساخت آیتم‌ها(ترم‌ها) جدید در زمان ویرایش"
2314
 
2315
- #: includes/fields/class-acf-field-taxonomy.php:813
2316
  msgid "Save Terms"
2317
  msgstr "ذخیره ترم ها"
2318
 
2319
- #: includes/fields/class-acf-field-taxonomy.php:814
2320
  msgid "Connect selected terms to the post"
2321
  msgstr "الصاق آیتم های انتخابی به نوشته"
2322
 
2323
- #: includes/fields/class-acf-field-taxonomy.php:823
2324
  msgid "Load Terms"
2325
  msgstr "خواندن ترم ها"
2326
 
2327
- #: includes/fields/class-acf-field-taxonomy.php:824
2328
  msgid "Load value from posts terms"
2329
  msgstr "خواندن مقادیر از ترم های نوشته"
2330
 
2331
- #: includes/fields/class-acf-field-taxonomy.php:838
2332
  msgid "Term Object"
2333
  msgstr "به صورت آبجکت"
2334
 
2335
- #: includes/fields/class-acf-field-taxonomy.php:839
2336
  msgid "Term ID"
2337
  msgstr "شناسه(ID) آیتم(ترم)"
2338
 
2339
- #: includes/fields/class-acf-field-taxonomy.php:898
2340
  #, php-format
2341
  msgid "User unable to add new %s"
2342
  msgstr "کاربر قادر به اضافه کردن%s جدید نیست"
2343
 
2344
- #: includes/fields/class-acf-field-taxonomy.php:911
2345
  #, php-format
2346
  msgid "%s already exists"
2347
  msgstr "%s هم اکنون موجود است"
2348
 
2349
- #: includes/fields/class-acf-field-taxonomy.php:952
2350
  #, php-format
2351
  msgid "%s added"
2352
  msgstr "%s اضافه شد"
2353
 
2354
- #: includes/fields/class-acf-field-taxonomy.php:997
2355
  msgid "Add"
2356
  msgstr "افزودن"
2357
 
@@ -2389,18 +2581,6 @@ msgstr "انتخاب زمان"
2389
  msgid "True / False"
2390
  msgstr "صحیح / غلط"
2391
 
2392
- #: includes/fields/class-acf-field-true_false.php:79
2393
- #: includes/fields/class-acf-field-true_false.php:159 includes/input.php:267
2394
- #: pro/admin/views/html-settings-updates.php:89
2395
- msgid "Yes"
2396
- msgstr "بله"
2397
-
2398
- #: includes/fields/class-acf-field-true_false.php:80
2399
- #: includes/fields/class-acf-field-true_false.php:169 includes/input.php:268
2400
- #: pro/admin/views/html-settings-updates.php:99
2401
- msgid "No"
2402
- msgstr "خیر"
2403
-
2404
  #: includes/fields/class-acf-field-true_false.php:127
2405
  msgid "Displays text alongside the checkbox"
2406
  msgstr "نمایش متن همراه انتخاب"
@@ -2413,11 +2593,11 @@ msgstr "با متن"
2413
  msgid "Text shown when active"
2414
  msgstr "نمایش متن در زمان فعال بودن"
2415
 
2416
- #: includes/fields/class-acf-field-true_false.php:165
2417
  msgid "Off Text"
2418
  msgstr "بدون متن"
2419
 
2420
- #: includes/fields/class-acf-field-true_false.php:166
2421
  msgid "Text shown when inactive"
2422
  msgstr "نمایش متن در زمان غیر فعال بودن"
2423
 
@@ -2433,64 +2613,76 @@ msgstr "مقدار باید یک آدرس صحیح باشد"
2433
  msgid "User"
2434
  msgstr "کاربر"
2435
 
2436
- #: includes/fields/class-acf-field-user.php:393
2437
  msgid "Filter by role"
2438
  msgstr "تفکیک با نقش"
2439
 
2440
- #: includes/fields/class-acf-field-user.php:401
2441
  msgid "All user roles"
2442
  msgstr "تمام نقش های کاربر"
2443
 
 
 
 
 
 
 
 
 
 
 
 
 
2444
  #: includes/fields/class-acf-field-wysiwyg.php:25
2445
  msgid "Wysiwyg Editor"
2446
  msgstr "ویرایشگر دیداری"
2447
 
2448
- #: includes/fields/class-acf-field-wysiwyg.php:359
2449
  msgid "Visual"
2450
  msgstr "بصری"
2451
 
2452
- #: includes/fields/class-acf-field-wysiwyg.php:360
2453
  msgctxt "Name for the Text editor tab (formerly HTML)"
2454
  msgid "Text"
2455
  msgstr "متن"
2456
 
2457
- #: includes/fields/class-acf-field-wysiwyg.php:366
2458
  msgid "Click to initialize TinyMCE"
2459
  msgstr "برای اجرای TinyMCE کلیک کنید"
2460
 
2461
- #: includes/fields/class-acf-field-wysiwyg.php:419
2462
  msgid "Tabs"
2463
  msgstr "تب ها"
2464
 
2465
- #: includes/fields/class-acf-field-wysiwyg.php:424
2466
  msgid "Visual & Text"
2467
  msgstr "بصری و متنی"
2468
 
2469
- #: includes/fields/class-acf-field-wysiwyg.php:425
2470
  msgid "Visual Only"
2471
  msgstr "فقط بصری"
2472
 
2473
- #: includes/fields/class-acf-field-wysiwyg.php:426
2474
  msgid "Text Only"
2475
  msgstr "فقط متن"
2476
 
2477
- #: includes/fields/class-acf-field-wysiwyg.php:433
2478
  msgid "Toolbar"
2479
  msgstr "نوار ابزار"
2480
 
2481
- #: includes/fields/class-acf-field-wysiwyg.php:443
2482
  msgid "Show Media Upload Buttons?"
2483
  msgstr "آیا دکمه های بارگذاری رسانه نمایش داده شوند؟"
2484
 
2485
- #: includes/fields/class-acf-field-wysiwyg.php:453
2486
  msgid "Delay initialization?"
2487
  msgstr "نمایش با تاخیر؟"
2488
 
2489
- #: includes/fields/class-acf-field-wysiwyg.php:454
2490
  msgid "TinyMCE will not be initalized until field is clicked"
2491
  msgstr "تا زمانی که روی فیلد کلیک نشود TinyMCE اجرا نخواهد شد"
2492
 
2493
- #: includes/forms/form-comment.php:166 includes/forms/form-post.php:303
2494
  #: pro/admin/admin-options-page.php:308
2495
  msgid "Edit field group"
2496
  msgstr "ویرایش گروه زمینه"
@@ -2499,8 +2691,8 @@ msgstr "ویرایش گروه زمینه"
2499
  msgid "Validate Email"
2500
  msgstr "اعتبار سنجی ایمیل"
2501
 
2502
- #: includes/forms/form-front.php:103
2503
- #: pro/fields/class-acf-field-gallery.php:573 pro/options-page.php:81
2504
  msgid "Update"
2505
  msgstr "بروزرسانی"
2506
 
@@ -2512,44 +2704,6 @@ msgstr "نوشته بروز شد."
2512
  msgid "Spam Detected"
2513
  msgstr "اسپم تشخیص داده شد"
2514
 
2515
- #: includes/input.php:259
2516
- msgid "Expand Details"
2517
- msgstr "نمایش جزئیات"
2518
-
2519
- #: includes/input.php:260
2520
- msgid "Collapse Details"
2521
- msgstr "عدم نمایش جزئیات"
2522
-
2523
- #: includes/input.php:261
2524
- msgid "Validation successful"
2525
- msgstr "اعتبار سنجی موفق بود"
2526
-
2527
- #: includes/input.php:262 includes/validation.php:285
2528
- #: includes/validation.php:296
2529
- msgid "Validation failed"
2530
- msgstr "مشکل در اعتبار سنجی"
2531
-
2532
- #: includes/input.php:263
2533
- msgid "1 field requires attention"
2534
- msgstr "یکی از گزینه ها نیاز به بررسی دارد"
2535
-
2536
- #: includes/input.php:264
2537
- #, php-format
2538
- msgid "%d fields require attention"
2539
- msgstr "%d گزینه نیاز به بررسی دارد"
2540
-
2541
- #: includes/input.php:265
2542
- msgid "Restricted"
2543
- msgstr "ممنوع"
2544
-
2545
- #: includes/input.php:266
2546
- msgid "Are you sure?"
2547
- msgstr "اطمینان دارید؟"
2548
-
2549
- #: includes/input.php:270
2550
- msgid "Cancel"
2551
- msgstr "لغو"
2552
-
2553
  #: includes/locations.php:93 includes/locations/class-acf-location-post.php:27
2554
  msgid "Post"
2555
  msgstr "نوشته"
@@ -2562,6 +2716,14 @@ msgstr "برگه"
2562
  msgid "Forms"
2563
  msgstr "فرم ها"
2564
 
 
 
 
 
 
 
 
 
2565
  #: includes/locations/class-acf-location-attachment.php:27
2566
  msgid "Attachment"
2567
  msgstr "پیوست"
@@ -2632,23 +2794,23 @@ msgstr "پوسته پیش فرض"
2632
  msgid "Page Type"
2633
  msgstr "نوع برگه"
2634
 
2635
- #: includes/locations/class-acf-location-page-type.php:145
2636
  msgid "Front Page"
2637
  msgstr "برگه نخست"
2638
 
2639
- #: includes/locations/class-acf-location-page-type.php:146
2640
  msgid "Posts Page"
2641
  msgstr "برگه ی نوشته ها"
2642
 
2643
- #: includes/locations/class-acf-location-page-type.php:147
2644
  msgid "Top Level Page (no parent)"
2645
  msgstr "بالاترین سطح برگه(بدون والد)"
2646
 
2647
- #: includes/locations/class-acf-location-page-type.php:148
2648
  msgid "Parent Page (has children)"
2649
  msgstr "برگه مادر (دارای زیر مجموعه)"
2650
 
2651
- #: includes/locations/class-acf-location-page-type.php:149
2652
  msgid "Child Page (has parent)"
2653
  msgstr "برگه زیر مجموعه (دارای مادر)"
2654
 
@@ -2672,10 +2834,6 @@ msgstr "طبقه بندی نوشته"
2672
  msgid "Post Template"
2673
  msgstr "قالب نوشته"
2674
 
2675
- #: includes/locations/class-acf-location-taxonomy.php:27
2676
- msgid "Taxonomy Term"
2677
- msgstr "آیتم طبقه بندی"
2678
-
2679
  #: includes/locations/class-acf-location-user-form.php:27
2680
  msgid "User Form"
2681
  msgstr "فرم کاربر"
@@ -2696,16 +2854,6 @@ msgstr "نقش کاربر"
2696
  msgid "Widget"
2697
  msgstr "ابزارک"
2698
 
2699
- #: includes/media.php:55
2700
- msgctxt "verb"
2701
- msgid "Edit"
2702
- msgstr "ویرایش"
2703
-
2704
- #: includes/media.php:56
2705
- msgctxt "verb"
2706
- msgid "Update"
2707
- msgstr "بروزرسانی"
2708
-
2709
  #: includes/validation.php:364
2710
  #, php-format
2711
  msgid "%s value is required"
@@ -2722,8 +2870,12 @@ msgstr "انتشار"
2722
 
2723
  #: pro/admin/admin-options-page.php:206
2724
  #, php-format
2725
- msgid "No Custom Field Groups found for this options page. <a href=\"%s\">Create a Custom Field Group</a>"
2726
- msgstr "هیچ گروه زمینه دلخواهی برای این صفحه تنظیمات یافت نشد. <a href=\"%s\">ساخت گروه زمینه دلخواه</a>"
 
 
 
 
2727
 
2728
  #: pro/admin/admin-settings-updates.php:78
2729
  msgid "<b>Error</b>. Could not connect to update server"
@@ -2748,8 +2900,13 @@ msgstr "اطلاعات لایسنس"
2748
 
2749
  #: pro/admin/views/html-settings-updates.php:20
2750
  #, php-format
2751
- msgid "To unlock updates, please enter your license key below. If you don't have a licence key, please see <a href=\"%s\" target=\"_blank\">details & pricing</a>."
2752
- msgstr "برای به روزرسانی لطفا کد لایسنس را وارد کنید. <a href=\"%s\" target=\"_blank\">قیمت ها</a>."
 
 
 
 
 
2753
 
2754
  #: pro/admin/views/html-settings-updates.php:29
2755
  msgid "License Key"
@@ -2792,263 +2949,258 @@ msgctxt "noun"
2792
  msgid "Clone"
2793
  msgstr "کپی (هیچ)"
2794
 
2795
- #: pro/fields/class-acf-field-clone.php:808
2796
  msgid "Select one or more fields you wish to clone"
2797
  msgstr "انتخاب فیلد دیگری برای کپی"
2798
 
2799
- #: pro/fields/class-acf-field-clone.php:825
2800
  msgid "Display"
2801
  msgstr "نمایش"
2802
 
2803
- #: pro/fields/class-acf-field-clone.php:826
2804
  msgid "Specify the style used to render the clone field"
2805
  msgstr "مشخص کردن استایل مورد نظر در نمایش دسته فیلدها"
2806
 
2807
- #: pro/fields/class-acf-field-clone.php:831
2808
  msgid "Group (displays selected fields in a group within this field)"
2809
  msgstr "گروه ها(نمایش فیلدهای انتخابی در یک گروه با این فیلد)"
2810
 
2811
- #: pro/fields/class-acf-field-clone.php:832
2812
  msgid "Seamless (replaces this field with selected fields)"
2813
  msgstr "بدون مانند (جایگزینی این فیلد با فیلدهای انتخابی)"
2814
 
2815
- #: pro/fields/class-acf-field-clone.php:853
2816
  #, php-format
2817
  msgid "Labels will be displayed as %s"
2818
  msgstr "برچسب ها نمایش داده شوند به صورت %s"
2819
 
2820
- #: pro/fields/class-acf-field-clone.php:856
2821
  msgid "Prefix Field Labels"
2822
  msgstr "پیشوند پرچسب فیلدها"
2823
 
2824
- #: pro/fields/class-acf-field-clone.php:867
2825
  #, php-format
2826
  msgid "Values will be saved as %s"
2827
  msgstr "مقادیر ذخیره خواهند شد به صورت %s"
2828
 
2829
- #: pro/fields/class-acf-field-clone.php:870
2830
  msgid "Prefix Field Names"
2831
  msgstr "پیشوند نام فایل ها"
2832
 
2833
- #: pro/fields/class-acf-field-clone.php:988
2834
  msgid "Unknown field"
2835
  msgstr "فیلد ناشناس"
2836
 
2837
- #: pro/fields/class-acf-field-clone.php:1027
2838
  msgid "Unknown field group"
2839
  msgstr "گروه ناشناس"
2840
 
2841
- #: pro/fields/class-acf-field-clone.php:1031
2842
  #, php-format
2843
  msgid "All fields from %s field group"
2844
  msgstr "تمام فیلدها از %s گروه فیلد"
2845
 
2846
  #: pro/fields/class-acf-field-flexible-content.php:31
2847
- #: pro/fields/class-acf-field-repeater.php:174
2848
- #: pro/fields/class-acf-field-repeater.php:470
2849
  msgid "Add Row"
2850
  msgstr "سطر جدید"
2851
 
2852
- #: pro/fields/class-acf-field-flexible-content.php:34
 
 
 
2853
  msgid "layout"
2854
- msgstr "طرح"
 
2855
 
2856
- #: pro/fields/class-acf-field-flexible-content.php:35
2857
  msgid "layouts"
2858
  msgstr "طرح ها"
2859
 
2860
- #: pro/fields/class-acf-field-flexible-content.php:36
2861
- msgid "remove {layout}?"
2862
- msgstr "حذف {layout} ؟"
2863
-
2864
- #: pro/fields/class-acf-field-flexible-content.php:37
2865
- msgid "This field requires at least {min} {identifier}"
2866
- msgstr "این زمینه نیازدارد به {min} {identifier}"
2867
-
2868
- #: pro/fields/class-acf-field-flexible-content.php:38
2869
- msgid "This field has a limit of {max} {identifier}"
2870
- msgstr "این زمینه محدود است به {max} {identifier}"
2871
-
2872
- #: pro/fields/class-acf-field-flexible-content.php:39
2873
  msgid "This field requires at least {min} {label} {identifier}"
2874
  msgstr "این زمینه لازم دارد {min} {label} {identifier}"
2875
 
2876
- #: pro/fields/class-acf-field-flexible-content.php:40
2877
- msgid "Maximum {label} limit reached ({max} {identifier})"
2878
- msgstr "حداکثر {label} پرشده است ({max} {identifier})"
2879
 
2880
- #: pro/fields/class-acf-field-flexible-content.php:41
2881
  msgid "{available} {label} {identifier} available (max {max})"
2882
  msgstr "{available} {label} {identifier} موجود است (حداکثر {max})"
2883
 
2884
- #: pro/fields/class-acf-field-flexible-content.php:42
2885
  msgid "{required} {label} {identifier} required (min {min})"
2886
  msgstr "{required} {label} {identifier} لازم دارد (حداقل {min})"
2887
 
2888
- #: pro/fields/class-acf-field-flexible-content.php:43
2889
  msgid "Flexible Content requires at least 1 layout"
2890
  msgstr "زمینه محتوای انعطاف پذیر حداقل به یک طرح نیاز دارد"
2891
 
2892
- #: pro/fields/class-acf-field-flexible-content.php:273
2893
  #, php-format
2894
  msgid "Click the \"%s\" button below to start creating your layout"
2895
  msgstr "روی دکمه \"%s\" دز زیر کلیک کنید تا چیدمان خود را بسازید"
2896
 
2897
- #: pro/fields/class-acf-field-flexible-content.php:406
2898
  msgid "Add layout"
2899
  msgstr "طرح جدید"
2900
 
2901
- #: pro/fields/class-acf-field-flexible-content.php:407
2902
  msgid "Remove layout"
2903
  msgstr "حذف طرح"
2904
 
2905
- #: pro/fields/class-acf-field-flexible-content.php:408
2906
- #: pro/fields/class-acf-field-repeater.php:298
2907
  msgid "Click to toggle"
2908
  msgstr "کلیک برای انتخاب"
2909
 
2910
- #: pro/fields/class-acf-field-flexible-content.php:556
2911
  msgid "Reorder Layout"
2912
  msgstr "ترتیب بندی طرح ها"
2913
 
2914
- #: pro/fields/class-acf-field-flexible-content.php:556
2915
  msgid "Reorder"
2916
  msgstr "مرتب سازی"
2917
 
2918
- #: pro/fields/class-acf-field-flexible-content.php:557
2919
  msgid "Delete Layout"
2920
  msgstr "حذف طرح"
2921
 
2922
- #: pro/fields/class-acf-field-flexible-content.php:558
2923
  msgid "Duplicate Layout"
2924
  msgstr "تکثیر طرح"
2925
 
2926
- #: pro/fields/class-acf-field-flexible-content.php:559
2927
  msgid "Add New Layout"
2928
  msgstr "افزودن طرح جدید"
2929
 
2930
- #: pro/fields/class-acf-field-flexible-content.php:630
2931
  msgid "Min"
2932
  msgstr "حداقل"
2933
 
2934
- #: pro/fields/class-acf-field-flexible-content.php:643
2935
  msgid "Max"
2936
  msgstr "حداکثر"
2937
 
2938
- #: pro/fields/class-acf-field-flexible-content.php:670
2939
- #: pro/fields/class-acf-field-repeater.php:466
2940
  msgid "Button Label"
2941
  msgstr "متن دکمه"
2942
 
2943
- #: pro/fields/class-acf-field-flexible-content.php:679
2944
  msgid "Minimum Layouts"
2945
  msgstr "حداقل تعداد طرح ها"
2946
 
2947
- #: pro/fields/class-acf-field-flexible-content.php:688
2948
  msgid "Maximum Layouts"
2949
  msgstr "حداکثر تعداد طرح ها"
2950
 
2951
- #: pro/fields/class-acf-field-gallery.php:41
2952
  msgid "Add Image to Gallery"
2953
  msgstr "افزودن تصویر به گالری"
2954
 
2955
- #: pro/fields/class-acf-field-gallery.php:45
2956
  msgid "Maximum selection reached"
2957
  msgstr "بیشترین حد انتخاب شده است"
2958
 
2959
- #: pro/fields/class-acf-field-gallery.php:321
2960
  msgid "Length"
2961
  msgstr "طول"
2962
 
2963
- #: pro/fields/class-acf-field-gallery.php:364
2964
  msgid "Caption"
2965
  msgstr "متن"
2966
 
2967
- #: pro/fields/class-acf-field-gallery.php:373
2968
  msgid "Alt Text"
2969
  msgstr "متن جایگزین"
2970
 
2971
- #: pro/fields/class-acf-field-gallery.php:544
2972
  msgid "Add to gallery"
2973
  msgstr "اضافه به گالری"
2974
 
2975
- #: pro/fields/class-acf-field-gallery.php:548
2976
  msgid "Bulk actions"
2977
  msgstr "کارهای گروهی"
2978
 
2979
- #: pro/fields/class-acf-field-gallery.php:549
2980
  msgid "Sort by date uploaded"
2981
  msgstr "به ترتیب تاریخ آپلود"
2982
 
2983
- #: pro/fields/class-acf-field-gallery.php:550
2984
  msgid "Sort by date modified"
2985
  msgstr "به ترتیب تاریخ اعمال تغییرات"
2986
 
2987
- #: pro/fields/class-acf-field-gallery.php:551
2988
  msgid "Sort by title"
2989
  msgstr "به ترتیب عنوان"
2990
 
2991
- #: pro/fields/class-acf-field-gallery.php:552
2992
  msgid "Reverse current order"
2993
  msgstr "معکوس سازی ترتیب کنونی"
2994
 
2995
- #: pro/fields/class-acf-field-gallery.php:570
2996
  msgid "Close"
2997
  msgstr "بستن"
2998
 
2999
- #: pro/fields/class-acf-field-gallery.php:624
3000
  msgid "Minimum Selection"
3001
  msgstr "حداقل انتخاب"
3002
 
3003
- #: pro/fields/class-acf-field-gallery.php:633
3004
  msgid "Maximum Selection"
3005
  msgstr "حداکثر انتخاب"
3006
 
3007
- #: pro/fields/class-acf-field-gallery.php:642
3008
  msgid "Insert"
3009
  msgstr "درج"
3010
 
3011
- #: pro/fields/class-acf-field-gallery.php:643
3012
  msgid "Specify where new attachments are added"
3013
  msgstr "مشخص کنید که پیوست ها کجا اضافه شوند"
3014
 
3015
- #: pro/fields/class-acf-field-gallery.php:647
3016
  msgid "Append to the end"
3017
  msgstr "افزودن به انتها"
3018
 
3019
- #: pro/fields/class-acf-field-gallery.php:648
3020
  msgid "Prepend to the beginning"
3021
  msgstr "افزودن قبل از"
3022
 
3023
- #: pro/fields/class-acf-field-repeater.php:36
 
3024
  msgid "Minimum rows reached ({min} rows)"
3025
  msgstr "مقادیر به حداکثر رسیده اند ( {min} سطر )"
3026
 
3027
- #: pro/fields/class-acf-field-repeater.php:37
3028
  msgid "Maximum rows reached ({max} rows)"
3029
  msgstr "مقادیر به حداکثر رسیده اند ( {max} سطر )"
3030
 
3031
- #: pro/fields/class-acf-field-repeater.php:343
3032
  msgid "Add row"
3033
  msgstr "افزودن سطر"
3034
 
3035
- #: pro/fields/class-acf-field-repeater.php:344
3036
  msgid "Remove row"
3037
  msgstr "حذف سطر"
3038
 
3039
- #: pro/fields/class-acf-field-repeater.php:419
3040
  msgid "Collapsed"
3041
  msgstr "جمع شده"
3042
 
3043
- #: pro/fields/class-acf-field-repeater.php:420
3044
  msgid "Select a sub field to show when row is collapsed"
3045
  msgstr "یک زمینه زیرمجموعه را انتخاب کنید تا زمان بسته شدن طر نمایش داده شود"
3046
 
3047
- #: pro/fields/class-acf-field-repeater.php:430
3048
  msgid "Minimum Rows"
3049
  msgstr "حداقل تعداد سطرها"
3050
 
3051
- #: pro/fields/class-acf-field-repeater.php:440
3052
  msgid "Maximum Rows"
3053
  msgstr "حداکثر تعداد سطرها"
3054
 
@@ -3066,8 +3218,13 @@ msgstr "تنظیمات به روز شدند"
3066
 
3067
  #: pro/updates.php:97
3068
  #, php-format
3069
- msgid "To enable updates, please enter your license key on the <a href=\"%s\">Updates</a> page. If you don't have a licence key, please see <a href=\"%s\">details & pricing</a>."
3070
- msgstr "برای به روزرسانی لطفا کد لایسنس را وارد کنید. <a href=\"%s\">بروزرسانی</a>. <a href=\"%s\">قیمت ها</a>"
 
 
 
 
 
3071
 
3072
  #. Plugin URI of the plugin/theme
3073
  msgid "https://www.advancedcustomfields.com/"
@@ -3081,23 +3238,76 @@ msgstr "Elliot Condon"
3081
  msgid "http://www.elliotcondon.com/"
3082
  msgstr "http://www.elliotcondon.com/"
3083
 
3084
- #~ msgid "Allow this accordion to open without closing others. "
3085
- #~ msgstr "اجاره به آکاردئون برای باز شدن بدون بستن دیگران"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3086
 
3087
- #~ msgid "The tab field will display incorrectly when added to a Table style repeater field or flexible content field layout"
3088
- #~ msgstr "زمینه تب در زمانی که در آن زمینه تکرارشونده و یا زمینه محتوای انعطاف پذیر به کار ببرید درست نمایش داده نخواهد شد"
3089
 
3090
- #~ msgid "Use \"Tab Fields\" to better organize your edit screen by grouping fields together."
3091
- #~ msgstr "از (زمینه تب) برای سازماندهی بهتر صفحه ویرایش با گروه بندی زمینه ها زیر تب ها استفاده کنید. "
3092
 
3093
- #~ msgid "All fields following this \"tab field\" (or until another \"tab field\" is defined) will be grouped together using this field's label as the tab heading."
3094
- #~ msgstr "همه زمینه های زیر این \" زمینه تب \" (یا تا زمینه تب بعدی) با هم گروه بندی می شوند و برچسب زمینه در تب به نمایش در خواهد آمد"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3095
 
3096
  #~ msgid "End-point"
3097
  #~ msgstr "نقطه پایانی"
3098
 
3099
  #~ msgid "Use this field as an end-point and start a new group of tabs"
3100
- #~ msgstr "استفاده از این زمینه به عنوان نقطه پایانی و شروع یک گروه جدید از تب ها"
 
3101
 
3102
  #~ msgid "Disabled"
3103
  #~ msgstr "غیرفعال"
@@ -3166,8 +3376,12 @@ msgstr "http://www.elliotcondon.com/"
3166
  #~ msgid "<b>Success</b>. Import tool added %s field groups: %s"
3167
  #~ msgstr "<b>انجام شد</b> ابزار وارد سازی %s زمینه را وارد کرد: %s"
3168
 
3169
- #~ msgid "<b>Warning</b>. Import tool detected %s field groups already exist and have been ignored: %s"
3170
- #~ msgstr "<b>اخطار</b> ابزار وارد سازی تشخصی داد که گروه زمینه %s اکنون موجود می باشد و %s نادیده گرفته شد"
 
 
 
 
3171
 
3172
  #~ msgid "Upgrade ACF"
3173
  #~ msgstr "بروزرسانی "
@@ -3178,8 +3392,12 @@ msgstr "http://www.elliotcondon.com/"
3178
  #~ msgid "Drag and drop to reorder"
3179
  #~ msgstr "با گرفتن و کشیدن مرتب سازی کنید"
3180
 
3181
- #~ msgid "The following sites require a DB upgrade. Check the ones you want to update and then click “Upgrade Database”."
3182
- #~ msgstr "سایت‌های زیر نیاز به به‌روزرسانی دیتابیس دارند. آن‌هایی که تمایل دارید را انتخاب کنید و دکمه به روزرسانی را کلیک کنید."
 
 
 
 
3183
 
3184
  #~ msgid "Upgrading data to"
3185
  #~ msgstr "به روزرسانی داده ها به"
@@ -3223,16 +3441,27 @@ msgstr "http://www.elliotcondon.com/"
3223
  #~ msgid "License"
3224
  #~ msgstr "لایسنس"
3225
 
3226
- #~ msgid "To unlock updates, please enter your license key below. If you don't have a licence key, please see"
3227
- #~ msgstr "برای به روزرسانی لطفا لایسنس خود را وارد کنید. اگر لایسنس ندارید اینجا را ببنید:"
 
 
 
 
3228
 
3229
  #~ msgid "details & pricing"
3230
  #~ msgstr "جزئیات و قیمت"
3231
 
3232
- #~ msgid "To enable updates, please enter your license key on the <a href=\"%s\">Updates</a> page. If you don't have a licence key, please see <a href=\"%s\">details & pricing</a>"
3233
- #~ msgstr "برای به روز رسانی لایسنس خود را در قسمت <a href=\"%s\">به روزرسانی ها</a> وارد کنید. اگر لایسنس ندارید اینجا را ببینید: <a href=\"%s\">جزئیات ئ قیمت</a>"
3234
-
3235
- #~ msgid "Please note that all text will first be passed through the wp function "
 
 
 
 
 
 
 
3236
  #~ msgstr "دقت کنید که نکاک متن ها اول از تابع وردپرس عبور خواهند کرد"
3237
 
3238
  #~ msgid "Warning"
@@ -3248,7 +3477,9 @@ msgstr "http://www.elliotcondon.com/"
3248
  #~ msgstr "درون ریزی/برون بری"
3249
 
3250
  #~ msgid "Field groups are created in order from lowest to highest"
3251
- #~ msgstr "گروه های زمینه به ترتیب از کوچکترین شماره تا بزرگترین شماره نمایش داده می شوند"
 
 
3252
 
3253
  #~ msgid "Upgrading data to "
3254
  #~ msgstr "به روز رسانی داده ها به %s"
@@ -3277,10 +3508,16 @@ msgstr "http://www.elliotcondon.com/"
3277
  #~ msgid "ACF PRO Required"
3278
  #~ msgstr "نسخه حرفه ای لازم است"
3279
 
3280
- #~ msgid "We have detected an issue which requires your attention: This website makes use of premium add-ons (%s) which are no longer compatible with ACF."
3281
- #~ msgstr "مشکلی مشاهده شده است که نیاز به توجه شما دارد. این وب سایت مجاز به استفاده از افزودنی های پولی (%s) می باشد که دیگر سازگار نیستند"
 
 
 
 
3282
 
3283
- #~ msgid "Don't panic, you can simply roll back the plugin and continue using ACF as you know it!"
 
 
3284
  #~ msgstr "مشکلی نیست. شما می توانید به نسخه ای که به آن عادت دارید برگردید!"
3285
 
3286
  #~ msgid "Roll back to ACF v%s"
@@ -3306,8 +3543,11 @@ msgstr "http://www.elliotcondon.com/"
3306
  #~ msgid "Load & Save Terms to Post"
3307
  #~ msgstr "خواندن و ذخیره دسته(ترم)ها برای نوشته"
3308
 
3309
- #~ msgid "Load value based on the post's terms and update the post's terms on save"
3310
- #~ msgstr "مقدار بر اساس دسته(ترم) نوشته خوانده شود و دسته های نوشته را در هنگام ذخیره به روز رسانی کند"
 
 
 
3311
 
3312
  #~ msgid "Controls how HTML tags are rendered"
3313
  #~ msgstr "کنترل چگونگی نمایش تگ های HTML"
@@ -3376,8 +3616,10 @@ msgstr "http://www.elliotcondon.com/"
3376
  #~ msgid "No ACF groups selected"
3377
  #~ msgstr "هیچ گروه زمینه دلخواه پیشرفته ای انتخاب نشده است."
3378
 
3379
- #~ msgid "Create infinite rows of repeatable data with this versatile interface!"
3380
- #~ msgstr "ایجاد بی نهایت سطر از داده های تکرار شونده به وسیله این زمینه چند منظوره!"
 
 
3381
 
3382
  #~ msgid "Create image galleries in a simple and intuitive interface!"
3383
  #~ msgstr "ایجاد گالری های تصاویر در یک رابط کاربری ساده و دیداری!"
@@ -3392,7 +3634,9 @@ msgstr "http://www.elliotcondon.com/"
3392
  #~ msgstr "زمینه افزونه GravityForms"
3393
 
3394
  #~ msgid "Creates a select field populated with Gravity Forms!"
3395
- #~ msgstr "زمینه جدید از نوع انتخاب می سازد که می توانید یکی از فرم های GravityForms که ساخته اید را از آن انتخاب کنید"
 
 
3396
 
3397
  #~ msgid "Date & Time Picker"
3398
  #~ msgstr "تاریخ و زمان"
@@ -3412,11 +3656,19 @@ msgstr "http://www.elliotcondon.com/"
3412
  #~ msgid "Advanced Custom Fields Add-Ons"
3413
  #~ msgstr "افزودنی های افزونه زمینه های دلخواه پیشرفته"
3414
 
3415
- #~ msgid "The following Add-ons are available to increase the functionality of the Advanced Custom Fields plugin."
3416
- #~ msgstr "افزودنی های زیر برای افزایش قابلیت های افزونه زمینه های دلخواه پیشرفته قابل استفاده هستند."
 
 
 
 
3417
 
3418
- #~ msgid "Each Add-on can be installed as a separate plugin (receives updates) or included in your theme (does not receive updates)."
3419
- #~ msgstr "هر افزودنی می تواند به عنوان یک افزونه جدا ( قابل بروزرسانی) نصب شود و یا در پوسته شما (غیرقابل بروزرسانی) قرار گیرد."
 
 
 
 
3420
 
3421
  #~ msgid "Purchase & Install"
3422
  #~ msgstr "خرید و نصب"
@@ -3430,14 +3682,25 @@ msgstr "http://www.elliotcondon.com/"
3430
  #~ msgid "Export to PHP"
3431
  #~ msgstr "برون بری به فرمت PHP"
3432
 
3433
- #~ msgid "ACF will create a .xml export file which is compatible with the native WP import plugin."
3434
- #~ msgstr "افزونه زمینه های دلخواه پیشرفته یک پرونده خروجی (.xml) را ایجاد خواهد کرد که با افزونه Wordpress Importer سازگار است."
3435
-
3436
- #~ msgid "Imported field groups <b>will</b> appear in the list of editable field groups. This is useful for migrating fields groups between Wp websites."
3437
- #~ msgstr "گروه های زمینه درون ریزی شده در لیست گروه های زمینه قابل ویرایش نمایش داده <b>خواهند شد</b>. این روش برای انتقال گروه های زمینه در بین سایت های وردپرسی مفید است."
 
 
 
 
 
 
 
 
 
3438
 
3439
  #~ msgid "Select field group(s) from the list and click \"Export XML\""
3440
- #~ msgstr "گروه زمینه را از لیست انتخاب کنید و سپس روی دکمه ((برون بری به فرمت XML)) کلیک کنید"
 
 
3441
 
3442
  #~ msgid "Save the .xml file when prompted"
3443
  #~ msgstr "فایل .xml را وقتی آماده شد، ذخیره کنید"
@@ -3458,16 +3721,33 @@ msgstr "http://www.elliotcondon.com/"
3458
  #~ msgstr "همین ! از وردپرس لذت ببرید"
3459
 
3460
  #~ msgid "ACF will create the PHP code to include in your theme."
3461
- #~ msgstr "افزونه زمینه های دلخواه پیشرفته کد های PHP برای اضافه کردن در پوسته در اختیاران قرار می دهد"
3462
-
3463
- #~ msgid "Registered field groups <b>will not</b> appear in the list of editable field groups. This is useful for including fields in themes."
3464
- #~ msgstr "گروه های زمینه ساخته خواهند شد ولی قابل ویرایش <b>نخواهند بود</b>.یعنی در لیست افزونه برای ویرایش دیده نمی شوند. این روش برای قرار دادن زمینه ها در پوسته ها (برای مشتری) مفید است."
3465
-
3466
- #~ msgid "Please note that if you export and register field groups within the same WP, you will see duplicate fields on your edit screens. To fix this, please move the original field group to the trash or remove the code from your functions.php file."
3467
- #~ msgstr "لطفا توجه کنید که اگر از هر دو روش ذکر شما در یک وردپرس به صورت هم زمان استفاده کنید، در صفحه ویرایش مطالب، دو بار زمینه ها را خواهید دید. واضح است که برای حل این مشکل یا باید زمینه ها را از افزونه حذف کنید یا کدهای php را از پوسته و احتمالا functions.php حذف کنید."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3468
 
3469
  #~ msgid "Select field group(s) from the list and click \"Create PHP\""
3470
- #~ msgstr "گروه های زمینه را از لیست انتخاب کنید و سپس روی دکمه ((برون بری به فرمت PHP)) کلیک کنید"
 
 
3471
 
3472
  #~ msgid "Copy the PHP code generated"
3473
  #~ msgstr "کدهای PHP تولید شده را کپی کنید"
@@ -3475,7 +3755,8 @@ msgstr "http://www.elliotcondon.com/"
3475
  #~ msgid "Paste into your functions.php file"
3476
  #~ msgstr "در فایل functions.php پوسته خود قرار دهید"
3477
 
3478
- #~ msgid "To activate any Add-ons, edit and use the code in the first few lines."
 
3479
  #~ msgstr "برای فعالسازی افزودنی ها،چند سطر اول کدها را ویرایش و استفاده کنید"
3480
 
3481
  #~ msgid "Notes"
@@ -3484,11 +3765,24 @@ msgstr "http://www.elliotcondon.com/"
3484
  #~ msgid "Include in theme"
3485
  #~ msgstr "قرار دادن در پوسته"
3486
 
3487
- #~ msgid "The Advanced Custom Fields plugin can be included within a theme. To do so, move the ACF plugin inside your theme and add the following code to your functions.php file:"
3488
- #~ msgstr "افزونه زمینه های دلخواه پیشرفته وردپرس می تواند در داخل یک پوسته قرار بگیرد. برای انجام این کار، افزونه را به کنار پوسته تان انتقال دهید و کدهای زیر را به پرونده functions.php اضافه کنید:"
3489
-
3490
- #~ msgid "To remove all visual interfaces from the ACF plugin, you can use a constant to enable lite mode. Add the following code to your functions.php file <b>before</b> the include_once code:"
3491
- #~ msgstr "برای حذف همه رابط های بصری از افزونه زمینه های دلخواه پیشرفته (دیده نشدن افزونه)، می توانید از یک ثابت (کانستنت) برای فعال سازی حالت سبک (lite) استفاده کنید. کد زیر را به پرونده functions.php خود <b>قبل از</b> تابع include_once اضافه کنید:"
 
 
 
 
 
 
 
 
 
 
 
 
 
3492
 
3493
  #~ msgid "Back to export"
3494
  #~ msgstr "بازگشت به برون بری"
@@ -3499,8 +3793,14 @@ msgstr "http://www.elliotcondon.com/"
3499
  #~ msgid "Activation codes have grown into plugins!"
3500
  #~ msgstr "کدهای فعالسازی در افزونه ها افزایش یافته اند!"
3501
 
3502
- #~ msgid "Add-ons are now activated by downloading and installing individual plugins. Although these plugins will not be hosted on the wordpress.org repository, each Add-on will continue to receive updates in the usual way."
3503
- #~ msgstr "افزودنی ها الان با دریافت و نصب افزونه های جداگانه فعال می شوند. با اینکه این افزونه ها در مخزن وردپرس پشتیبانی نخواهند شد، هر افزودنی به صورت معمول به روز رسانی را دریافت خواهد کرد."
 
 
 
 
 
 
3504
 
3505
  #~ msgid "All previous Add-ons have been successfully installed"
3506
  #~ msgstr "تمام افزونه های قبلی با موفقیت نصب شده اند"
@@ -3511,8 +3811,12 @@ msgstr "http://www.elliotcondon.com/"
3511
  #~ msgid "Download your activated Add-ons"
3512
  #~ msgstr "افزودنی های فعال شده ی خود را دانلود کنید"
3513
 
3514
- #~ msgid "This website does not use premium Add-ons and will not be affected by this change."
3515
- #~ msgstr "این سایت از افزودنی های ویژه استفاده نمی کند و تحت تأثیر این تغییر قرار نخواهد گرفت"
 
 
 
 
3516
 
3517
  #~ msgid "Easier Development"
3518
  #~ msgstr "توسعه آسانتر"
@@ -3529,11 +3833,16 @@ msgstr "http://www.elliotcondon.com/"
3529
  #~ msgid "Password Field"
3530
  #~ msgstr "زمینه رمزعبور"
3531
 
3532
- #~ msgid "Creating your own field type has never been easier! Unfortunately, version 3 field types are not compatible with version 4."
3533
- #~ msgstr "ساخت نوع زمینه دلخواه برای خودتان هرگز به این آسانی نبوده! متأسفانه، انواع زمینه های نسخه 3 با نسخه 4 سازگار نیستند."
 
 
 
 
3534
 
3535
  #~ msgid "Migrating your field types is easy, please"
3536
- #~ msgstr "انتقال انواع زمینه ها آسان است. پس لطفا افزونه خود را بروزرسانی کنید."
 
3537
 
3538
  #~ msgid "follow this tutorial"
3539
  #~ msgstr "این آموزش را دنبال کنید"
@@ -3544,8 +3853,12 @@ msgstr "http://www.elliotcondon.com/"
3544
  #~ msgid "Actions &amp; Filters"
3545
  #~ msgstr "اکشن ها و فیلترها"
3546
 
3547
- #~ msgid "All actions & filters have received a major facelift to make customizing ACF even easier! Please"
3548
- #~ msgstr "همه اکشن ها و فیلترها دارای تغییرات عمده ای شدند تا دلخواه سازی ACF از قبل آسانتر شود"
 
 
 
 
3549
 
3550
  #~ msgid "read this guide"
3551
  #~ msgstr "لطفا راهنما را مطالعه فرمایید"
@@ -3565,14 +3878,25 @@ msgstr "http://www.elliotcondon.com/"
3565
  #~ msgid "Database Changes"
3566
  #~ msgstr "تغییرات پایگاه داده"
3567
 
3568
- #~ msgid "Absolutely <strong>no</strong> changes have been made to the database between versions 3 and 4. This means you can roll back to version 3 without any issues."
3569
- #~ msgstr "<strong>هیچ تغییری</strong> در پایگاه داده بین نسخه 3 و 4 ایجاد نشده است. این بدین معنی است که شما می توانید بدون هیچ گونه مسئله ای به نسخه 3 برگردید."
 
 
 
 
 
 
3570
 
3571
  #~ msgid "Potential Issues"
3572
  #~ msgstr "مسائل بالقوه"
3573
 
3574
- #~ msgid "Do to the sizable changes surounding Add-ons, field types and action/filters, your website may not operate correctly. It is important that you read the full"
3575
- #~ msgstr "با توجه به تغییرات افزودنی ها، انواع زمینه ها و اکشن ها/فیلترها، ممکن است سایت شما به درستی عمل نکند. پس لازم است راهنمای کامل "
 
 
 
 
 
3576
 
3577
  #~ msgid "Migrating from v3 to v4"
3578
  #~ msgstr "مهاجرت از نسخه 3 به نسخه 4 را مطالعه کنید"
@@ -3583,8 +3907,12 @@ msgstr "http://www.elliotcondon.com/"
3583
  #~ msgid "Really Important!"
3584
  #~ msgstr "واقعا مهم!"
3585
 
3586
- #~ msgid "If you updated the ACF plugin without prior knowledge of such changes, please roll back to the latest"
3587
- #~ msgstr "اگر شما افزونه زمینه های دلخواه پیشرفته وردپرس را بدون آگاهی از آخرین تغییرات بروزرسانی کردید، لطفا به نسخه قبل برگردید "
 
 
 
 
3588
 
3589
  #~ msgid "version 3"
3590
  #~ msgstr "نسخه 3"
@@ -3595,8 +3923,13 @@ msgstr "http://www.elliotcondon.com/"
3595
  #~ msgid "Thank You"
3596
  #~ msgstr "از شما متشکرم"
3597
 
3598
- #~ msgid "A <strong>BIG</strong> thank you to everyone who has helped test the version 4 beta and for all the support I have received."
3599
- #~ msgstr "یک <strong>تشکر بزرگ</strong> از شما و همه کسانی که در تست نسخه 4 بتا به من کمک کردند میکنم. برای تمام کمک ها و پشتیبانی هایی که دریافت کردم نیز از همه شما متشکرم."
 
 
 
 
 
3600
 
3601
  #~ msgid "Without you all, this release would not have been possible!"
3602
  #~ msgstr "بدون همه شما انتشار این نسخه امکان پذیر نبود!"
@@ -3610,16 +3943,25 @@ msgstr "http://www.elliotcondon.com/"
3610
  #~ msgid "Overview"
3611
  #~ msgstr "بازنگری"
3612
 
3613
- #~ msgid "Previously, all Add-ons were unlocked via an activation code (purchased from the ACF Add-ons store). New to v4, all Add-ons act as separate plugins which need to be individually downloaded, installed and updated."
3614
- #~ msgstr "پیش از این، قفل همه افزودنی ها از طریق یک کد فعالسازی (خریداری شده از فروشگاه افزودنی ها) باز می شدند.اما در نسخه 4 همه آنها به صورت افزودنی های جداگانه هستند و باید به صورت جدا دریافت، نصب و بروزرسانی شوند."
3615
-
3616
- #~ msgid "This page will assist you in downloading and installing each available Add-on."
 
 
 
 
 
 
 
 
3617
  #~ msgstr "این برگه به شما در دریافت و نصب هر افزودنی موجود کمک خواهد کرد."
3618
 
3619
  #~ msgid "Available Add-ons"
3620
  #~ msgstr "افزودنی های موجود"
3621
 
3622
- #~ msgid "The following Add-ons have been detected as activated on this website."
 
3623
  #~ msgstr "افزودنی های زیر به صورت فعال در این سایت شناسایی شده اند"
3624
 
3625
  #~ msgid "Installation"
@@ -3637,11 +3979,18 @@ msgstr "http://www.elliotcondon.com/"
3637
  #~ msgid "Plugins > Add New > Upload"
3638
  #~ msgstr "افزونه ها > افزودن > بارگذاری"
3639
 
3640
- #~ msgid "Use the uploader to browse, select and install your Add-on (.zip file)"
3641
- #~ msgstr "از بارگذار برای انتخاب فایل استفاده کنید. افزودنی خود را (پرونده ZIP) انتخاب و نصب نمایید"
 
 
 
3642
 
3643
- #~ msgid "Once the plugin has been uploaded and installed, click the 'Activate Plugin' link"
3644
- #~ msgstr "هنگامی که یک افزونه دریافت و نصب شده است، روی لینک (( فعال کردن افزونه)) کلیک کنید"
 
 
 
 
3645
 
3646
  #~ msgid "The Add-on is now installed and activated!"
3647
  #~ msgstr "افزودنی در حال حاضر نصب و فعال سازی شده است!"
@@ -3677,7 +4026,8 @@ msgstr "http://www.elliotcondon.com/"
3677
  #~ msgstr "آبجکت تصویر"
3678
 
3679
  #~ msgid "Text &amp; HTML entered here will appear inline with the fields"
3680
- #~ msgstr "متن و کد HTML وارد شده در اینجا در خط همراه با زمینه نمایش داده خواهد شد"
 
3681
 
3682
  #~ msgid "Enter your choices one per line"
3683
  #~ msgstr "انتخاب ها را در هر خط وارد کنید"
@@ -3712,8 +4062,12 @@ msgstr "http://www.elliotcondon.com/"
3712
  #~ msgid "Save format"
3713
  #~ msgstr "فرمت ذخیره"
3714
 
3715
- #~ msgid "This format will determin the value saved to the database and returned via the API"
3716
- #~ msgstr "این فرمت مقدار ذخیره شده در پایگاه داده را مشخص خواهد کرد و از طریق API قابل خواندن است"
 
 
 
 
3717
 
3718
  #~ msgid "\"yymmdd\" is the most versatile save format. Read more about"
3719
  #~ msgstr "\"yymmdd\" بهترین و پر استفاده ترین فرمت ذخیره است. اطلاعات بیشتر"
@@ -3724,8 +4078,12 @@ msgstr "http://www.elliotcondon.com/"
3724
  #~ msgid "This format will be seen by the user when entering a value"
3725
  #~ msgstr "این فرمت توسط کاربر در هنگام وارد کردن یک مقدار دیده خواهد شد"
3726
 
3727
- #~ msgid "\"dd/mm/yy\" or \"mm/dd/yy\" are the most used Display Formats. Read more about"
3728
- #~ msgstr "\"dd/mm/yy\" یا \"mm/dd/yy\" پر استفاده ترین قالب های نمایش تاریخ می باشند. اطلاعات بیشتر"
 
 
 
 
3729
 
3730
  #~ msgid "Field Order"
3731
  #~ msgstr "ترتیب زمینه"
2
  msgstr ""
3
  "Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n"
4
  "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
5
+ "POT-Creation-Date: 2018-08-11 16:49+0430\n"
6
+ "PO-Revision-Date: 2018-08-11 16:50+0430\n"
7
  "Last-Translator: Elliot Condon <e@elliotcondon.com>\n"
8
  "Language-Team: Kamel Kimiaei Fard <Kamel.Kimiaei.Fard@gmail.com>\n"
9
  "Language: fa\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "Plural-Forms: nplurals=1; plural=0;\n"
14
+ "X-Generator: Poedit 1.8.11\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
17
+ "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
18
+ "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
19
  "X-Poedit-Basepath: ..\n"
20
  "X-Poedit-WPHeader: acf.php\n"
21
  "X-Textdomain-Support: yes\n"
22
  "X-Poedit-SearchPath-0: .\n"
23
  "X-Poedit-SearchPathExcluded-0: *.js\n"
24
 
25
+ #: acf.php:80
26
  msgid "Advanced Custom Fields"
27
  msgstr "زمینه‌های دلخواه پیشرفته"
28
 
29
+ #: acf.php:391 includes/admin/admin.php:117
30
  msgid "Field Groups"
31
  msgstr "گروه‌های زمینه"
32
 
33
+ #: acf.php:392
34
  msgid "Field Group"
35
  msgstr "گروه زمینه"
36
 
37
+ #: acf.php:393 acf.php:425 includes/admin/admin.php:118
38
+ #: pro/fields/class-acf-field-flexible-content.php:572
39
  msgid "Add New"
40
  msgstr "افزودن"
41
 
42
+ #: acf.php:394
43
  msgid "Add New Field Group"
44
  msgstr "افزودن گروه زمینه جدید"
45
 
46
+ #: acf.php:395
47
  msgid "Edit Field Group"
48
  msgstr "ویرایش گروه زمینه"
49
 
50
+ #: acf.php:396
51
  msgid "New Field Group"
52
  msgstr "گروه زمینه جدید"
53
 
54
+ #: acf.php:397
55
  msgid "View Field Group"
56
  msgstr "مشاهده گروه زمینه"
57
 
58
+ #: acf.php:398
59
  msgid "Search Field Groups"
60
  msgstr "جستجوی گروه های زمینه"
61
 
62
+ #: acf.php:399
63
  msgid "No Field Groups found"
64
  msgstr "گروه زمینه ای یافت نشد"
65
 
66
+ #: acf.php:400
67
  msgid "No Field Groups found in Trash"
68
  msgstr "گروه زمینه ای در زباله دان یافت نشد"
69
 
70
+ #: acf.php:423 includes/admin/admin-field-group.php:202
 
71
  #: includes/admin/admin-field-groups.php:510
72
+ #: pro/fields/class-acf-field-clone.php:811
73
  msgid "Fields"
74
  msgstr "زمینه ها"
75
 
76
+ #: acf.php:424
77
  msgid "Field"
78
  msgstr "زمینه"
79
 
80
+ #: acf.php:426
81
  msgid "Add New Field"
82
  msgstr "زمینه جدید"
83
 
84
+ #: acf.php:427
85
  msgid "Edit Field"
86
  msgstr "ویرایش زمینه"
87
 
88
+ #: acf.php:428 includes/admin/views/field-group-fields.php:41
89
  #: includes/admin/views/settings-info.php:105
90
  msgid "New Field"
91
  msgstr "زمینه جدید"
92
 
93
+ #: acf.php:429
94
  msgid "View Field"
95
  msgstr "نمایش زمینه"
96
 
97
+ #: acf.php:430
98
  msgid "Search Fields"
99
  msgstr "جستجوی گروه های زمینه"
100
 
101
+ #: acf.php:431
102
  msgid "No Fields found"
103
  msgstr "گروه زمینه ای یافت نشد"
104
 
105
+ #: acf.php:432
106
  msgid "No Fields found in Trash"
107
  msgstr "گروه زمینه ای در زباله دان یافت نشد"
108
 
109
+ #: acf.php:471 includes/admin/admin-field-group.php:384
110
  #: includes/admin/admin-field-groups.php:567
111
  msgid "Inactive"
112
  msgstr "غیرفعال"
113
 
114
+ #: acf.php:476
115
  #, php-format
116
  msgid "Inactive <span class=\"count\">(%s)</span>"
117
  msgid_plural "Inactive <span class=\"count\">(%s)</span>"
147
  msgid "Field group draft updated."
148
  msgstr "پیش نویش گروه زمینه بروز شد."
149
 
150
+ #: includes/admin/admin-field-group.php:153
151
+ msgid "The string \"field_\" may not be used at the start of a field name"
152
+ msgstr "کلمه متنی \"field_\" نباید در ابتدای نام فیلد استفاده شود."
153
 
154
+ #: includes/admin/admin-field-group.php:154
155
+ msgid "This field cannot be moved until its changes have been saved"
156
+ msgstr "این زمینه قبل از اینکه ذخیره شود نمی تواند جابجا شود"
157
+
158
+ #: includes/admin/admin-field-group.php:155
159
+ msgid "Field group title is required"
160
+ msgstr "عنوان گروه زمینه ضروری است"
161
 
162
+ #: includes/admin/admin-field-group.php:156
163
  msgid "Move to trash. Are you sure?"
164
  msgstr "انتقال به زباله دان، آیا شما مطمئنید؟"
165
 
166
+ #: includes/admin/admin-field-group.php:157
 
 
 
 
167
  msgid "No toggle fields available"
168
  msgstr "هیچ زمینه شرط پذیری موجود نیست"
169
 
170
+ #: includes/admin/admin-field-group.php:158
171
+ msgid "Move Custom Field"
172
+ msgstr "جابجایی زمینه دلخواه"
173
+
174
+ #: includes/admin/admin-field-group.php:159
175
+ msgid "Checked"
176
+ msgstr "انتخاب شده"
177
 
178
+ #: includes/admin/admin-field-group.php:160 includes/api/api-field.php:289
179
+ msgid "(no label)"
180
+ msgstr "(بدون برچسب)"
181
+
182
+ #: includes/admin/admin-field-group.php:161
183
+ msgid "(this field)"
184
+ msgstr "(این گزینه)"
185
+
186
+ #: includes/admin/admin-field-group.php:162
187
  #: includes/api/api-field-group.php:751
188
  msgid "copy"
189
  msgstr "کپی"
190
 
191
+ #: includes/admin/admin-field-group.php:163
192
+ #: includes/admin/views/field-group-field-conditional-logic.php:51
193
+ #: includes/admin/views/field-group-field-conditional-logic.php:151
194
  #: includes/admin/views/field-group-locations.php:29
195
  #: includes/admin/views/html-location-group.php:3
196
+ #: includes/api/api-helpers.php:4055
197
  msgid "or"
198
  msgstr "یا"
199
 
200
+ #: includes/admin/admin-field-group.php:164
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  msgid "Null"
202
  msgstr "خالی (null)"
203
 
204
+ #: includes/admin/admin-field-group.php:203
205
+ msgid "Location"
206
+ msgstr "مکان"
207
 
208
+ #: includes/admin/admin-field-group.php:204
209
+ #: includes/admin/tools/class-acf-admin-tool-export.php:295
210
+ msgid "Settings"
211
+ msgstr "تنظیمات"
212
 
213
+ #: includes/admin/admin-field-group.php:354
214
  msgid "Field Keys"
215
  msgstr "کایدهای زمینه"
216
 
217
+ #: includes/admin/admin-field-group.php:384
218
  #: includes/admin/views/field-group-options.php:9
219
  msgid "Active"
220
  msgstr "فعال"
221
 
222
+ #: includes/admin/admin-field-group.php:750
223
  msgid "Move Complete."
224
  msgstr "انتقال کامل شد."
225
 
226
+ #: includes/admin/admin-field-group.php:751
227
  #, php-format
228
  msgid "The %s field can now be found in the %s field group"
229
  msgstr "زمینه %s اکنون در گروه زمینه %s قرار گرفته است"
230
 
231
+ #: includes/admin/admin-field-group.php:752
232
  msgid "Close Window"
233
  msgstr "بستن زمینه"
234
 
235
+ #: includes/admin/admin-field-group.php:793
236
  msgid "Please select the destination for this field"
237
  msgstr "مقصد انتقال این زمینه را مشخص کنید"
238
 
239
+ #: includes/admin/admin-field-group.php:800
240
  msgid "Move Field"
241
  msgstr "جابجایی زمینه"
242
 
274
  msgstr "هماهنگ سازی موجود است"
275
 
276
  #: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38
277
+ #: pro/fields/class-acf-field-gallery.php:370
278
  msgid "Title"
279
  msgstr "عنوان"
280
 
282
  #: includes/admin/views/field-group-options.php:96
283
  #: includes/admin/views/install-network.php:21
284
  #: includes/admin/views/install-network.php:29
285
+ #: pro/fields/class-acf-field-gallery.php:397
286
  msgid "Description"
287
  msgstr "توضیحات"
288
 
337
 
338
  #: includes/admin/admin-field-groups.php:667
339
  #: includes/admin/admin-field-groups.php:683
340
+ #: includes/admin/views/field-group-field.php:46
341
+ #: pro/fields/class-acf-field-flexible-content.php:571
342
  msgid "Duplicate"
343
  msgstr "تکثیر"
344
 
345
  #: includes/admin/admin-field-groups.php:700
346
+ #: includes/fields/class-acf-field-google-map.php:164
347
+ #: includes/fields/class-acf-field-relationship.php:674
348
  msgid "Search"
349
  msgstr "جستجو"
350
 
376
  msgstr "ابزارها"
377
 
378
  #: includes/admin/admin.php:113
379
+ #: includes/admin/views/field-group-options.php:110
380
  msgid "Custom Fields"
381
  msgstr "زمینه های دلخواه"
382
 
393
  msgid "Error validating request"
394
  msgstr "خطا در اعتبار سنجی درخواست"
395
 
396
+ #: includes/admin/install.php:210 includes/admin/views/install.php:104
397
  msgid "No updates available."
398
  msgstr "به‌روزرسانی موجود نیست."
399
 
441
  msgstr "انتخاب گروه های زمینه"
442
 
443
  #: includes/admin/tools/class-acf-admin-tool-export.php:336
444
+ msgid ""
445
+ "Select the field groups you would like to export and then select your export "
446
+ "method. Use the download button to export to a .json file which you can then "
447
+ "import to another ACF installation. Use the generate button to export to PHP "
448
+ "code which you can place in your theme."
449
+ msgstr ""
450
+ "گروه زمینه هایی که مایل به تهیه خروجی آنها هستید را انتخاب کنید و در ادامه "
451
+ "روش خروجی را نیز مشخص کنید. از دکمه دانلود برای خروجی فایل .json برای وارد "
452
+ "کردن در یک سایت دیگر که این افزونه نصب شده است استفاده کنید. از دکمه تولید "
453
+ "می توانید برای ساخت کد PHP برای قراردادن در قالب خود استفاده کنید."
454
 
455
  #: includes/admin/tools/class-acf-admin-tool-export.php:341
456
  msgid "Export File"
457
  msgstr "خروجی فایل"
458
 
459
  #: includes/admin/tools/class-acf-admin-tool-export.php:414
460
+ msgid ""
461
+ "The following code can be used to register a local version of the selected "
462
+ "field group(s). A local field group can provide many benefits such as faster "
463
+ "load times, version control & dynamic fields/settings. Simply copy and paste "
464
+ "the following code to your theme's functions.php file or include it within "
465
+ "an external file."
466
+ msgstr ""
467
+ "این کد می تواند برای ثبت یک نسخه محلی (لوکال)از گروه زمینه های انتخاب شده "
468
+ "استفاده شود. یک نسخه محلی فواید زیادی دارد، مثلا سرعت لود بالاتر، کنترل نسخه "
469
+ "و پویاسازی زمینه ها و تنظیماتشان. به راحتی می توانید کد زیر را در فایل "
470
+ "function.php خود کپی کنید و یا از یک فایل دیگر انرا فراخوانی نمایید."
471
 
472
  #: includes/admin/tools/class-acf-admin-tool-export.php:446
473
  msgid "Copy to clipboard"
474
  msgstr "درج در حافظه موقت"
475
 
476
+ #: includes/admin/tools/class-acf-admin-tool-export.php:483
477
+ msgid "Copied"
478
+ msgstr "کپی شد"
479
+
480
  #: includes/admin/tools/class-acf-admin-tool-import.php:26
481
  msgid "Import Field Groups"
482
  msgstr "وارد کردن گروه های زمینه"
483
 
484
  #: includes/admin/tools/class-acf-admin-tool-import.php:61
485
+ msgid ""
486
+ "Select the Advanced Custom Fields JSON file you would like to import. When "
487
+ "you click the import button below, ACF will import the field groups."
488
+ msgstr ""
489
+ "فایل JSON ای که قبلا از این افزونه خروجی گرفته اید را انتخاب کنید تا وارد "
490
+ "شود. زمانی که دکمه وارد کردن را در زیر کلیک کنید، سیستم اقدام به ساخت گروه "
491
+ "های زمینه خواهد نمود"
492
 
493
  #: includes/admin/tools/class-acf-admin-tool-import.php:66
494
+ #: includes/fields/class-acf-field-file.php:57
495
  msgid "Select File"
496
  msgstr "انتخاب پرونده"
497
 
500
  msgstr "وارد کردن فایل"
501
 
502
  #: includes/admin/tools/class-acf-admin-tool-import.php:100
503
+ #: includes/fields/class-acf-field-file.php:170
504
  msgid "No file selected"
505
  msgstr "هیچ پرونده ای انتخاب نشده"
506
 
522
  msgid_plural "Imported %s field groups"
523
  msgstr[0] "تعداد %s گروه زمینه وارد شد"
524
 
525
+ #: includes/admin/views/field-group-field-conditional-logic.php:25
526
  msgid "Conditional Logic"
527
  msgstr "منطق شرطی"
528
 
529
+ #: includes/admin/views/field-group-field-conditional-logic.php:51
530
  msgid "Show this field if"
531
  msgstr "نمایش این گروه زمینه اگر"
532
 
533
+ #: includes/admin/views/field-group-field-conditional-logic.php:138
 
 
 
 
 
 
 
 
 
 
534
  #: includes/admin/views/html-location-rule.php:80
535
  msgid "and"
536
  msgstr "و"
537
 
538
+ #: includes/admin/views/field-group-field-conditional-logic.php:153
539
  #: includes/admin/views/field-group-locations.php:31
540
  msgid "Add rule group"
541
  msgstr "افزودن گروه قانون"
542
 
543
+ #: includes/admin/views/field-group-field.php:38
544
+ #: pro/fields/class-acf-field-flexible-content.php:424
545
+ #: pro/fields/class-acf-field-repeater.php:294
546
  msgid "Drag to reorder"
547
  msgstr "گرفتن و کشیدن برای مرتب سازی"
548
 
549
+ #: includes/admin/views/field-group-field.php:42
550
  #: includes/admin/views/field-group-field.php:45
 
551
  msgid "Edit field"
552
  msgstr "ویرایش زمینه"
553
 
554
+ #: includes/admin/views/field-group-field.php:45
555
+ #: includes/fields/class-acf-field-file.php:152
556
+ #: includes/fields/class-acf-field-image.php:139
557
  #: includes/fields/class-acf-field-link.php:139
558
+ #: pro/fields/class-acf-field-gallery.php:357
559
  msgid "Edit"
560
  msgstr "ویرایش"
561
 
562
+ #: includes/admin/views/field-group-field.php:46
563
  msgid "Duplicate field"
564
  msgstr "تکثیر زمینه"
565
 
566
+ #: includes/admin/views/field-group-field.php:47
567
  msgid "Move field to another group"
568
  msgstr "انتقال زمینه ها به گروه دیگر"
569
 
570
+ #: includes/admin/views/field-group-field.php:47
571
  msgid "Move"
572
  msgstr "انتقال"
573
 
574
+ #: includes/admin/views/field-group-field.php:48
575
  msgid "Delete field"
576
  msgstr "حذف زمینه"
577
 
578
+ #: includes/admin/views/field-group-field.php:48
579
+ #: pro/fields/class-acf-field-flexible-content.php:570
580
  msgid "Delete"
581
  msgstr "حذف"
582
 
583
+ #: includes/admin/views/field-group-field.php:65
584
  msgid "Field Label"
585
  msgstr "برچسب زمینه"
586
 
587
+ #: includes/admin/views/field-group-field.php:66
588
  msgid "This is the name which will appear on the EDIT page"
589
  msgstr "این نامی است که در صفحه \"ویرایش\" نمایش داده خواهد شد."
590
 
591
+ #: includes/admin/views/field-group-field.php:75
592
  msgid "Field Name"
593
  msgstr "نام زمینه"
594
 
595
+ #: includes/admin/views/field-group-field.php:76
596
  msgid "Single word, no spaces. Underscores and dashes allowed"
597
  msgstr "تک کلمه، بدون فاصله. خط زیرین و خط تیره ها مجازاند"
598
 
599
+ #: includes/admin/views/field-group-field.php:85
600
  msgid "Field Type"
601
  msgstr "نوع زمینه"
602
 
603
+ #: includes/admin/views/field-group-field.php:96
604
  msgid "Instructions"
605
  msgstr "دستورالعمل ها"
606
 
607
+ #: includes/admin/views/field-group-field.php:97
608
  msgid "Instructions for authors. Shown when submitting data"
609
  msgstr "دستورالعمل هایی برای نویسندگان. هنگام ارسال داده ها نمایش داده می شوند"
610
 
611
+ #: includes/admin/views/field-group-field.php:106
612
  msgid "Required?"
613
  msgstr "لازم است؟"
614
 
615
+ #: includes/admin/views/field-group-field.php:129
616
  msgid "Wrapper Attributes"
617
  msgstr "مشخصات پوشش فیلد"
618
 
619
+ #: includes/admin/views/field-group-field.php:135
620
  msgid "width"
621
  msgstr "عرض"
622
 
623
+ #: includes/admin/views/field-group-field.php:150
624
  msgid "class"
625
  msgstr "کلاس"
626
 
627
+ #: includes/admin/views/field-group-field.php:163
628
  msgid "id"
629
  msgstr "شناسه"
630
 
631
+ #: includes/admin/views/field-group-field.php:175
632
  msgid "Close Field"
633
  msgstr "بستن زمینه"
634
 
638
 
639
  #: includes/admin/views/field-group-fields.php:5
640
  #: includes/fields/class-acf-field-button-group.php:198
641
+ #: includes/fields/class-acf-field-checkbox.php:420
642
+ #: includes/fields/class-acf-field-radio.php:311
643
+ #: includes/fields/class-acf-field-select.php:428
644
+ #: pro/fields/class-acf-field-flexible-content.php:596
645
  msgid "Label"
646
  msgstr "برچسب زمینه"
647
 
648
  #: includes/admin/views/field-group-fields.php:6
649
+ #: includes/fields/class-acf-field-taxonomy.php:939
650
+ #: pro/fields/class-acf-field-flexible-content.php:610
651
  msgid "Name"
652
  msgstr "نام"
653
 
660
  msgstr "نوع زمینه"
661
 
662
  #: includes/admin/views/field-group-fields.php:14
663
+ msgid ""
664
+ "No fields. Click the <strong>+ Add Field</strong> button to create your "
665
+ "first field."
666
+ msgstr ""
667
+ "هیچ زمینه ای وجود ندارد. روی دکمه<strong>+ افزودن زمینه</strong> کلیک کنید "
668
+ "تا اولین زمینه خود را بسازید."
669
 
670
  #: includes/admin/views/field-group-fields.php:31
671
  msgid "+ Add Field"
676
  msgstr "قوانین"
677
 
678
  #: includes/admin/views/field-group-locations.php:10
679
+ msgid ""
680
+ "Create a set of rules to determine which edit screens will use these "
681
+ "advanced custom fields"
682
+ msgstr ""
683
+ "مجموعه ای از قوانین را بسازید تا مشخص کنید در کدام صفحه ویرایش ، این زمینه "
684
+ "های دلخواه سفارشی نمایش داده شوند."
685
 
686
  #: includes/admin/views/field-group-options.php:23
687
  msgid "Style"
720
  msgid "Top aligned"
721
  msgstr "سمت بالا"
722
 
723
+ #: includes/admin/views/field-group-options.php:63
724
+ #: includes/fields/class-acf-field-tab.php:107
725
+ msgid "Left aligned"
726
+ msgstr "سمت چپ"
727
+
728
  #: includes/admin/views/field-group-options.php:70
729
  msgid "Instruction placement"
730
  msgstr "مکان دستورالعمل ها"
750
  msgstr "نمایش لیست گروه زمینه"
751
 
752
  #: includes/admin/views/field-group-options.php:107
 
 
 
 
 
 
 
 
 
 
 
 
753
  msgid "Permalink"
754
  msgstr "پیوند یکتا"
755
 
756
+ #: includes/admin/views/field-group-options.php:108
757
  msgid "Content Editor"
758
  msgstr "ویرایش گر محتوا(ادیتور اصلی)"
759
 
760
+ #: includes/admin/views/field-group-options.php:109
761
  msgid "Excerpt"
762
  msgstr "چکیده"
763
 
764
+ #: includes/admin/views/field-group-options.php:111
765
  msgid "Discussion"
766
  msgstr "گفتگو"
767
 
768
+ #: includes/admin/views/field-group-options.php:112
769
  msgid "Comments"
770
  msgstr "دیدگاه ها"
771
 
772
+ #: includes/admin/views/field-group-options.php:113
773
  msgid "Revisions"
774
  msgstr "بازنگری ها"
775
 
776
+ #: includes/admin/views/field-group-options.php:114
777
  msgid "Slug"
778
  msgstr "نامک"
779
 
780
+ #: includes/admin/views/field-group-options.php:115
781
  msgid "Author"
782
  msgstr "نویسنده"
783
 
784
+ #: includes/admin/views/field-group-options.php:116
785
  msgid "Format"
786
  msgstr "فرمت"
787
 
788
+ #: includes/admin/views/field-group-options.php:117
789
  msgid "Page Attributes"
790
  msgstr "صفات برگه"
791
 
792
+ #: includes/admin/views/field-group-options.php:118
793
+ #: includes/fields/class-acf-field-relationship.php:688
794
  msgid "Featured Image"
795
  msgstr "تصویر شاخص"
796
 
797
+ #: includes/admin/views/field-group-options.php:119
798
  msgid "Categories"
799
  msgstr "دسته ها"
800
 
801
+ #: includes/admin/views/field-group-options.php:120
802
  msgid "Tags"
803
  msgstr "برچسب ها"
804
 
805
+ #: includes/admin/views/field-group-options.php:121
806
  msgid "Send Trackbacks"
807
  msgstr "ارسال بازتاب ها"
808
 
809
+ #: includes/admin/views/field-group-options.php:128
810
+ msgid "Hide on screen"
811
+ msgstr "مخفی کردن در صفحه"
812
+
813
+ #: includes/admin/views/field-group-options.php:129
814
+ msgid "<b>Select</b> items to <b>hide</b> them from the edit screen."
815
+ msgstr "<b>انتخاب</b> آیتم ها برای <b>پنهان کردن</b> آن ها از صفحه ویرایش."
816
+
817
+ #: includes/admin/views/field-group-options.php:129
818
+ msgid ""
819
+ "If multiple field groups appear on an edit screen, the first field group's "
820
+ "options will be used (the one with the lowest order number)"
821
+ msgstr ""
822
+ "اگر چندین گروه زمینه در یک صفحه ویرایش نمایش داده شود،اولین تنظیمات گروه "
823
+ "زمینه استفاده خواهد شد. (یکی با کمترین شماره)"
824
+
825
  #: includes/admin/views/html-location-group.php:3
826
  msgid "Show this field group if"
827
  msgstr "نمایش این گروه زمینه اگر"
837
 
838
  #: includes/admin/views/install-network.php:11
839
  #, php-format
840
+ msgid ""
841
+ "The following sites require a DB upgrade. Check the ones you want to update "
842
+ "and then click %s."
843
  msgstr "این سایت ها نیاز به به روز رسانی دارند برای انجام %s کلیک کنید."
844
 
845
  #: includes/admin/views/install-network.php:20
858
 
859
  #: includes/admin/views/install-network.php:63
860
  #, php-format
861
+ msgid ""
862
+ "Database Upgrade complete. <a href=\"%s\">Return to network dashboard</a>"
863
+ msgstr ""
864
+ "به روزرسانی دیتابیس انجام شد. <a href=\"%s\">بازگشت به پیشخوان شبکه</a>"
865
 
866
  #: includes/admin/views/install-network.php:102
867
  #: includes/admin/views/install-notice.php:42
868
+ msgid ""
869
+ "It is strongly recommended that you backup your database before proceeding. "
870
+ "Are you sure you wish to run the updater now?"
871
+ msgstr ""
872
+ "قویا توصیه می شود از بانک اطلاعاتی خود قبل از هر کاری پشتیبان تهیه کنید. آیا "
873
+ "مایلید به روز رسانی انجام شود؟"
874
 
875
  #: includes/admin/views/install-network.php:158
876
  msgid "Upgrade complete"
912
  msgstr "از شما برای بروزرسانی به آخرین نسخه %s v%s ممنون هستیم!"
913
 
914
  #: includes/admin/views/install-notice.php:28
915
+ msgid ""
916
+ "Before you start using the new awesome features, please update your database "
917
+ "to the newest version."
918
+ msgstr ""
919
+ "قبل از اینکه از تمام امکانات شگفت انگیز جدید استفاده کنید لازم است بانک "
920
+ "اطلاعاتی را به روز کنید"
921
 
922
  #: includes/admin/views/install-notice.php:31
923
  #, php-format
924
+ msgid ""
925
+ "Please also ensure any premium add-ons (%s) have first been updated to the "
926
+ "latest version."
927
+ msgstr ""
928
+ "لطفا اطمینان حاصل کنید که افزودنی های تجاري (%s) ابتدا به آخرین نسخه بروز "
929
+ "شده‌اند."
930
 
931
  #: includes/admin/views/install.php:7
932
  msgid "Reading upgrade tasks..."
951
 
952
  #: includes/admin/views/settings-info.php:4
953
  #, php-format
954
+ msgid ""
955
+ "Thank you for updating! ACF %s is bigger and better than ever before. We "
956
+ "hope you like it."
957
+ msgstr ""
958
+ "از اینکه به روزرسانی کردید متشکریم! افزونه زمینه دلخواه پیشرفته %s بزرگتر و "
959
+ "بهتر از قبل شده است. امیدواریم لذت ببرید."
960
 
961
  #: includes/admin/views/settings-info.php:17
962
  msgid "A smoother custom field experience"
967
  msgstr "کاربری بهینه شده"
968
 
969
  #: includes/admin/views/settings-info.php:23
970
+ msgid ""
971
+ "Including the popular Select2 library has improved both usability and speed "
972
+ "across a number of field types including post object, page link, taxonomy "
973
+ "and select."
974
+ msgstr ""
975
+ "استفاده از کتابخانه محبوب Select2 باعث سرعت در عملکرد و کاربری بهتر در انواع "
976
+ "زمینه هاشامل آبجکت نوشته، پیوند(لینک) صفحه ، طبقه بندی و زمینه های "
977
+ "انتخاب(Select) شده است"
978
 
979
  #: includes/admin/views/settings-info.php:27
980
  msgid "Improved Design"
981
  msgstr "طراحی بهینه شده"
982
 
983
  #: includes/admin/views/settings-info.php:28
984
+ msgid ""
985
+ "Many fields have undergone a visual refresh to make ACF look better than "
986
+ "ever! Noticeable changes are seen on the gallery, relationship and oEmbed "
987
+ "(new) fields!"
988
+ msgstr ""
989
+ "بسیاری از زمینه ها از نظر ظاهری باز طراحی شدند تا این افزونه از قبل بهتر شده "
990
+ "باشد. تغییرات چشم گیر در گالری و ارتباط و زمینه جدید به نام oEmbed صورت "
991
+ "گرفته است."
992
 
993
  #: includes/admin/views/settings-info.php:32
994
  msgid "Improved Data"
995
  msgstr "داده ها بهینه شده اند"
996
 
997
  #: includes/admin/views/settings-info.php:33
998
+ msgid ""
999
+ "Redesigning the data architecture has allowed sub fields to live "
1000
+ "independently from their parents. This allows you to drag and drop fields in "
1001
+ "and out of parent fields!"
1002
+ msgstr ""
1003
+ "بازطراحی معماری داده ها این اجازه را به زمینه های زیرمجموعه داده است که بدون "
1004
+ "زمینه های والد باقی بمانند. این به شما کمک می کند که زمینه ها را از یک فیلد "
1005
+ "اصلی خارج یا به آن وارد نمایید !"
1006
 
1007
  #: includes/admin/views/settings-info.php:39
1008
  msgid "Goodbye Add-ons. Hello PRO"
1013
  msgstr "معرفی نسخه حرفه ای"
1014
 
1015
  #: includes/admin/views/settings-info.php:45
1016
+ msgid ""
1017
+ "We're changing the way premium functionality is delivered in an exciting way!"
1018
+ msgstr ""
1019
+ "ما در حال تغییر راه عملکردهای پولی افزونه به شیوه ای هیجان انگیز هستیم!"
1020
 
1021
  #: includes/admin/views/settings-info.php:46
1022
  #, php-format
1023
+ msgid ""
1024
+ "All 4 premium add-ons have been combined into a new <a href=\"%s\">Pro "
1025
+ "version of ACF</a>. With both personal and developer licenses available, "
1026
+ "premium functionality is more affordable and accessible than ever before!"
1027
+ msgstr ""
1028
+ "هر چهار افزدونی پولی یکی شده و تحت عنوان <a href=\"%s\">نسخه حرفه ای (Pro) </"
1029
+ "a> از افزونه زمینه های دلخواه معرفی شده اند. دو نسخه شخصی و توسعه دهنده "
1030
+ "موجود است که در هر دو این امکانات بهتر و دسترس تر از قبل موجود است!"
1031
 
1032
  #: includes/admin/views/settings-info.php:50
1033
  msgid "Powerful Features"
1034
  msgstr "امکانات قدرتمند"
1035
 
1036
  #: includes/admin/views/settings-info.php:51
1037
+ msgid ""
1038
+ "ACF PRO contains powerful features such as repeatable data, flexible content "
1039
+ "layouts, a beautiful gallery field and the ability to create extra admin "
1040
+ "options pages!"
1041
+ msgstr ""
1042
+ "نسخه حرفه دارای امکانات قدرتمندی نظیر داده های تکرارپذیر، محتوای منعطف، یک "
1043
+ "زمینه گالری زیبا و امکان ساخت صفحات تنظیمات می باشد !"
1044
 
1045
  #: includes/admin/views/settings-info.php:52
1046
  #, php-format
1053
 
1054
  #: includes/admin/views/settings-info.php:57
1055
  #, php-format
1056
+ msgid ""
1057
+ "To help make upgrading easy, <a href=\"%s\">login to your store account</a> "
1058
+ "and claim a free copy of ACF PRO!"
1059
+ msgstr ""
1060
+ "برای به روزرسانی ساده <a href=\"%s\"> به بخش کاربری خود در فروشگاه وارد شوید "
1061
+ "</a> و یک نسخه از ویرایش حرفه ای را دانلود کنید!"
1062
 
1063
  #: includes/admin/views/settings-info.php:58
1064
  #, php-format
1065
+ msgid ""
1066
+ "We also wrote an <a href=\"%s\">upgrade guide</a> to answer any questions, "
1067
+ "but if you do have one, please contact our support team via the <a href=\"%s"
1068
+ "\">help desk</a>"
1069
+ msgstr ""
1070
+ "همچنین یک <a href=\"%s\"> راهنمای به روزرسانی</a> برای پاسخ به سوالات نوشته "
1071
+ "ایم ولی اگر هنوز سوالی دارید از <a href=\"%s\">تیم پشتیبانی</a> بپرسید "
1072
 
1073
  #: includes/admin/views/settings-info.php:66
1074
  msgid "Under the Hood"
1080
 
1081
  #: includes/admin/views/settings-info.php:72
1082
  msgid "ACF now saves its field settings as individual post objects"
1083
+ msgstr ""
1084
+ "افزونه اکنون تنظیمات زمینه ها را به عنوان آبجکت ها مختلف نوشته ذخیره می کند"
1085
 
1086
  #: includes/admin/views/settings-info.php:76
1087
  msgid "More AJAX"
1104
  msgstr "کنترل نسخه بهتر"
1105
 
1106
  #: includes/admin/views/settings-info.php:89
1107
+ msgid ""
1108
+ "New auto export to JSON feature allows field settings to be version "
1109
+ "controlled"
1110
  msgstr "اکنون با خروجی جدید JSON امکان کنترل نسخه بهتر را فراهم کردیم"
1111
 
1112
  #: includes/admin/views/settings-info.php:93
1123
 
1124
  #: includes/admin/views/settings-info.php:99
1125
  msgid "Fields can now be mapped to comments, widgets and all user forms!"
1126
+ msgstr ""
1127
+ "گزینه ها اکنون می توانند به نظرات، ابزارک ها و حتی فرم های مربوط به کاربران "
1128
+ "متصل شوند !"
1129
 
1130
  #: includes/admin/views/settings-info.php:106
1131
  msgid "A new field for embedding content has been added"
1144
  msgstr "تنظیمات جدید"
1145
 
1146
  #: includes/admin/views/settings-info.php:116
1147
+ msgid ""
1148
+ "Field group settings have been added for label placement and instruction "
1149
+ "placement"
1150
  msgstr "تنظیماتی به گروه زمینه برای مکان برچسب ها و توضیحات اضافه شده است"
1151
 
1152
  #: includes/admin/views/settings-info.php:122
1163
 
1164
  #: includes/admin/views/settings-info.php:128
1165
  msgid "Form validation is now done via PHP + AJAX in favour of only JS"
1166
+ msgstr ""
1167
+ "خطایابی فرم (validation) اکنون از طریق PHP + AJAX به جای JS انجام می شود"
1168
 
1169
  #: includes/admin/views/settings-info.php:132
1170
  msgid "Relationship Field"
1171
  msgstr "زمینه ارتباط"
1172
 
1173
  #: includes/admin/views/settings-info.php:133
1174
+ msgid ""
1175
+ "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)"
1176
  msgstr "تنظیمات جدید برای زمینه ارتباط و فیلتر کردن اضافه شده است"
1177
 
1178
  #: includes/admin/views/settings-info.php:139
1180
  msgstr "جابجایی زمینه ها"
1181
 
1182
  #: includes/admin/views/settings-info.php:140
1183
+ msgid ""
1184
+ "New field group functionality allows you to move a field between groups & "
1185
+ "parents"
1186
+ msgstr ""
1187
+ "عملکرد جدید گروه زمینه ها به شما امکان جابجایی زمینه ها بین گروه ها و بین "
1188
+ "گروه های والد را می دهد"
1189
 
1190
  #: includes/admin/views/settings-info.php:144
1191
  #: includes/fields/class-acf-field-page_link.php:25
1201
  msgstr "صفحه تنظیمات بهتر"
1202
 
1203
  #: includes/admin/views/settings-info.php:150
1204
+ msgid ""
1205
+ "New functions for options page allow creation of both parent and child menu "
1206
+ "pages"
1207
+ msgstr ""
1208
+ "تنظیمات جدید برای صفحه تنظیمات اجازه ساخت هر دو صفحه منوی والد و زیرمجموعه "
1209
+ "را می دهد"
1210
 
1211
+ #: includes/admin/views/settings-info.php:157
1212
  #, php-format
1213
  msgid "We think you'll love the changes in %s."
1214
  msgstr "فکر می کنیم شما تغییرات در %s را دوست خواهید داشت"
1215
 
1216
+ #: includes/api/api-helpers.php:1028
1217
  msgid "Thumbnail"
1218
  msgstr "تصویر بندانگشتی"
1219
 
1220
+ #: includes/api/api-helpers.php:1029
1221
  msgid "Medium"
1222
  msgstr "متوسط"
1223
 
1224
+ #: includes/api/api-helpers.php:1030
1225
  msgid "Large"
1226
  msgstr "بزرگ"
1227
 
1228
+ #: includes/api/api-helpers.php:1079
1229
  msgid "Full Size"
1230
  msgstr "اندازه کامل"
1231
 
1232
+ #: includes/api/api-helpers.php:1321 includes/api/api-helpers.php:1894
1233
+ #: pro/fields/class-acf-field-clone.php:996
1234
  msgid "(no title)"
1235
  msgstr "(بدون عنوان)"
1236
 
1237
+ #: includes/api/api-helpers.php:3976
1238
  #, php-format
1239
  msgid "Image width must be at least %dpx."
1240
  msgstr "عرض تصویر باید حداقل %d پیکسل باشد."
1241
 
1242
+ #: includes/api/api-helpers.php:3981
1243
  #, php-format
1244
  msgid "Image width must not exceed %dpx."
1245
  msgstr "عرض تصویر نباید از %d پیکسل بیشتر باشد."
1246
 
1247
+ #: includes/api/api-helpers.php:3997
1248
  #, php-format
1249
  msgid "Image height must be at least %dpx."
1250
  msgstr "ارتفاع فایل باید حداقل %d پیکسل باشد."
1251
 
1252
+ #: includes/api/api-helpers.php:4002
1253
  #, php-format
1254
  msgid "Image height must not exceed %dpx."
1255
  msgstr "ارتفاع تصویر نباید از %d پیکسل بیشتر باشد."
1256
 
1257
+ #: includes/api/api-helpers.php:4020
1258
  #, php-format
1259
  msgid "File size must be at least %s."
1260
  msgstr "حجم فایل باید حداقل %s باشد."
1261
 
1262
+ #: includes/api/api-helpers.php:4025
1263
  #, php-format
1264
  msgid "File size must must not exceed %s."
1265
  msgstr "حجم فایل ها نباید از %s بیشتر باشد."
1266
 
1267
+ #: includes/api/api-helpers.php:4059
1268
  #, php-format
1269
  msgid "File type must be %s."
1270
  msgstr "نوع فایل باید %s باشد"
1271
 
1272
+ #: includes/assets.php:172
1273
+ msgid "The changes you made will be lost if you navigate away from this page"
1274
+ msgstr "اگر از صفحه جاری خارج شوید ، تغییرات شما ذخیره نخواهند شد"
1275
+
1276
+ #: includes/assets.php:175 includes/fields/class-acf-field-select.php:259
1277
+ msgctxt "verb"
1278
+ msgid "Select"
1279
+ msgstr "انتخاب"
1280
+
1281
+ #: includes/assets.php:176
1282
+ msgctxt "verb"
1283
+ msgid "Edit"
1284
+ msgstr "ویرایش"
1285
+
1286
+ #: includes/assets.php:177
1287
+ msgctxt "verb"
1288
+ msgid "Update"
1289
+ msgstr "بروزرسانی"
1290
+
1291
+ #: includes/assets.php:178
1292
+ msgid "Uploaded to this post"
1293
+ msgstr "بارگذاری شده در این نوشته"
1294
+
1295
+ #: includes/assets.php:179
1296
+ msgid "Expand Details"
1297
+ msgstr "نمایش جزئیات"
1298
+
1299
+ #: includes/assets.php:180
1300
+ msgid "Collapse Details"
1301
+ msgstr "عدم نمایش جزئیات"
1302
+
1303
+ #: includes/assets.php:181
1304
+ msgid "Restricted"
1305
+ msgstr "ممنوع"
1306
+
1307
+ #: includes/assets.php:182 includes/fields/class-acf-field-image.php:67
1308
+ msgid "All images"
1309
+ msgstr "تمام تصاویر"
1310
+
1311
+ #: includes/assets.php:185
1312
+ msgid "Validation successful"
1313
+ msgstr "اعتبار سنجی موفق بود"
1314
+
1315
+ #: includes/assets.php:186 includes/validation.php:285
1316
+ #: includes/validation.php:296
1317
+ msgid "Validation failed"
1318
+ msgstr "مشکل در اعتبار سنجی"
1319
+
1320
+ #: includes/assets.php:187
1321
+ msgid "1 field requires attention"
1322
+ msgstr "یکی از گزینه ها نیاز به بررسی دارد"
1323
+
1324
+ #: includes/assets.php:188
1325
+ #, php-format
1326
+ msgid "%d fields require attention"
1327
+ msgstr "%d گزینه نیاز به بررسی دارد"
1328
+
1329
+ #: includes/assets.php:191
1330
+ msgid "Are you sure?"
1331
+ msgstr "اطمینان دارید؟"
1332
+
1333
+ #: includes/assets.php:192 includes/fields/class-acf-field-true_false.php:79
1334
+ #: includes/fields/class-acf-field-true_false.php:159
1335
+ #: pro/admin/views/html-settings-updates.php:89
1336
+ msgid "Yes"
1337
+ msgstr "بله"
1338
+
1339
+ #: includes/assets.php:193 includes/fields/class-acf-field-true_false.php:80
1340
+ #: includes/fields/class-acf-field-true_false.php:174
1341
+ #: pro/admin/views/html-settings-updates.php:99
1342
+ msgid "No"
1343
+ msgstr "خیر"
1344
+
1345
+ #: includes/assets.php:194 includes/fields/class-acf-field-file.php:154
1346
+ #: includes/fields/class-acf-field-image.php:141
1347
+ #: includes/fields/class-acf-field-link.php:140
1348
+ #: pro/fields/class-acf-field-gallery.php:358
1349
+ #: pro/fields/class-acf-field-gallery.php:546
1350
+ msgid "Remove"
1351
+ msgstr "حذف"
1352
+
1353
+ #: includes/assets.php:195
1354
+ msgid "Cancel"
1355
+ msgstr "لغو"
1356
+
1357
+ #: includes/assets.php:198
1358
+ msgid "Has any value"
1359
+ msgstr "هر نوع مقدار"
1360
+
1361
+ #: includes/assets.php:199
1362
+ msgid "Has no value"
1363
+ msgstr "بدون مقدار"
1364
+
1365
+ #: includes/assets.php:200
1366
+ msgid "Value is equal to"
1367
+ msgstr "مقدار برابر است با"
1368
+
1369
+ #: includes/assets.php:201
1370
+ msgid "Value is not equal to"
1371
+ msgstr "مقدار برابر نیست با"
1372
+
1373
+ #: includes/assets.php:202
1374
+ msgid "Value matches pattern"
1375
+ msgstr "مقدار الگوی"
1376
+
1377
+ #: includes/assets.php:203
1378
+ msgid "Value contains"
1379
+ msgstr "شامل می شود"
1380
+
1381
+ #: includes/assets.php:204
1382
+ msgid "Value is greater than"
1383
+ msgstr "مقدار بیشتر از"
1384
+
1385
+ #: includes/assets.php:205
1386
+ msgid "Value is less than"
1387
+ msgstr "مقدار کمتر از"
1388
+
1389
+ #: includes/assets.php:206
1390
+ msgid "Selection is greater than"
1391
+ msgstr "انتخاب بیشتر از"
1392
+
1393
+ #: includes/assets.php:207
1394
+ msgid "Selection is less than"
1395
+ msgstr "انتخاب کمتر از"
1396
+
1397
+ #: includes/fields.php:308
1398
+ msgid "Field type does not exist"
1399
+ msgstr "نوع زمینه وجود ندارد"
1400
+
1401
+ #: includes/fields.php:308
1402
+ msgid "Unknown"
1403
+ msgstr "ناشناخته"
1404
+
1405
+ #: includes/fields.php:349
1406
  msgid "Basic"
1407
  msgstr "پایه"
1408
 
1409
+ #: includes/fields.php:350 includes/forms/form-front.php:47
1410
  msgid "Content"
1411
  msgstr "محتوا"
1412
 
1413
+ #: includes/fields.php:351
1414
  msgid "Choice"
1415
  msgstr "انتخاب"
1416
 
1417
+ #: includes/fields.php:352
1418
  msgid "Relational"
1419
  msgstr "رابطه"
1420
 
1421
+ #: includes/fields.php:353
1422
  msgid "jQuery"
1423
  msgstr "جی کوئری"
1424
 
1425
+ #: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177
1426
+ #: includes/fields/class-acf-field-checkbox.php:389
 
1427
  #: includes/fields/class-acf-field-group.php:474
1428
+ #: includes/fields/class-acf-field-radio.php:290
1429
+ #: pro/fields/class-acf-field-clone.php:843
1430
+ #: pro/fields/class-acf-field-flexible-content.php:567
1431
+ #: pro/fields/class-acf-field-flexible-content.php:616
1432
+ #: pro/fields/class-acf-field-repeater.php:443
1433
  msgid "Layout"
1434
  msgstr "چیدمان"
1435
 
 
 
 
 
 
 
 
 
1436
  #: includes/fields/class-acf-field-accordion.php:24
1437
  msgid "Accordion"
1438
  msgstr "آکاردئونی"
1459
  msgstr "نقطه پایانی"
1460
 
1461
  #: includes/fields/class-acf-field-accordion.php:120
1462
+ msgid ""
1463
+ "Define an endpoint for the previous accordion to stop. This accordion will "
1464
+ "not be visible."
1465
+ msgstr ""
1466
+ "یک نقطه پایانی برای توقف آکاردئون قبلی تعریف کنید. این آکاردئون مخفی خواهد "
1467
+ "بود."
1468
 
1469
  #: includes/fields/class-acf-field-button-group.php:24
1470
  msgid "Button Group"
1473
  #: includes/fields/class-acf-field-button-group.php:149
1474
  #: includes/fields/class-acf-field-checkbox.php:344
1475
  #: includes/fields/class-acf-field-radio.php:235
1476
+ #: includes/fields/class-acf-field-select.php:359
1477
  msgid "Choices"
1478
  msgstr "انتخاب ها"
1479
 
1480
  #: includes/fields/class-acf-field-button-group.php:150
1481
  #: includes/fields/class-acf-field-checkbox.php:345
1482
  #: includes/fields/class-acf-field-radio.php:236
1483
+ #: includes/fields/class-acf-field-select.php:360
1484
  msgid "Enter each choice on a new line."
1485
  msgstr "هر انتخاب را در یک خط جدید وارد کنید."
1486
 
1487
  #: includes/fields/class-acf-field-button-group.php:150
1488
  #: includes/fields/class-acf-field-checkbox.php:345
1489
  #: includes/fields/class-acf-field-radio.php:236
1490
+ #: includes/fields/class-acf-field-select.php:360
1491
  msgid "For more control, you may specify both a value and label like this:"
1492
  msgstr "برای کنترل بیشتر، ممکن است هر دو مقدار و برچسب را مانند زیر مشخص کنید:"
1493
 
1494
  #: includes/fields/class-acf-field-button-group.php:150
1495
  #: includes/fields/class-acf-field-checkbox.php:345
1496
  #: includes/fields/class-acf-field-radio.php:236
1497
+ #: includes/fields/class-acf-field-select.php:360
1498
  msgid "red : Red"
1499
  msgstr "red : قرمز"
1500
 
1502
  #: includes/fields/class-acf-field-page_link.php:513
1503
  #: includes/fields/class-acf-field-post_object.php:412
1504
  #: includes/fields/class-acf-field-radio.php:244
1505
+ #: includes/fields/class-acf-field-select.php:377
1506
+ #: includes/fields/class-acf-field-taxonomy.php:784
1507
+ #: includes/fields/class-acf-field-user.php:409
1508
  msgid "Allow Null?"
1509
  msgstr "آیا Null مجاز است؟"
1510
 
1511
  #: includes/fields/class-acf-field-button-group.php:168
1512
+ #: includes/fields/class-acf-field-checkbox.php:380
1513
  #: includes/fields/class-acf-field-color_picker.php:131
1514
  #: includes/fields/class-acf-field-email.php:118
1515
  #: includes/fields/class-acf-field-number.php:127
1516
+ #: includes/fields/class-acf-field-radio.php:281
1517
+ #: includes/fields/class-acf-field-range.php:146
1518
+ #: includes/fields/class-acf-field-select.php:368
1519
  #: includes/fields/class-acf-field-text.php:119
1520
  #: includes/fields/class-acf-field-textarea.php:102
1521
  #: includes/fields/class-acf-field-true_false.php:135
1522
  #: includes/fields/class-acf-field-url.php:100
1523
+ #: includes/fields/class-acf-field-wysiwyg.php:397
1524
  msgid "Default Value"
1525
  msgstr "مقدار پیش فرض"
1526
 
1527
  #: includes/fields/class-acf-field-button-group.php:169
1528
  #: includes/fields/class-acf-field-email.php:119
1529
  #: includes/fields/class-acf-field-number.php:128
1530
+ #: includes/fields/class-acf-field-radio.php:282
1531
+ #: includes/fields/class-acf-field-range.php:147
1532
  #: includes/fields/class-acf-field-text.php:120
1533
  #: includes/fields/class-acf-field-textarea.php:103
1534
  #: includes/fields/class-acf-field-url.php:101
1535
+ #: includes/fields/class-acf-field-wysiwyg.php:398
1536
  msgid "Appears when creating a new post"
1537
  msgstr "هنگام ایجاد یک نوشته جدید نمایش داده می شود"
1538
 
1539
  #: includes/fields/class-acf-field-button-group.php:183
1540
+ #: includes/fields/class-acf-field-checkbox.php:396
1541
+ #: includes/fields/class-acf-field-radio.php:297
1542
  msgid "Horizontal"
1543
  msgstr "افقی"
1544
 
1545
  #: includes/fields/class-acf-field-button-group.php:184
1546
+ #: includes/fields/class-acf-field-checkbox.php:395
1547
+ #: includes/fields/class-acf-field-radio.php:296
1548
  msgid "Vertical"
1549
  msgstr "عمودی"
1550
 
1551
  #: includes/fields/class-acf-field-button-group.php:191
1552
+ #: includes/fields/class-acf-field-checkbox.php:413
1553
+ #: includes/fields/class-acf-field-file.php:215
1554
+ #: includes/fields/class-acf-field-image.php:205
1555
  #: includes/fields/class-acf-field-link.php:166
1556
+ #: includes/fields/class-acf-field-radio.php:304
1557
+ #: includes/fields/class-acf-field-taxonomy.php:829
1558
  msgid "Return Value"
1559
  msgstr "مقدار بازگشت"
1560
 
1561
  #: includes/fields/class-acf-field-button-group.php:192
1562
+ #: includes/fields/class-acf-field-checkbox.php:414
1563
+ #: includes/fields/class-acf-field-file.php:216
1564
+ #: includes/fields/class-acf-field-image.php:206
1565
  #: includes/fields/class-acf-field-link.php:167
1566
+ #: includes/fields/class-acf-field-radio.php:305
1567
  msgid "Specify the returned value on front end"
1568
  msgstr "مقدار برگشتی در نمایش نهایی را تعیین کنید"
1569
 
1570
  #: includes/fields/class-acf-field-button-group.php:197
1571
+ #: includes/fields/class-acf-field-checkbox.php:419
1572
+ #: includes/fields/class-acf-field-radio.php:310
1573
+ #: includes/fields/class-acf-field-select.php:427
1574
  msgid "Value"
1575
  msgstr "مقدار"
1576
 
1577
  #: includes/fields/class-acf-field-button-group.php:199
1578
+ #: includes/fields/class-acf-field-checkbox.php:421
1579
+ #: includes/fields/class-acf-field-radio.php:312
1580
+ #: includes/fields/class-acf-field-select.php:429
1581
  msgid "Both (Array)"
1582
  msgstr "هر دو (آرایه)"
1583
 
1584
  #: includes/fields/class-acf-field-checkbox.php:25
1585
+ #: includes/fields/class-acf-field-taxonomy.php:771
1586
  msgid "Checkbox"
1587
  msgstr "جعبه انتخاب(چک باکس)"
1588
 
1610
  msgid "Save 'custom' values to the field's choices"
1611
  msgstr "ذخیره مقادیر دلخواه در انتخاب های زمینه"
1612
 
1613
+ #: includes/fields/class-acf-field-checkbox.php:381
1614
+ #: includes/fields/class-acf-field-select.php:369
1615
  msgid "Enter each default value on a new line"
1616
  msgstr "هر مقدار پیش فرض را در یک خط جدید وارد کنید"
1617
 
1618
+ #: includes/fields/class-acf-field-checkbox.php:403
1619
  msgid "Toggle"
1620
  msgstr "انتخاب"
1621
 
1622
+ #: includes/fields/class-acf-field-checkbox.php:404
1623
  msgid "Prepend an extra checkbox to toggle all choices"
1624
  msgstr "اضافه کردن چک باکس اضافی برای انتخاب همه"
1625
 
1647
  msgid "Date Picker"
1648
  msgstr "تاریخ"
1649
 
1650
+ #: includes/fields/class-acf-field-date_picker.php:59
1651
  msgctxt "Date Picker JS closeText"
1652
  msgid "Done"
1653
  msgstr "انجام شد"
1654
 
1655
+ #: includes/fields/class-acf-field-date_picker.php:60
1656
  msgctxt "Date Picker JS currentText"
1657
  msgid "Today"
1658
  msgstr "امروز"
1659
 
1660
+ #: includes/fields/class-acf-field-date_picker.php:61
1661
  msgctxt "Date Picker JS nextText"
1662
  msgid "Next"
1663
  msgstr "بعدی"
1664
 
1665
+ #: includes/fields/class-acf-field-date_picker.php:62
1666
  msgctxt "Date Picker JS prevText"
1667
  msgid "Prev"
1668
  msgstr "قبلی"
1669
 
1670
+ #: includes/fields/class-acf-field-date_picker.php:63
1671
  msgctxt "Date Picker JS weekHeader"
1672
  msgid "Wk"
1673
  msgstr "هفته"
1674
 
1675
+ #: includes/fields/class-acf-field-date_picker.php:180
1676
+ #: includes/fields/class-acf-field-date_time_picker.php:183
1677
  #: includes/fields/class-acf-field-time_picker.php:109
1678
  msgid "Display Format"
1679
  msgstr "فرمت نمایش"
1680
 
1681
+ #: includes/fields/class-acf-field-date_picker.php:181
1682
+ #: includes/fields/class-acf-field-date_time_picker.php:184
1683
  #: includes/fields/class-acf-field-time_picker.php:110
1684
  msgid "The format displayed when editing a post"
1685
  msgstr "قالب در زمان نمایش نوشته دیده خواهد شد"
1686
 
1687
+ #: includes/fields/class-acf-field-date_picker.php:189
1688
+ #: includes/fields/class-acf-field-date_picker.php:220
1689
+ #: includes/fields/class-acf-field-date_time_picker.php:193
1690
+ #: includes/fields/class-acf-field-date_time_picker.php:210
1691
  #: includes/fields/class-acf-field-time_picker.php:117
1692
  #: includes/fields/class-acf-field-time_picker.php:132
1693
  msgid "Custom:"
1694
  msgstr "دلخواه:"
1695
 
1696
+ #: includes/fields/class-acf-field-date_picker.php:199
1697
  msgid "Save Format"
1698
  msgstr "ذخیره قالب"
1699
 
1700
+ #: includes/fields/class-acf-field-date_picker.php:200
1701
  msgid "The format used when saving a value"
1702
  msgstr "قالب استفاده در زمان ذخیره مقدار"
1703
 
1704
+ #: includes/fields/class-acf-field-date_picker.php:210
1705
+ #: includes/fields/class-acf-field-date_time_picker.php:200
1706
  #: includes/fields/class-acf-field-post_object.php:432
1707
+ #: includes/fields/class-acf-field-relationship.php:715
1708
+ #: includes/fields/class-acf-field-select.php:422
1709
  #: includes/fields/class-acf-field-time_picker.php:124
1710
+ #: includes/fields/class-acf-field-user.php:428
1711
  msgid "Return Format"
1712
  msgstr "فرمت بازگشت"
1713
 
1714
+ #: includes/fields/class-acf-field-date_picker.php:211
1715
+ #: includes/fields/class-acf-field-date_time_picker.php:201
1716
  #: includes/fields/class-acf-field-time_picker.php:125
1717
  msgid "The format returned via template functions"
1718
  msgstr "قالب توسط توابع پوسته نمایش داده خواهد شد"
1719
 
1720
+ #: includes/fields/class-acf-field-date_picker.php:229
1721
+ #: includes/fields/class-acf-field-date_time_picker.php:217
1722
  msgid "Week Starts On"
1723
  msgstr "اولین روز هفته"
1724
 
1726
  msgid "Date Time Picker"
1727
  msgstr "انتخاب کننده زمان و تاریخ"
1728
 
1729
+ #: includes/fields/class-acf-field-date_time_picker.php:68
1730
  msgctxt "Date Time Picker JS timeOnlyTitle"
1731
  msgid "Choose Time"
1732
  msgstr "انتخاب زمان"
1733
 
1734
+ #: includes/fields/class-acf-field-date_time_picker.php:69
1735
  msgctxt "Date Time Picker JS timeText"
1736
  msgid "Time"
1737
  msgstr "زمان"
1738
 
1739
+ #: includes/fields/class-acf-field-date_time_picker.php:70
1740
  msgctxt "Date Time Picker JS hourText"
1741
  msgid "Hour"
1742
  msgstr "ساعت"
1743
 
1744
+ #: includes/fields/class-acf-field-date_time_picker.php:71
1745
  msgctxt "Date Time Picker JS minuteText"
1746
  msgid "Minute"
1747
  msgstr "دقیقه"
1748
 
1749
+ #: includes/fields/class-acf-field-date_time_picker.php:72
1750
  msgctxt "Date Time Picker JS secondText"
1751
  msgid "Second"
1752
  msgstr "ثانیه"
1753
 
1754
+ #: includes/fields/class-acf-field-date_time_picker.php:73
1755
  msgctxt "Date Time Picker JS millisecText"
1756
  msgid "Millisecond"
1757
  msgstr "میلی ثانیه"
1758
 
1759
+ #: includes/fields/class-acf-field-date_time_picker.php:74
1760
  msgctxt "Date Time Picker JS microsecText"
1761
  msgid "Microsecond"
1762
  msgstr "میکرو ثانیه"
1763
 
1764
+ #: includes/fields/class-acf-field-date_time_picker.php:75
1765
  msgctxt "Date Time Picker JS timezoneText"
1766
  msgid "Time Zone"
1767
  msgstr "منطقه زمانی"
1768
 
1769
+ #: includes/fields/class-acf-field-date_time_picker.php:76
1770
  msgctxt "Date Time Picker JS currentText"
1771
  msgid "Now"
1772
  msgstr "الان"
1773
 
1774
+ #: includes/fields/class-acf-field-date_time_picker.php:77
1775
  msgctxt "Date Time Picker JS closeText"
1776
  msgid "Done"
1777
  msgstr "انجام شد"
1778
 
1779
+ #: includes/fields/class-acf-field-date_time_picker.php:78
1780
  msgctxt "Date Time Picker JS selectText"
1781
  msgid "Select"
1782
  msgstr "انتخاب"
1783
 
1784
+ #: includes/fields/class-acf-field-date_time_picker.php:80
1785
  msgctxt "Date Time Picker JS amText"
1786
  msgid "AM"
1787
  msgstr "صبح"
1788
 
1789
+ #: includes/fields/class-acf-field-date_time_picker.php:81
1790
  msgctxt "Date Time Picker JS amTextShort"
1791
  msgid "A"
1792
  msgstr "صبح"
1793
 
1794
+ #: includes/fields/class-acf-field-date_time_picker.php:84
1795
  msgctxt "Date Time Picker JS pmText"
1796
  msgid "PM"
1797
  msgstr "عصر"
1798
 
1799
+ #: includes/fields/class-acf-field-date_time_picker.php:85
1800
  msgctxt "Date Time Picker JS pmTextShort"
1801
  msgid "P"
1802
  msgstr "عصر"
1826
  #: includes/fields/class-acf-field-email.php:136
1827
  #: includes/fields/class-acf-field-number.php:145
1828
  #: includes/fields/class-acf-field-password.php:80
1829
+ #: includes/fields/class-acf-field-range.php:185
1830
  #: includes/fields/class-acf-field-text.php:137
1831
  msgid "Prepend"
1832
  msgstr "پیشوند"
1834
  #: includes/fields/class-acf-field-email.php:137
1835
  #: includes/fields/class-acf-field-number.php:146
1836
  #: includes/fields/class-acf-field-password.php:81
1837
+ #: includes/fields/class-acf-field-range.php:186
1838
  #: includes/fields/class-acf-field-text.php:138
1839
  msgid "Appears before the input"
1840
  msgstr "قبل از ورودی نمایش داده می شود"
1842
  #: includes/fields/class-acf-field-email.php:145
1843
  #: includes/fields/class-acf-field-number.php:154
1844
  #: includes/fields/class-acf-field-password.php:89
1845
+ #: includes/fields/class-acf-field-range.php:194
1846
  #: includes/fields/class-acf-field-text.php:146
1847
  msgid "Append"
1848
  msgstr "پسوند"
1850
  #: includes/fields/class-acf-field-email.php:146
1851
  #: includes/fields/class-acf-field-number.php:155
1852
  #: includes/fields/class-acf-field-password.php:90
1853
+ #: includes/fields/class-acf-field-range.php:195
1854
  #: includes/fields/class-acf-field-text.php:147
1855
  msgid "Appears after the input"
1856
  msgstr "بعد از ورودی نمایش داده می شود"
1859
  msgid "File"
1860
  msgstr "پرونده"
1861
 
1862
+ #: includes/fields/class-acf-field-file.php:58
1863
  msgid "Edit File"
1864
  msgstr "ویرایش پرونده"
1865
 
1866
+ #: includes/fields/class-acf-field-file.php:59
1867
  msgid "Update File"
1868
  msgstr "بروزرسانی پرونده"
1869
 
1870
+ #: includes/fields/class-acf-field-file.php:141
 
 
 
 
 
 
1871
  msgid "File name"
1872
  msgstr "نام فایل"
1873
 
1874
+ #: includes/fields/class-acf-field-file.php:145
 
1875
  #: includes/fields/class-acf-field-file.php:248
1876
+ #: includes/fields/class-acf-field-file.php:259
1877
+ #: includes/fields/class-acf-field-image.php:265
1878
+ #: includes/fields/class-acf-field-image.php:294
1879
+ #: pro/fields/class-acf-field-gallery.php:705
1880
+ #: pro/fields/class-acf-field-gallery.php:734
1881
  msgid "File size"
1882
  msgstr "اندازه فایل"
1883
 
1884
+ #: includes/fields/class-acf-field-file.php:170
 
 
 
 
 
 
 
 
1885
  msgid "Add File"
1886
  msgstr "افزودن پرونده"
1887
 
1888
+ #: includes/fields/class-acf-field-file.php:221
1889
  msgid "File Array"
1890
  msgstr "آرایه فایل"
1891
 
1892
+ #: includes/fields/class-acf-field-file.php:222
1893
  msgid "File URL"
1894
  msgstr "آدرس پرونده"
1895
 
1896
+ #: includes/fields/class-acf-field-file.php:223
1897
  msgid "File ID"
1898
  msgstr "شناسه(ID) پرونده"
1899
 
1900
+ #: includes/fields/class-acf-field-file.php:230
1901
+ #: includes/fields/class-acf-field-image.php:230
1902
+ #: pro/fields/class-acf-field-gallery.php:670
1903
  msgid "Library"
1904
  msgstr "کتابخانه"
1905
 
1906
+ #: includes/fields/class-acf-field-file.php:231
1907
+ #: includes/fields/class-acf-field-image.php:231
1908
+ #: pro/fields/class-acf-field-gallery.php:671
1909
  msgid "Limit the media library choice"
1910
  msgstr "محدود کردن انتخاب کتابخانه چندرسانه ای"
1911
 
1912
+ #: includes/fields/class-acf-field-file.php:236
1913
+ #: includes/fields/class-acf-field-image.php:236
1914
  #: includes/locations/class-acf-location-attachment.php:101
1915
  #: includes/locations/class-acf-location-comment.php:79
1916
  #: includes/locations/class-acf-location-nav-menu.php:102
1918
  #: includes/locations/class-acf-location-user-form.php:87
1919
  #: includes/locations/class-acf-location-user-role.php:111
1920
  #: includes/locations/class-acf-location-widget.php:83
1921
+ #: pro/fields/class-acf-field-gallery.php:676
1922
  msgid "All"
1923
  msgstr "همه"
1924
 
1925
+ #: includes/fields/class-acf-field-file.php:237
1926
+ #: includes/fields/class-acf-field-image.php:237
1927
+ #: pro/fields/class-acf-field-gallery.php:677
1928
  msgid "Uploaded to post"
1929
  msgstr "بارگذاری شده در نوشته"
1930
 
1931
+ #: includes/fields/class-acf-field-file.php:244
1932
+ #: includes/fields/class-acf-field-image.php:244
1933
+ #: pro/fields/class-acf-field-gallery.php:684
1934
  msgid "Minimum"
1935
  msgstr "کمترین"
1936
 
 
1937
  #: includes/fields/class-acf-field-file.php:245
1938
+ #: includes/fields/class-acf-field-file.php:256
1939
  msgid "Restrict which files can be uploaded"
1940
  msgstr "محدودیت در آپلود فایل ها"
1941
 
1942
+ #: includes/fields/class-acf-field-file.php:255
1943
+ #: includes/fields/class-acf-field-image.php:273
1944
+ #: pro/fields/class-acf-field-gallery.php:713
1945
  msgid "Maximum"
1946
  msgstr "بیشترین"
1947
 
1948
+ #: includes/fields/class-acf-field-file.php:266
1949
+ #: includes/fields/class-acf-field-image.php:302
1950
+ #: pro/fields/class-acf-field-gallery.php:742
1951
  msgid "Allowed file types"
1952
  msgstr "انواع مجاز فایل"
1953
 
1954
+ #: includes/fields/class-acf-field-file.php:267
1955
+ #: includes/fields/class-acf-field-image.php:303
1956
+ #: pro/fields/class-acf-field-gallery.php:743
1957
  msgid "Comma separated list. Leave blank for all types"
1958
  msgstr "با کامای انگلیسی جدا کرده یا برای عدم محدودیت خالی بگذارید"
1959
 
1961
  msgid "Google Map"
1962
  msgstr "نقشه گوگل"
1963
 
1964
+ #: includes/fields/class-acf-field-google-map.php:59
 
 
 
 
1965
  msgid "Sorry, this browser does not support geolocation"
1966
  msgstr "با عرض پوزش، این مرورگر از موقعیت یابی جغرافیایی پشتیبانی نمی کند"
1967
 
1968
+ #: includes/fields/class-acf-field-google-map.php:165
1969
  msgid "Clear location"
1970
  msgstr "حذف مکان"
1971
 
1972
+ #: includes/fields/class-acf-field-google-map.php:166
1973
  msgid "Find current location"
1974
  msgstr "پیدا کردن مکان فعلی"
1975
 
1976
+ #: includes/fields/class-acf-field-google-map.php:169
1977
  msgid "Search for address..."
1978
  msgstr "جستجو برای آدرس . . ."
1979
 
1980
+ #: includes/fields/class-acf-field-google-map.php:199
1981
+ #: includes/fields/class-acf-field-google-map.php:210
1982
  msgid "Center"
1983
  msgstr "مرکز"
1984
 
1985
+ #: includes/fields/class-acf-field-google-map.php:200
1986
+ #: includes/fields/class-acf-field-google-map.php:211
1987
  msgid "Center the initial map"
1988
  msgstr "نقشه اولیه را وسط قرار بده"
1989
 
1990
+ #: includes/fields/class-acf-field-google-map.php:222
1991
  msgid "Zoom"
1992
  msgstr "بزرگنمایی"
1993
 
1994
+ #: includes/fields/class-acf-field-google-map.php:223
1995
  msgid "Set the initial zoom level"
1996
  msgstr "تعین مقدار بزرگنمایی اولیه"
1997
 
1998
+ #: includes/fields/class-acf-field-google-map.php:232
1999
+ #: includes/fields/class-acf-field-image.php:256
2000
+ #: includes/fields/class-acf-field-image.php:285
2001
+ #: includes/fields/class-acf-field-oembed.php:268
2002
+ #: pro/fields/class-acf-field-gallery.php:696
2003
+ #: pro/fields/class-acf-field-gallery.php:725
2004
  msgid "Height"
2005
  msgstr "ارتفاع"
2006
 
2007
+ #: includes/fields/class-acf-field-google-map.php:233
2008
  msgid "Customise the map height"
2009
  msgstr "سفارشی کردن ارتفاع نقشه"
2010
 
2013
  msgstr "گروه"
2014
 
2015
  #: includes/fields/class-acf-field-group.php:459
2016
+ #: pro/fields/class-acf-field-repeater.php:379
2017
  msgid "Sub Fields"
2018
  msgstr "زمینه های زیرمجموعه"
2019
 
2020
  #: includes/fields/class-acf-field-group.php:475
2021
+ #: pro/fields/class-acf-field-clone.php:844
2022
  msgid "Specify the style used to render the selected fields"
2023
  msgstr "استایل جهت نمایش فیلد انتخابی"
2024
 
2025
  #: includes/fields/class-acf-field-group.php:480
2026
+ #: pro/fields/class-acf-field-clone.php:849
2027
+ #: pro/fields/class-acf-field-flexible-content.php:627
2028
+ #: pro/fields/class-acf-field-repeater.php:451
2029
  msgid "Block"
2030
  msgstr "بلوک"
2031
 
2032
  #: includes/fields/class-acf-field-group.php:481
2033
+ #: pro/fields/class-acf-field-clone.php:850
2034
+ #: pro/fields/class-acf-field-flexible-content.php:626
2035
+ #: pro/fields/class-acf-field-repeater.php:450
2036
  msgid "Table"
2037
  msgstr "جدول"
2038
 
2039
  #: includes/fields/class-acf-field-group.php:482
2040
+ #: pro/fields/class-acf-field-clone.php:851
2041
+ #: pro/fields/class-acf-field-flexible-content.php:628
2042
+ #: pro/fields/class-acf-field-repeater.php:452
2043
  msgid "Row"
2044
  msgstr "سطر"
2045
 
2047
  msgid "Image"
2048
  msgstr "تصویر"
2049
 
2050
+ #: includes/fields/class-acf-field-image.php:64
2051
  msgid "Select Image"
2052
  msgstr "انتخاب تصویر"
2053
 
2054
+ #: includes/fields/class-acf-field-image.php:65
 
2055
  msgid "Edit Image"
2056
  msgstr "ویرایش تصویر"
2057
 
2058
+ #: includes/fields/class-acf-field-image.php:66
 
2059
  msgid "Update Image"
2060
  msgstr "بروزرسانی تصویر"
2061
 
2062
+ #: includes/fields/class-acf-field-image.php:157
 
 
 
 
2063
  msgid "No image selected"
2064
  msgstr "هیچ تصویری انتخاب نشده"
2065
 
2066
+ #: includes/fields/class-acf-field-image.php:157
2067
  msgid "Add Image"
2068
  msgstr "افزودن تصویر"
2069
 
2070
+ #: includes/fields/class-acf-field-image.php:211
2071
  msgid "Image Array"
2072
  msgstr "آرایه تصاویر"
2073
 
2074
+ #: includes/fields/class-acf-field-image.php:212
2075
  msgid "Image URL"
2076
  msgstr "آدرس تصویر"
2077
 
2078
+ #: includes/fields/class-acf-field-image.php:213
2079
  msgid "Image ID"
2080
  msgstr "شناسه(ID) تصویر"
2081
 
2082
+ #: includes/fields/class-acf-field-image.php:220
2083
  msgid "Preview Size"
2084
  msgstr "اندازه پیش نمایش"
2085
 
2086
+ #: includes/fields/class-acf-field-image.php:221
2087
  msgid "Shown when entering data"
2088
  msgstr "هنگام وارد کردن داده ها نمایش داده می شود"
2089
 
2090
+ #: includes/fields/class-acf-field-image.php:245
2091
+ #: includes/fields/class-acf-field-image.php:274
2092
+ #: pro/fields/class-acf-field-gallery.php:685
2093
+ #: pro/fields/class-acf-field-gallery.php:714
2094
  msgid "Restrict which images can be uploaded"
2095
  msgstr "محدودیت در آپلود تصاویر"
2096
 
2097
+ #: includes/fields/class-acf-field-image.php:248
2098
+ #: includes/fields/class-acf-field-image.php:277
2099
+ #: includes/fields/class-acf-field-oembed.php:257
2100
+ #: pro/fields/class-acf-field-gallery.php:688
2101
+ #: pro/fields/class-acf-field-gallery.php:717
2102
  msgid "Width"
2103
  msgstr "عرض"
2104
 
2166
  msgstr "شماره"
2167
 
2168
  #: includes/fields/class-acf-field-number.php:163
2169
+ #: includes/fields/class-acf-field-range.php:155
2170
  msgid "Minimum Value"
2171
  msgstr "حداقل مقدار"
2172
 
2173
  #: includes/fields/class-acf-field-number.php:172
2174
+ #: includes/fields/class-acf-field-range.php:165
2175
  msgid "Maximum Value"
2176
  msgstr "حداکثر مقدار"
2177
 
2178
  #: includes/fields/class-acf-field-number.php:181
2179
+ #: includes/fields/class-acf-field-range.php:175
2180
  msgid "Step Size"
2181
  msgstr "اندازه مرحله"
2182
 
2198
  msgid "oEmbed"
2199
  msgstr "oEmbed"
2200
 
2201
+ #: includes/fields/class-acf-field-oembed.php:216
2202
  msgid "Enter URL"
2203
  msgstr "آدرس را وارد کنید"
2204
 
2205
+ #: includes/fields/class-acf-field-oembed.php:254
2206
+ #: includes/fields/class-acf-field-oembed.php:265
 
 
 
 
 
 
 
 
 
2207
  msgid "Embed Size"
2208
  msgstr "اندازه جانمایی"
2209
 
2213
 
2214
  #: includes/fields/class-acf-field-page_link.php:269
2215
  #: includes/fields/class-acf-field-post_object.php:268
2216
+ #: includes/fields/class-acf-field-taxonomy.php:961
2217
  msgid "Parent"
2218
  msgstr "مادر"
2219
 
2220
  #: includes/fields/class-acf-field-page_link.php:485
2221
  #: includes/fields/class-acf-field-post_object.php:384
2222
+ #: includes/fields/class-acf-field-relationship.php:641
2223
  msgid "Filter by Post Type"
2224
  msgstr "فیلتر با نوع نوشته"
2225
 
2226
  #: includes/fields/class-acf-field-page_link.php:493
2227
  #: includes/fields/class-acf-field-post_object.php:392
2228
+ #: includes/fields/class-acf-field-relationship.php:649
2229
  msgid "All post types"
2230
  msgstr "تمام انواع نوشته"
2231
 
2232
  #: includes/fields/class-acf-field-page_link.php:499
2233
  #: includes/fields/class-acf-field-post_object.php:398
2234
+ #: includes/fields/class-acf-field-relationship.php:655
2235
  msgid "Filter by Taxonomy"
2236
  msgstr "فیلتر با طبقه بندی"
2237
 
2238
  #: includes/fields/class-acf-field-page_link.php:507
2239
  #: includes/fields/class-acf-field-post_object.php:406
2240
+ #: includes/fields/class-acf-field-relationship.php:663
2241
  msgid "All taxonomies"
2242
  msgstr "تمام طبقه بندی ها"
2243
 
2247
 
2248
  #: includes/fields/class-acf-field-page_link.php:533
2249
  #: includes/fields/class-acf-field-post_object.php:422
2250
+ #: includes/fields/class-acf-field-select.php:387
2251
+ #: includes/fields/class-acf-field-user.php:419
2252
  msgid "Select multiple values?"
2253
  msgstr "آیا چندین مقدار انتخاب شوند؟"
2254
 
2258
 
2259
  #: includes/fields/class-acf-field-post_object.php:25
2260
  #: includes/fields/class-acf-field-post_object.php:437
2261
+ #: includes/fields/class-acf-field-relationship.php:720
2262
  msgid "Post Object"
2263
  msgstr "آبجکت یک نوشته"
2264
 
2265
  #: includes/fields/class-acf-field-post_object.php:438
2266
+ #: includes/fields/class-acf-field-relationship.php:721
2267
  msgid "Post ID"
2268
  msgstr "شناسه(ID) نوشته"
2269
 
2295
  msgid "Relationship"
2296
  msgstr "ارتباط"
2297
 
2298
+ #: includes/fields/class-acf-field-relationship.php:62
 
 
 
 
2299
  msgid "Maximum values reached ( {max} values )"
2300
  msgstr "مقادیر به حداکثر رسیده اند ( {max} آیتم )"
2301
 
2302
+ #: includes/fields/class-acf-field-relationship.php:63
2303
  msgid "Loading"
2304
  msgstr "درحال خواندن"
2305
 
2306
+ #: includes/fields/class-acf-field-relationship.php:64
2307
  msgid "No matches found"
2308
  msgstr "مطابقتی یافت نشد"
2309
 
2310
+ #: includes/fields/class-acf-field-relationship.php:441
2311
  msgid "Select post type"
2312
  msgstr "انتحاب نوع نوشته"
2313
 
2314
+ #: includes/fields/class-acf-field-relationship.php:467
2315
  msgid "Select taxonomy"
2316
  msgstr "انتخاب طبقه بندی"
2317
 
2318
+ #: includes/fields/class-acf-field-relationship.php:557
2319
  msgid "Search..."
2320
  msgstr "جستجو . . ."
2321
 
2322
+ #: includes/fields/class-acf-field-relationship.php:669
2323
  msgid "Filters"
2324
  msgstr "فیلترها"
2325
 
2326
+ #: includes/fields/class-acf-field-relationship.php:675
2327
  #: includes/locations/class-acf-location-post-type.php:27
2328
  msgid "Post Type"
2329
  msgstr "نوع نوشته"
2330
 
2331
+ #: includes/fields/class-acf-field-relationship.php:676
2332
  #: includes/fields/class-acf-field-taxonomy.php:28
2333
+ #: includes/fields/class-acf-field-taxonomy.php:754
2334
+ #: includes/locations/class-acf-location-taxonomy.php:27
2335
  msgid "Taxonomy"
2336
  msgstr "طبقه بندی"
2337
 
2338
+ #: includes/fields/class-acf-field-relationship.php:683
2339
  msgid "Elements"
2340
  msgstr "عناصر"
2341
 
2342
+ #: includes/fields/class-acf-field-relationship.php:684
2343
  msgid "Selected elements will be displayed in each result"
2344
  msgstr "عناصر انتخاب شده در هر نتیجه نمایش داده خواهند شد"
2345
 
2346
+ #: includes/fields/class-acf-field-relationship.php:695
2347
  msgid "Minimum posts"
2348
  msgstr "حداقل تعداد نوشته‌ها"
2349
 
2350
+ #: includes/fields/class-acf-field-relationship.php:704
2351
  msgid "Maximum posts"
2352
  msgstr "حداکثر تعداد نوشته ها"
2353
 
2354
+ #: includes/fields/class-acf-field-relationship.php:808
2355
+ #: pro/fields/class-acf-field-gallery.php:815
2356
  #, php-format
2357
  msgid "%s requires at least %s selection"
2358
  msgid_plural "%s requires at least %s selections"
2359
  msgstr[0] "%s نیاز دارد به حداقل %s بخش"
2360
 
2361
  #: includes/fields/class-acf-field-select.php:25
2362
+ #: includes/fields/class-acf-field-taxonomy.php:776
2363
  msgctxt "noun"
2364
  msgid "Select"
2365
  msgstr "انتخاب"
2366
 
2367
+ #: includes/fields/class-acf-field-select.php:111
2368
  msgctxt "Select2 JS matches_1"
2369
  msgid "One result is available, press enter to select it."
2370
  msgstr "یک نتیجه موجود است برای انتخاب اینتر کنید"
2371
 
2372
+ #: includes/fields/class-acf-field-select.php:112
2373
  #, php-format
2374
  msgctxt "Select2 JS matches_n"
2375
  msgid "%d results are available, use up and down arrow keys to navigate."
2376
+ msgstr ""
2377
+ "نتایج %d در دسترس است با استفاده از کلید بالا و پایین روی آنها حرکت کنید."
2378
 
2379
+ #: includes/fields/class-acf-field-select.php:113
2380
  msgctxt "Select2 JS matches_0"
2381
  msgid "No matches found"
2382
  msgstr "مشابهی یافت نشد"
2383
 
2384
+ #: includes/fields/class-acf-field-select.php:114
2385
  msgctxt "Select2 JS input_too_short_1"
2386
  msgid "Please enter 1 or more characters"
2387
  msgstr "یک یا چند حرف وارد کنید"
2388
 
2389
+ #: includes/fields/class-acf-field-select.php:115
2390
  #, php-format
2391
  msgctxt "Select2 JS input_too_short_n"
2392
  msgid "Please enter %d or more characters"
2393
  msgstr "لطفا %d یا چند کاراکتر دیگر وارد کنید"
2394
 
2395
+ #: includes/fields/class-acf-field-select.php:116
2396
  msgctxt "Select2 JS input_too_long_1"
2397
  msgid "Please delete 1 character"
2398
  msgstr "یک حرف را حذف کنید"
2399
 
2400
+ #: includes/fields/class-acf-field-select.php:117
2401
  #, php-format
2402
  msgctxt "Select2 JS input_too_long_n"
2403
  msgid "Please delete %d characters"
2404
  msgstr "لطفا %d کاراکتر را حذف کنید"
2405
 
2406
+ #: includes/fields/class-acf-field-select.php:118
2407
  msgctxt "Select2 JS selection_too_long_1"
2408
  msgid "You can only select 1 item"
2409
  msgstr "فقط می توانید یک آیتم را انتخاب کنید"
2410
 
2411
+ #: includes/fields/class-acf-field-select.php:119
2412
  #, php-format
2413
  msgctxt "Select2 JS selection_too_long_n"
2414
  msgid "You can only select %d items"
2415
  msgstr "شما فقط می توانید %d مورد را انتخاب کنید"
2416
 
2417
+ #: includes/fields/class-acf-field-select.php:120
2418
  msgctxt "Select2 JS load_more"
2419
  msgid "Loading more results&hellip;"
2420
  msgstr "بارگذاری نتایج بیشتر&hellip;"
2421
 
2422
+ #: includes/fields/class-acf-field-select.php:121
2423
  msgctxt "Select2 JS searching"
2424
  msgid "Searching&hellip;"
2425
  msgstr "جستجو &hellip;"
2426
 
2427
+ #: includes/fields/class-acf-field-select.php:122
2428
  msgctxt "Select2 JS load_fail"
2429
  msgid "Loading failed"
2430
  msgstr "خطا در فراخوانی داده ها"
2431
 
2432
+ #: includes/fields/class-acf-field-select.php:397
 
 
 
 
 
2433
  #: includes/fields/class-acf-field-true_false.php:144
2434
  msgid "Stylised UI"
2435
  msgstr "ظاهر بهینه شده"
2436
 
2437
+ #: includes/fields/class-acf-field-select.php:407
2438
  msgid "Use AJAX to lazy load choices?"
2439
  msgstr "از ایجکس برای خواندن گزینه های استفاده شود؟"
2440
 
2441
+ #: includes/fields/class-acf-field-select.php:423
2442
  msgid "Specify the value returned"
2443
  msgstr "مقدار بازگشتی را انتخاب کنید"
2444
 
2454
  msgid "Placement"
2455
  msgstr "جانمایی"
2456
 
 
 
 
 
2457
  #: includes/fields/class-acf-field-tab.php:115
2458
+ msgid ""
2459
+ "Define an endpoint for the previous tabs to stop. This will start a new "
2460
+ "group of tabs."
2461
+ msgstr ""
2462
+ "یک نقطه پایانی برای توقف زبانه قبلی تعریف کنید. این کار باعث می‌شود گروه "
2463
+ "جدیدی از زبانه‌ها ایجاد شود."
2464
 
2465
+ #: includes/fields/class-acf-field-taxonomy.php:714
2466
  #, php-format
2467
  msgctxt "No terms"
2468
  msgid "No %s"
2469
  msgstr "بدون %s"
2470
 
2471
+ #: includes/fields/class-acf-field-taxonomy.php:755
 
 
 
 
2472
  msgid "Select the taxonomy to be displayed"
2473
  msgstr "طبقه‌بندی را برای برون بری انتخاب کنید"
2474
 
2475
+ #: includes/fields/class-acf-field-taxonomy.php:764
2476
  msgid "Appearance"
2477
  msgstr "ظاهر"
2478
 
2479
+ #: includes/fields/class-acf-field-taxonomy.php:765
2480
  msgid "Select the appearance of this field"
2481
  msgstr "ظاهر این زمینه را مشخص کنید"
2482
 
2483
+ #: includes/fields/class-acf-field-taxonomy.php:770
2484
  msgid "Multiple Values"
2485
  msgstr "چندین مقدار"
2486
 
2487
+ #: includes/fields/class-acf-field-taxonomy.php:772
2488
  msgid "Multi Select"
2489
  msgstr "چندین انتخاب"
2490
 
2491
+ #: includes/fields/class-acf-field-taxonomy.php:774
2492
  msgid "Single Value"
2493
  msgstr "تک مقدار"
2494
 
2495
+ #: includes/fields/class-acf-field-taxonomy.php:775
2496
  msgid "Radio Buttons"
2497
  msgstr "دکمه های رادیویی"
2498
 
2499
+ #: includes/fields/class-acf-field-taxonomy.php:799
2500
  msgid "Create Terms"
2501
  msgstr "ساخت آیتم (ترم)"
2502
 
2503
+ #: includes/fields/class-acf-field-taxonomy.php:800
2504
  msgid "Allow new terms to be created whilst editing"
2505
  msgstr "اجازه به ساخت آیتم‌ها(ترم‌ها) جدید در زمان ویرایش"
2506
 
2507
+ #: includes/fields/class-acf-field-taxonomy.php:809
2508
  msgid "Save Terms"
2509
  msgstr "ذخیره ترم ها"
2510
 
2511
+ #: includes/fields/class-acf-field-taxonomy.php:810
2512
  msgid "Connect selected terms to the post"
2513
  msgstr "الصاق آیتم های انتخابی به نوشته"
2514
 
2515
+ #: includes/fields/class-acf-field-taxonomy.php:819
2516
  msgid "Load Terms"
2517
  msgstr "خواندن ترم ها"
2518
 
2519
+ #: includes/fields/class-acf-field-taxonomy.php:820
2520
  msgid "Load value from posts terms"
2521
  msgstr "خواندن مقادیر از ترم های نوشته"
2522
 
2523
+ #: includes/fields/class-acf-field-taxonomy.php:834
2524
  msgid "Term Object"
2525
  msgstr "به صورت آبجکت"
2526
 
2527
+ #: includes/fields/class-acf-field-taxonomy.php:835
2528
  msgid "Term ID"
2529
  msgstr "شناسه(ID) آیتم(ترم)"
2530
 
2531
+ #: includes/fields/class-acf-field-taxonomy.php:885
2532
  #, php-format
2533
  msgid "User unable to add new %s"
2534
  msgstr "کاربر قادر به اضافه کردن%s جدید نیست"
2535
 
2536
+ #: includes/fields/class-acf-field-taxonomy.php:895
2537
  #, php-format
2538
  msgid "%s already exists"
2539
  msgstr "%s هم اکنون موجود است"
2540
 
2541
+ #: includes/fields/class-acf-field-taxonomy.php:927
2542
  #, php-format
2543
  msgid "%s added"
2544
  msgstr "%s اضافه شد"
2545
 
2546
+ #: includes/fields/class-acf-field-taxonomy.php:973
2547
  msgid "Add"
2548
  msgstr "افزودن"
2549
 
2581
  msgid "True / False"
2582
  msgstr "صحیح / غلط"
2583
 
 
 
 
 
 
 
 
 
 
 
 
 
2584
  #: includes/fields/class-acf-field-true_false.php:127
2585
  msgid "Displays text alongside the checkbox"
2586
  msgstr "نمایش متن همراه انتخاب"
2593
  msgid "Text shown when active"
2594
  msgstr "نمایش متن در زمان فعال بودن"
2595
 
2596
+ #: includes/fields/class-acf-field-true_false.php:170
2597
  msgid "Off Text"
2598
  msgstr "بدون متن"
2599
 
2600
+ #: includes/fields/class-acf-field-true_false.php:171
2601
  msgid "Text shown when inactive"
2602
  msgstr "نمایش متن در زمان غیر فعال بودن"
2603
 
2613
  msgid "User"
2614
  msgstr "کاربر"
2615
 
2616
+ #: includes/fields/class-acf-field-user.php:394
2617
  msgid "Filter by role"
2618
  msgstr "تفکیک با نقش"
2619
 
2620
+ #: includes/fields/class-acf-field-user.php:402
2621
  msgid "All user roles"
2622
  msgstr "تمام نقش های کاربر"
2623
 
2624
+ #: includes/fields/class-acf-field-user.php:433
2625
+ msgid "User Array"
2626
+ msgstr "آرایه کاربر"
2627
+
2628
+ #: includes/fields/class-acf-field-user.php:434
2629
+ msgid "User Object"
2630
+ msgstr "آبجکت کاربر"
2631
+
2632
+ #: includes/fields/class-acf-field-user.php:435
2633
+ msgid "User ID"
2634
+ msgstr "شناسه کاربر"
2635
+
2636
  #: includes/fields/class-acf-field-wysiwyg.php:25
2637
  msgid "Wysiwyg Editor"
2638
  msgstr "ویرایشگر دیداری"
2639
 
2640
+ #: includes/fields/class-acf-field-wysiwyg.php:346
2641
  msgid "Visual"
2642
  msgstr "بصری"
2643
 
2644
+ #: includes/fields/class-acf-field-wysiwyg.php:347
2645
  msgctxt "Name for the Text editor tab (formerly HTML)"
2646
  msgid "Text"
2647
  msgstr "متن"
2648
 
2649
+ #: includes/fields/class-acf-field-wysiwyg.php:353
2650
  msgid "Click to initialize TinyMCE"
2651
  msgstr "برای اجرای TinyMCE کلیک کنید"
2652
 
2653
+ #: includes/fields/class-acf-field-wysiwyg.php:406
2654
  msgid "Tabs"
2655
  msgstr "تب ها"
2656
 
2657
+ #: includes/fields/class-acf-field-wysiwyg.php:411
2658
  msgid "Visual & Text"
2659
  msgstr "بصری و متنی"
2660
 
2661
+ #: includes/fields/class-acf-field-wysiwyg.php:412
2662
  msgid "Visual Only"
2663
  msgstr "فقط بصری"
2664
 
2665
+ #: includes/fields/class-acf-field-wysiwyg.php:413
2666
  msgid "Text Only"
2667
  msgstr "فقط متن"
2668
 
2669
+ #: includes/fields/class-acf-field-wysiwyg.php:420
2670
  msgid "Toolbar"
2671
  msgstr "نوار ابزار"
2672
 
2673
+ #: includes/fields/class-acf-field-wysiwyg.php:435
2674
  msgid "Show Media Upload Buttons?"
2675
  msgstr "آیا دکمه های بارگذاری رسانه نمایش داده شوند؟"
2676
 
2677
+ #: includes/fields/class-acf-field-wysiwyg.php:445
2678
  msgid "Delay initialization?"
2679
  msgstr "نمایش با تاخیر؟"
2680
 
2681
+ #: includes/fields/class-acf-field-wysiwyg.php:446
2682
  msgid "TinyMCE will not be initalized until field is clicked"
2683
  msgstr "تا زمانی که روی فیلد کلیک نشود TinyMCE اجرا نخواهد شد"
2684
 
2685
+ #: includes/forms/form-comment.php:166 includes/forms/form-post.php:305
2686
  #: pro/admin/admin-options-page.php:308
2687
  msgid "Edit field group"
2688
  msgstr "ویرایش گروه زمینه"
2691
  msgid "Validate Email"
2692
  msgstr "اعتبار سنجی ایمیل"
2693
 
2694
+ #: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:588
2695
+ #: pro/options-page.php:81
2696
  msgid "Update"
2697
  msgstr "بروزرسانی"
2698
 
2704
  msgid "Spam Detected"
2705
  msgstr "اسپم تشخیص داده شد"
2706
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2707
  #: includes/locations.php:93 includes/locations/class-acf-location-post.php:27
2708
  msgid "Post"
2709
  msgstr "نوشته"
2716
  msgid "Forms"
2717
  msgstr "فرم ها"
2718
 
2719
+ #: includes/locations.php:247
2720
+ msgid "is equal to"
2721
+ msgstr "برابر شود با"
2722
+
2723
+ #: includes/locations.php:248
2724
+ msgid "is not equal to"
2725
+ msgstr "برابر نشود با"
2726
+
2727
  #: includes/locations/class-acf-location-attachment.php:27
2728
  msgid "Attachment"
2729
  msgstr "پیوست"
2794
  msgid "Page Type"
2795
  msgstr "نوع برگه"
2796
 
2797
+ #: includes/locations/class-acf-location-page-type.php:146
2798
  msgid "Front Page"
2799
  msgstr "برگه نخست"
2800
 
2801
+ #: includes/locations/class-acf-location-page-type.php:147
2802
  msgid "Posts Page"
2803
  msgstr "برگه ی نوشته ها"
2804
 
2805
+ #: includes/locations/class-acf-location-page-type.php:148
2806
  msgid "Top Level Page (no parent)"
2807
  msgstr "بالاترین سطح برگه(بدون والد)"
2808
 
2809
+ #: includes/locations/class-acf-location-page-type.php:149
2810
  msgid "Parent Page (has children)"
2811
  msgstr "برگه مادر (دارای زیر مجموعه)"
2812
 
2813
+ #: includes/locations/class-acf-location-page-type.php:150
2814
  msgid "Child Page (has parent)"
2815
  msgstr "برگه زیر مجموعه (دارای مادر)"
2816
 
2834
  msgid "Post Template"
2835
  msgstr "قالب نوشته"
2836
 
 
 
 
 
2837
  #: includes/locations/class-acf-location-user-form.php:27
2838
  msgid "User Form"
2839
  msgstr "فرم کاربر"
2854
  msgid "Widget"
2855
  msgstr "ابزارک"
2856
 
 
 
 
 
 
 
 
 
 
 
2857
  #: includes/validation.php:364
2858
  #, php-format
2859
  msgid "%s value is required"
2870
 
2871
  #: pro/admin/admin-options-page.php:206
2872
  #, php-format
2873
+ msgid ""
2874
+ "No Custom Field Groups found for this options page. <a href=\"%s\">Create a "
2875
+ "Custom Field Group</a>"
2876
+ msgstr ""
2877
+ "هیچ گروه زمینه دلخواهی برای این صفحه تنظیمات یافت نشد. <a href=\"%s\">ساخت "
2878
+ "گروه زمینه دلخواه</a>"
2879
 
2880
  #: pro/admin/admin-settings-updates.php:78
2881
  msgid "<b>Error</b>. Could not connect to update server"
2900
 
2901
  #: pro/admin/views/html-settings-updates.php:20
2902
  #, php-format
2903
+ msgid ""
2904
+ "To unlock updates, please enter your license key below. If you don't have a "
2905
+ "licence key, please see <a href=\"%s\" target=\"_blank\">details & pricing</"
2906
+ "a>."
2907
+ msgstr ""
2908
+ "برای به روزرسانی لطفا کد لایسنس را وارد کنید. <a href=\"%s\" target=\"_blank"
2909
+ "\">قیمت ها</a>."
2910
 
2911
  #: pro/admin/views/html-settings-updates.php:29
2912
  msgid "License Key"
2949
  msgid "Clone"
2950
  msgstr "کپی (هیچ)"
2951
 
2952
+ #: pro/fields/class-acf-field-clone.php:812
2953
  msgid "Select one or more fields you wish to clone"
2954
  msgstr "انتخاب فیلد دیگری برای کپی"
2955
 
2956
+ #: pro/fields/class-acf-field-clone.php:829
2957
  msgid "Display"
2958
  msgstr "نمایش"
2959
 
2960
+ #: pro/fields/class-acf-field-clone.php:830
2961
  msgid "Specify the style used to render the clone field"
2962
  msgstr "مشخص کردن استایل مورد نظر در نمایش دسته فیلدها"
2963
 
2964
+ #: pro/fields/class-acf-field-clone.php:835
2965
  msgid "Group (displays selected fields in a group within this field)"
2966
  msgstr "گروه ها(نمایش فیلدهای انتخابی در یک گروه با این فیلد)"
2967
 
2968
+ #: pro/fields/class-acf-field-clone.php:836
2969
  msgid "Seamless (replaces this field with selected fields)"
2970
  msgstr "بدون مانند (جایگزینی این فیلد با فیلدهای انتخابی)"
2971
 
2972
+ #: pro/fields/class-acf-field-clone.php:857
2973
  #, php-format
2974
  msgid "Labels will be displayed as %s"
2975
  msgstr "برچسب ها نمایش داده شوند به صورت %s"
2976
 
2977
+ #: pro/fields/class-acf-field-clone.php:860
2978
  msgid "Prefix Field Labels"
2979
  msgstr "پیشوند پرچسب فیلدها"
2980
 
2981
+ #: pro/fields/class-acf-field-clone.php:871
2982
  #, php-format
2983
  msgid "Values will be saved as %s"
2984
  msgstr "مقادیر ذخیره خواهند شد به صورت %s"
2985
 
2986
+ #: pro/fields/class-acf-field-clone.php:874
2987
  msgid "Prefix Field Names"
2988
  msgstr "پیشوند نام فایل ها"
2989
 
2990
+ #: pro/fields/class-acf-field-clone.php:992
2991
  msgid "Unknown field"
2992
  msgstr "فیلد ناشناس"
2993
 
2994
+ #: pro/fields/class-acf-field-clone.php:1031
2995
  msgid "Unknown field group"
2996
  msgstr "گروه ناشناس"
2997
 
2998
+ #: pro/fields/class-acf-field-clone.php:1035
2999
  #, php-format
3000
  msgid "All fields from %s field group"
3001
  msgstr "تمام فیلدها از %s گروه فیلد"
3002
 
3003
  #: pro/fields/class-acf-field-flexible-content.php:31
3004
+ #: pro/fields/class-acf-field-repeater.php:193
3005
+ #: pro/fields/class-acf-field-repeater.php:463
3006
  msgid "Add Row"
3007
  msgstr "سطر جدید"
3008
 
3009
+ #: pro/fields/class-acf-field-flexible-content.php:73
3010
+ #: pro/fields/class-acf-field-flexible-content.php:938
3011
+ #: pro/fields/class-acf-field-flexible-content.php:1020
3012
+ #, fuzzy
3013
  msgid "layout"
3014
+ msgid_plural "layouts"
3015
+ msgstr[0] "طرح"
3016
 
3017
+ #: pro/fields/class-acf-field-flexible-content.php:74
3018
  msgid "layouts"
3019
  msgstr "طرح ها"
3020
 
3021
+ #: pro/fields/class-acf-field-flexible-content.php:77
3022
+ #: pro/fields/class-acf-field-flexible-content.php:937
3023
+ #: pro/fields/class-acf-field-flexible-content.php:1019
 
 
 
 
 
 
 
 
 
 
3024
  msgid "This field requires at least {min} {label} {identifier}"
3025
  msgstr "این زمینه لازم دارد {min} {label} {identifier}"
3026
 
3027
+ #: pro/fields/class-acf-field-flexible-content.php:78
3028
+ msgid "This field has a limit of {max} {label} {identifier}"
3029
+ msgstr "این گزینه محدود است به {max} {label} {identifier}"
3030
 
3031
+ #: pro/fields/class-acf-field-flexible-content.php:81
3032
  msgid "{available} {label} {identifier} available (max {max})"
3033
  msgstr "{available} {label} {identifier} موجود است (حداکثر {max})"
3034
 
3035
+ #: pro/fields/class-acf-field-flexible-content.php:82
3036
  msgid "{required} {label} {identifier} required (min {min})"
3037
  msgstr "{required} {label} {identifier} لازم دارد (حداقل {min})"
3038
 
3039
+ #: pro/fields/class-acf-field-flexible-content.php:85
3040
  msgid "Flexible Content requires at least 1 layout"
3041
  msgstr "زمینه محتوای انعطاف پذیر حداقل به یک طرح نیاز دارد"
3042
 
3043
+ #: pro/fields/class-acf-field-flexible-content.php:302
3044
  #, php-format
3045
  msgid "Click the \"%s\" button below to start creating your layout"
3046
  msgstr "روی دکمه \"%s\" دز زیر کلیک کنید تا چیدمان خود را بسازید"
3047
 
3048
+ #: pro/fields/class-acf-field-flexible-content.php:427
3049
  msgid "Add layout"
3050
  msgstr "طرح جدید"
3051
 
3052
+ #: pro/fields/class-acf-field-flexible-content.php:428
3053
  msgid "Remove layout"
3054
  msgstr "حذف طرح"
3055
 
3056
+ #: pro/fields/class-acf-field-flexible-content.php:429
3057
+ #: pro/fields/class-acf-field-repeater.php:296
3058
  msgid "Click to toggle"
3059
  msgstr "کلیک برای انتخاب"
3060
 
3061
+ #: pro/fields/class-acf-field-flexible-content.php:569
3062
  msgid "Reorder Layout"
3063
  msgstr "ترتیب بندی طرح ها"
3064
 
3065
+ #: pro/fields/class-acf-field-flexible-content.php:569
3066
  msgid "Reorder"
3067
  msgstr "مرتب سازی"
3068
 
3069
+ #: pro/fields/class-acf-field-flexible-content.php:570
3070
  msgid "Delete Layout"
3071
  msgstr "حذف طرح"
3072
 
3073
+ #: pro/fields/class-acf-field-flexible-content.php:571
3074
  msgid "Duplicate Layout"
3075
  msgstr "تکثیر طرح"
3076
 
3077
+ #: pro/fields/class-acf-field-flexible-content.php:572
3078
  msgid "Add New Layout"
3079
  msgstr "افزودن طرح جدید"
3080
 
3081
+ #: pro/fields/class-acf-field-flexible-content.php:643
3082
  msgid "Min"
3083
  msgstr "حداقل"
3084
 
3085
+ #: pro/fields/class-acf-field-flexible-content.php:656
3086
  msgid "Max"
3087
  msgstr "حداکثر"
3088
 
3089
+ #: pro/fields/class-acf-field-flexible-content.php:683
3090
+ #: pro/fields/class-acf-field-repeater.php:459
3091
  msgid "Button Label"
3092
  msgstr "متن دکمه"
3093
 
3094
+ #: pro/fields/class-acf-field-flexible-content.php:692
3095
  msgid "Minimum Layouts"
3096
  msgstr "حداقل تعداد طرح ها"
3097
 
3098
+ #: pro/fields/class-acf-field-flexible-content.php:701
3099
  msgid "Maximum Layouts"
3100
  msgstr "حداکثر تعداد طرح ها"
3101
 
3102
+ #: pro/fields/class-acf-field-gallery.php:71
3103
  msgid "Add Image to Gallery"
3104
  msgstr "افزودن تصویر به گالری"
3105
 
3106
+ #: pro/fields/class-acf-field-gallery.php:72
3107
  msgid "Maximum selection reached"
3108
  msgstr "بیشترین حد انتخاب شده است"
3109
 
3110
+ #: pro/fields/class-acf-field-gallery.php:336
3111
  msgid "Length"
3112
  msgstr "طول"
3113
 
3114
+ #: pro/fields/class-acf-field-gallery.php:379
3115
  msgid "Caption"
3116
  msgstr "متن"
3117
 
3118
+ #: pro/fields/class-acf-field-gallery.php:388
3119
  msgid "Alt Text"
3120
  msgstr "متن جایگزین"
3121
 
3122
+ #: pro/fields/class-acf-field-gallery.php:559
3123
  msgid "Add to gallery"
3124
  msgstr "اضافه به گالری"
3125
 
3126
+ #: pro/fields/class-acf-field-gallery.php:563
3127
  msgid "Bulk actions"
3128
  msgstr "کارهای گروهی"
3129
 
3130
+ #: pro/fields/class-acf-field-gallery.php:564
3131
  msgid "Sort by date uploaded"
3132
  msgstr "به ترتیب تاریخ آپلود"
3133
 
3134
+ #: pro/fields/class-acf-field-gallery.php:565
3135
  msgid "Sort by date modified"
3136
  msgstr "به ترتیب تاریخ اعمال تغییرات"
3137
 
3138
+ #: pro/fields/class-acf-field-gallery.php:566
3139
  msgid "Sort by title"
3140
  msgstr "به ترتیب عنوان"
3141
 
3142
+ #: pro/fields/class-acf-field-gallery.php:567
3143
  msgid "Reverse current order"
3144
  msgstr "معکوس سازی ترتیب کنونی"
3145
 
3146
+ #: pro/fields/class-acf-field-gallery.php:585
3147
  msgid "Close"
3148
  msgstr "بستن"
3149
 
3150
+ #: pro/fields/class-acf-field-gallery.php:639
3151
  msgid "Minimum Selection"
3152
  msgstr "حداقل انتخاب"
3153
 
3154
+ #: pro/fields/class-acf-field-gallery.php:648
3155
  msgid "Maximum Selection"
3156
  msgstr "حداکثر انتخاب"
3157
 
3158
+ #: pro/fields/class-acf-field-gallery.php:657
3159
  msgid "Insert"
3160
  msgstr "درج"
3161
 
3162
+ #: pro/fields/class-acf-field-gallery.php:658
3163
  msgid "Specify where new attachments are added"
3164
  msgstr "مشخص کنید که پیوست ها کجا اضافه شوند"
3165
 
3166
+ #: pro/fields/class-acf-field-gallery.php:662
3167
  msgid "Append to the end"
3168
  msgstr "افزودن به انتها"
3169
 
3170
+ #: pro/fields/class-acf-field-gallery.php:663
3171
  msgid "Prepend to the beginning"
3172
  msgstr "افزودن قبل از"
3173
 
3174
+ #: pro/fields/class-acf-field-repeater.php:65
3175
+ #: pro/fields/class-acf-field-repeater.php:656
3176
  msgid "Minimum rows reached ({min} rows)"
3177
  msgstr "مقادیر به حداکثر رسیده اند ( {min} سطر )"
3178
 
3179
+ #: pro/fields/class-acf-field-repeater.php:66
3180
  msgid "Maximum rows reached ({max} rows)"
3181
  msgstr "مقادیر به حداکثر رسیده اند ( {max} سطر )"
3182
 
3183
+ #: pro/fields/class-acf-field-repeater.php:333
3184
  msgid "Add row"
3185
  msgstr "افزودن سطر"
3186
 
3187
+ #: pro/fields/class-acf-field-repeater.php:334
3188
  msgid "Remove row"
3189
  msgstr "حذف سطر"
3190
 
3191
+ #: pro/fields/class-acf-field-repeater.php:412
3192
  msgid "Collapsed"
3193
  msgstr "جمع شده"
3194
 
3195
+ #: pro/fields/class-acf-field-repeater.php:413
3196
  msgid "Select a sub field to show when row is collapsed"
3197
  msgstr "یک زمینه زیرمجموعه را انتخاب کنید تا زمان بسته شدن طر نمایش داده شود"
3198
 
3199
+ #: pro/fields/class-acf-field-repeater.php:423
3200
  msgid "Minimum Rows"
3201
  msgstr "حداقل تعداد سطرها"
3202
 
3203
+ #: pro/fields/class-acf-field-repeater.php:433
3204
  msgid "Maximum Rows"
3205
  msgstr "حداکثر تعداد سطرها"
3206
 
3218
 
3219
  #: pro/updates.php:97
3220
  #, php-format
3221
+ msgid ""
3222
+ "To enable updates, please enter your license key on the <a href=\"%s"
3223
+ "\">Updates</a> page. If you don't have a licence key, please see <a href=\"%s"
3224
+ "\">details & pricing</a>."
3225
+ msgstr ""
3226
+ "برای به روزرسانی لطفا کد لایسنس را وارد کنید. <a href=\"%s\">بروزرسانی</a>. "
3227
+ "<a href=\"%s\">قیمت ها</a>"
3228
 
3229
  #. Plugin URI of the plugin/theme
3230
  msgid "https://www.advancedcustomfields.com/"
3238
  msgid "http://www.elliotcondon.com/"
3239
  msgstr "http://www.elliotcondon.com/"
3240
 
3241
+ #~ msgid "checked"
3242
+ #~ msgstr "انتخاب شده"
3243
+
3244
+ #~ msgid "Parent fields"
3245
+ #~ msgstr "زمینه های مادر"
3246
+
3247
+ #~ msgid "Sibling fields"
3248
+ #~ msgstr "زمینه های هدف"
3249
+
3250
+ #~ msgid "Locating"
3251
+ #~ msgstr "مکان یابی"
3252
+
3253
+ #~ msgid "Error."
3254
+ #~ msgstr "خطا."
3255
+
3256
+ #~ msgid "No embed found for the given URL."
3257
+ #~ msgstr "امکان جاسازی برای آدرس وارد شده یافت نشد."
3258
+
3259
+ #~ msgid "Minimum values reached ( {min} values )"
3260
+ #~ msgstr "مقار به حداقل رسیده است ( {max} )"
3261
+
3262
+ #~ msgid "None"
3263
+ #~ msgstr "هیچ"
3264
 
3265
+ #~ msgid "Taxonomy Term"
3266
+ #~ msgstr "آیتم طبقه بندی"
3267
 
3268
+ #~ msgid "remove {layout}?"
3269
+ #~ msgstr "حذف {layout} ؟"
3270
 
3271
+ #~ msgid "This field requires at least {min} {identifier}"
3272
+ #~ msgstr "این زمینه نیازدارد به {min} {identifier}"
3273
+
3274
+ #~ msgid "This field has a limit of {max} {identifier}"
3275
+ #~ msgstr "این زمینه محدود است به {max} {identifier}"
3276
+
3277
+ #~ msgid "Maximum {label} limit reached ({max} {identifier})"
3278
+ #~ msgstr "حداکثر {label} پرشده است ({max} {identifier})"
3279
+
3280
+ #~ msgid "Allow this accordion to open without closing others. "
3281
+ #~ msgstr "اجاره به آکاردئون برای باز شدن بدون بستن دیگران"
3282
+
3283
+ #~ msgid ""
3284
+ #~ "The tab field will display incorrectly when added to a Table style "
3285
+ #~ "repeater field or flexible content field layout"
3286
+ #~ msgstr ""
3287
+ #~ "زمینه تب در زمانی که در آن زمینه تکرارشونده و یا زمینه محتوای انعطاف پذیر "
3288
+ #~ "به کار ببرید درست نمایش داده نخواهد شد"
3289
+
3290
+ #~ msgid ""
3291
+ #~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields "
3292
+ #~ "together."
3293
+ #~ msgstr ""
3294
+ #~ "از (زمینه تب) برای سازماندهی بهتر صفحه ویرایش با گروه بندی زمینه ها زیر "
3295
+ #~ "تب ها استفاده کنید. "
3296
+
3297
+ #~ msgid ""
3298
+ #~ "All fields following this \"tab field\" (or until another \"tab field\" "
3299
+ #~ "is defined) will be grouped together using this field's label as the tab "
3300
+ #~ "heading."
3301
+ #~ msgstr ""
3302
+ #~ "همه زمینه های زیر این \" زمینه تب \" (یا تا زمینه تب بعدی) با هم گروه "
3303
+ #~ "بندی می شوند و برچسب زمینه در تب به نمایش در خواهد آمد"
3304
 
3305
  #~ msgid "End-point"
3306
  #~ msgstr "نقطه پایانی"
3307
 
3308
  #~ msgid "Use this field as an end-point and start a new group of tabs"
3309
+ #~ msgstr ""
3310
+ #~ "استفاده از این زمینه به عنوان نقطه پایانی و شروع یک گروه جدید از تب ها"
3311
 
3312
  #~ msgid "Disabled"
3313
  #~ msgstr "غیرفعال"
3376
  #~ msgid "<b>Success</b>. Import tool added %s field groups: %s"
3377
  #~ msgstr "<b>انجام شد</b> ابزار وارد سازی %s زمینه را وارد کرد: %s"
3378
 
3379
+ #~ msgid ""
3380
+ #~ "<b>Warning</b>. Import tool detected %s field groups already exist and "
3381
+ #~ "have been ignored: %s"
3382
+ #~ msgstr ""
3383
+ #~ "<b>اخطار</b> ابزار وارد سازی تشخصی داد که گروه زمینه %s اکنون موجود می "
3384
+ #~ "باشد و %s نادیده گرفته شد"
3385
 
3386
  #~ msgid "Upgrade ACF"
3387
  #~ msgstr "بروزرسانی "
3392
  #~ msgid "Drag and drop to reorder"
3393
  #~ msgstr "با گرفتن و کشیدن مرتب سازی کنید"
3394
 
3395
+ #~ msgid ""
3396
+ #~ "The following sites require a DB upgrade. Check the ones you want to "
3397
+ #~ "update and then click “Upgrade Database”."
3398
+ #~ msgstr ""
3399
+ #~ "سایت‌های زیر نیاز به به‌روزرسانی دیتابیس دارند. آن‌هایی که تمایل دارید را "
3400
+ #~ "انتخاب کنید و دکمه به روزرسانی را کلیک کنید."
3401
 
3402
  #~ msgid "Upgrading data to"
3403
  #~ msgstr "به روزرسانی داده ها به"
3441
  #~ msgid "License"
3442
  #~ msgstr "لایسنس"
3443
 
3444
+ #~ msgid ""
3445
+ #~ "To unlock updates, please enter your license key below. If you don't have "
3446
+ #~ "a licence key, please see"
3447
+ #~ msgstr ""
3448
+ #~ "برای به روزرسانی لطفا لایسنس خود را وارد کنید. اگر لایسنس ندارید اینجا را "
3449
+ #~ "ببنید:"
3450
 
3451
  #~ msgid "details & pricing"
3452
  #~ msgstr "جزئیات و قیمت"
3453
 
3454
+ #~ msgid ""
3455
+ #~ "To enable updates, please enter your license key on the <a href=\"%s"
3456
+ #~ "\">Updates</a> page. If you don't have a licence key, please see <a href="
3457
+ #~ "\"%s\">details & pricing</a>"
3458
+ #~ msgstr ""
3459
+ #~ "برای به روز رسانی لایسنس خود را در قسمت <a href=\"%s\">به روزرسانی ها</"
3460
+ #~ "a> وارد کنید. اگر لایسنس ندارید اینجا را ببینید: <a href=\"%s\">جزئیات ئ "
3461
+ #~ "قیمت</a>"
3462
+
3463
+ #~ msgid ""
3464
+ #~ "Please note that all text will first be passed through the wp function "
3465
  #~ msgstr "دقت کنید که نکاک متن ها اول از تابع وردپرس عبور خواهند کرد"
3466
 
3467
  #~ msgid "Warning"
3477
  #~ msgstr "درون ریزی/برون بری"
3478
 
3479
  #~ msgid "Field groups are created in order from lowest to highest"
3480
+ #~ msgstr ""
3481
+ #~ "گروه های زمینه به ترتیب از کوچکترین شماره تا بزرگترین شماره نمایش داده می "
3482
+ #~ "شوند"
3483
 
3484
  #~ msgid "Upgrading data to "
3485
  #~ msgstr "به روز رسانی داده ها به %s"
3508
  #~ msgid "ACF PRO Required"
3509
  #~ msgstr "نسخه حرفه ای لازم است"
3510
 
3511
+ #~ msgid ""
3512
+ #~ "We have detected an issue which requires your attention: This website "
3513
+ #~ "makes use of premium add-ons (%s) which are no longer compatible with ACF."
3514
+ #~ msgstr ""
3515
+ #~ "مشکلی مشاهده شده است که نیاز به توجه شما دارد. این وب سایت مجاز به "
3516
+ #~ "استفاده از افزودنی های پولی (%s) می باشد که دیگر سازگار نیستند"
3517
 
3518
+ #~ msgid ""
3519
+ #~ "Don't panic, you can simply roll back the plugin and continue using ACF "
3520
+ #~ "as you know it!"
3521
  #~ msgstr "مشکلی نیست. شما می توانید به نسخه ای که به آن عادت دارید برگردید!"
3522
 
3523
  #~ msgid "Roll back to ACF v%s"
3543
  #~ msgid "Load & Save Terms to Post"
3544
  #~ msgstr "خواندن و ذخیره دسته(ترم)ها برای نوشته"
3545
 
3546
+ #~ msgid ""
3547
+ #~ "Load value based on the post's terms and update the post's terms on save"
3548
+ #~ msgstr ""
3549
+ #~ "مقدار بر اساس دسته(ترم) نوشته خوانده شود و دسته های نوشته را در هنگام "
3550
+ #~ "ذخیره به روز رسانی کند"
3551
 
3552
  #~ msgid "Controls how HTML tags are rendered"
3553
  #~ msgstr "کنترل چگونگی نمایش تگ های HTML"
3616
  #~ msgid "No ACF groups selected"
3617
  #~ msgstr "هیچ گروه زمینه دلخواه پیشرفته ای انتخاب نشده است."
3618
 
3619
+ #~ msgid ""
3620
+ #~ "Create infinite rows of repeatable data with this versatile interface!"
3621
+ #~ msgstr ""
3622
+ #~ "ایجاد بی نهایت سطر از داده های تکرار شونده به وسیله این زمینه چند منظوره!"
3623
 
3624
  #~ msgid "Create image galleries in a simple and intuitive interface!"
3625
  #~ msgstr "ایجاد گالری های تصاویر در یک رابط کاربری ساده و دیداری!"
3634
  #~ msgstr "زمینه افزونه GravityForms"
3635
 
3636
  #~ msgid "Creates a select field populated with Gravity Forms!"
3637
+ #~ msgstr ""
3638
+ #~ "زمینه جدید از نوع انتخاب می سازد که می توانید یکی از فرم های GravityForms "
3639
+ #~ "که ساخته اید را از آن انتخاب کنید"
3640
 
3641
  #~ msgid "Date & Time Picker"
3642
  #~ msgstr "تاریخ و زمان"
3656
  #~ msgid "Advanced Custom Fields Add-Ons"
3657
  #~ msgstr "افزودنی های افزونه زمینه های دلخواه پیشرفته"
3658
 
3659
+ #~ msgid ""
3660
+ #~ "The following Add-ons are available to increase the functionality of the "
3661
+ #~ "Advanced Custom Fields plugin."
3662
+ #~ msgstr ""
3663
+ #~ "افزودنی های زیر برای افزایش قابلیت های افزونه زمینه های دلخواه پیشرفته "
3664
+ #~ "قابل استفاده هستند."
3665
 
3666
+ #~ msgid ""
3667
+ #~ "Each Add-on can be installed as a separate plugin (receives updates) or "
3668
+ #~ "included in your theme (does not receive updates)."
3669
+ #~ msgstr ""
3670
+ #~ "هر افزودنی می تواند به عنوان یک افزونه جدا ( قابل بروزرسانی) نصب شود و یا "
3671
+ #~ "در پوسته شما (غیرقابل بروزرسانی) قرار گیرد."
3672
 
3673
  #~ msgid "Purchase & Install"
3674
  #~ msgstr "خرید و نصب"
3682
  #~ msgid "Export to PHP"
3683
  #~ msgstr "برون بری به فرمت PHP"
3684
 
3685
+ #~ msgid ""
3686
+ #~ "ACF will create a .xml export file which is compatible with the native WP "
3687
+ #~ "import plugin."
3688
+ #~ msgstr ""
3689
+ #~ "افزونه زمینه های دلخواه پیشرفته یک پرونده خروجی (.xml) را ایجاد خواهد کرد "
3690
+ #~ "که با افزونه Wordpress Importer سازگار است."
3691
+
3692
+ #~ msgid ""
3693
+ #~ "Imported field groups <b>will</b> appear in the list of editable field "
3694
+ #~ "groups. This is useful for migrating fields groups between Wp websites."
3695
+ #~ msgstr ""
3696
+ #~ "گروه های زمینه درون ریزی شده در لیست گروه های زمینه قابل ویرایش نمایش "
3697
+ #~ "داده <b>خواهند شد</b>. این روش برای انتقال گروه های زمینه در بین سایت های "
3698
+ #~ "وردپرسی مفید است."
3699
 
3700
  #~ msgid "Select field group(s) from the list and click \"Export XML\""
3701
+ #~ msgstr ""
3702
+ #~ "گروه زمینه را از لیست انتخاب کنید و سپس روی دکمه ((برون بری به فرمت XML)) "
3703
+ #~ "کلیک کنید"
3704
 
3705
  #~ msgid "Save the .xml file when prompted"
3706
  #~ msgstr "فایل .xml را وقتی آماده شد، ذخیره کنید"
3721
  #~ msgstr "همین ! از وردپرس لذت ببرید"
3722
 
3723
  #~ msgid "ACF will create the PHP code to include in your theme."
3724
+ #~ msgstr ""
3725
+ #~ "افزونه زمینه های دلخواه پیشرفته کد های PHP برای اضافه کردن در پوسته در "
3726
+ #~ "اختیاران قرار می دهد"
3727
+
3728
+ #~ msgid ""
3729
+ #~ "Registered field groups <b>will not</b> appear in the list of editable "
3730
+ #~ "field groups. This is useful for including fields in themes."
3731
+ #~ msgstr ""
3732
+ #~ "گروه های زمینه ساخته خواهند شد ولی قابل ویرایش <b>نخواهند بود</b>.یعنی در "
3733
+ #~ "لیست افزونه برای ویرایش دیده نمی شوند. این روش برای قرار دادن زمینه ها در "
3734
+ #~ "پوسته ها (برای مشتری) مفید است."
3735
+
3736
+ #~ msgid ""
3737
+ #~ "Please note that if you export and register field groups within the same "
3738
+ #~ "WP, you will see duplicate fields on your edit screens. To fix this, "
3739
+ #~ "please move the original field group to the trash or remove the code from "
3740
+ #~ "your functions.php file."
3741
+ #~ msgstr ""
3742
+ #~ "لطفا توجه کنید که اگر از هر دو روش ذکر شما در یک وردپرس به صورت هم زمان "
3743
+ #~ "استفاده کنید، در صفحه ویرایش مطالب، دو بار زمینه ها را خواهید دید. واضح "
3744
+ #~ "است که برای حل این مشکل یا باید زمینه ها را از افزونه حذف کنید یا کدهای "
3745
+ #~ "php را از پوسته و احتمالا functions.php حذف کنید."
3746
 
3747
  #~ msgid "Select field group(s) from the list and click \"Create PHP\""
3748
+ #~ msgstr ""
3749
+ #~ "گروه های زمینه را از لیست انتخاب کنید و سپس روی دکمه ((برون بری به فرمت "
3750
+ #~ "PHP)) کلیک کنید"
3751
 
3752
  #~ msgid "Copy the PHP code generated"
3753
  #~ msgstr "کدهای PHP تولید شده را کپی کنید"
3755
  #~ msgid "Paste into your functions.php file"
3756
  #~ msgstr "در فایل functions.php پوسته خود قرار دهید"
3757
 
3758
+ #~ msgid ""
3759
+ #~ "To activate any Add-ons, edit and use the code in the first few lines."
3760
  #~ msgstr "برای فعالسازی افزودنی ها،چند سطر اول کدها را ویرایش و استفاده کنید"
3761
 
3762
  #~ msgid "Notes"
3765
  #~ msgid "Include in theme"
3766
  #~ msgstr "قرار دادن در پوسته"
3767
 
3768
+ #~ msgid ""
3769
+ #~ "The Advanced Custom Fields plugin can be included within a theme. To do "
3770
+ #~ "so, move the ACF plugin inside your theme and add the following code to "
3771
+ #~ "your functions.php file:"
3772
+ #~ msgstr ""
3773
+ #~ "افزونه زمینه های دلخواه پیشرفته وردپرس می تواند در داخل یک پوسته قرار "
3774
+ #~ "بگیرد. برای انجام این کار، افزونه را به کنار پوسته تان انتقال دهید و "
3775
+ #~ "کدهای زیر را به پرونده functions.php اضافه کنید:"
3776
+
3777
+ #~ msgid ""
3778
+ #~ "To remove all visual interfaces from the ACF plugin, you can use a "
3779
+ #~ "constant to enable lite mode. Add the following code to your functions."
3780
+ #~ "php file <b>before</b> the include_once code:"
3781
+ #~ msgstr ""
3782
+ #~ "برای حذف همه رابط های بصری از افزونه زمینه های دلخواه پیشرفته (دیده نشدن "
3783
+ #~ "افزونه)، می توانید از یک ثابت (کانستنت) برای فعال سازی حالت سبک (lite) "
3784
+ #~ "استفاده کنید. کد زیر را به پرونده functions.php خود <b>قبل از</b> تابع "
3785
+ #~ "include_once اضافه کنید:"
3786
 
3787
  #~ msgid "Back to export"
3788
  #~ msgstr "بازگشت به برون بری"
3793
  #~ msgid "Activation codes have grown into plugins!"
3794
  #~ msgstr "کدهای فعالسازی در افزونه ها افزایش یافته اند!"
3795
 
3796
+ #~ msgid ""
3797
+ #~ "Add-ons are now activated by downloading and installing individual "
3798
+ #~ "plugins. Although these plugins will not be hosted on the wordpress.org "
3799
+ #~ "repository, each Add-on will continue to receive updates in the usual way."
3800
+ #~ msgstr ""
3801
+ #~ "افزودنی ها الان با دریافت و نصب افزونه های جداگانه فعال می شوند. با اینکه "
3802
+ #~ "این افزونه ها در مخزن وردپرس پشتیبانی نخواهند شد، هر افزودنی به صورت "
3803
+ #~ "معمول به روز رسانی را دریافت خواهد کرد."
3804
 
3805
  #~ msgid "All previous Add-ons have been successfully installed"
3806
  #~ msgstr "تمام افزونه های قبلی با موفقیت نصب شده اند"
3811
  #~ msgid "Download your activated Add-ons"
3812
  #~ msgstr "افزودنی های فعال شده ی خود را دانلود کنید"
3813
 
3814
+ #~ msgid ""
3815
+ #~ "This website does not use premium Add-ons and will not be affected by "
3816
+ #~ "this change."
3817
+ #~ msgstr ""
3818
+ #~ "این سایت از افزودنی های ویژه استفاده نمی کند و تحت تأثیر این تغییر قرار "
3819
+ #~ "نخواهد گرفت"
3820
 
3821
  #~ msgid "Easier Development"
3822
  #~ msgstr "توسعه آسانتر"
3833
  #~ msgid "Password Field"
3834
  #~ msgstr "زمینه رمزعبور"
3835
 
3836
+ #~ msgid ""
3837
+ #~ "Creating your own field type has never been easier! Unfortunately, "
3838
+ #~ "version 3 field types are not compatible with version 4."
3839
+ #~ msgstr ""
3840
+ #~ "ساخت نوع زمینه دلخواه برای خودتان هرگز به این آسانی نبوده! متأسفانه، "
3841
+ #~ "انواع زمینه های نسخه 3 با نسخه 4 سازگار نیستند."
3842
 
3843
  #~ msgid "Migrating your field types is easy, please"
3844
+ #~ msgstr ""
3845
+ #~ "انتقال انواع زمینه ها آسان است. پس لطفا افزونه خود را بروزرسانی کنید."
3846
 
3847
  #~ msgid "follow this tutorial"
3848
  #~ msgstr "این آموزش را دنبال کنید"
3853
  #~ msgid "Actions &amp; Filters"
3854
  #~ msgstr "اکشن ها و فیلترها"
3855
 
3856
+ #~ msgid ""
3857
+ #~ "All actions & filters have received a major facelift to make customizing "
3858
+ #~ "ACF even easier! Please"
3859
+ #~ msgstr ""
3860
+ #~ "همه اکشن ها و فیلترها دارای تغییرات عمده ای شدند تا دلخواه سازی ACF از "
3861
+ #~ "قبل آسانتر شود"
3862
 
3863
  #~ msgid "read this guide"
3864
  #~ msgstr "لطفا راهنما را مطالعه فرمایید"
3878
  #~ msgid "Database Changes"
3879
  #~ msgstr "تغییرات پایگاه داده"
3880
 
3881
+ #~ msgid ""
3882
+ #~ "Absolutely <strong>no</strong> changes have been made to the database "
3883
+ #~ "between versions 3 and 4. This means you can roll back to version 3 "
3884
+ #~ "without any issues."
3885
+ #~ msgstr ""
3886
+ #~ "<strong>هیچ تغییری</strong> در پایگاه داده بین نسخه 3 و 4 ایجاد نشده است. "
3887
+ #~ "این بدین معنی است که شما می توانید بدون هیچ گونه مسئله ای به نسخه 3 "
3888
+ #~ "برگردید."
3889
 
3890
  #~ msgid "Potential Issues"
3891
  #~ msgstr "مسائل بالقوه"
3892
 
3893
+ #~ msgid ""
3894
+ #~ "Do to the sizable changes surounding Add-ons, field types and action/"
3895
+ #~ "filters, your website may not operate correctly. It is important that you "
3896
+ #~ "read the full"
3897
+ #~ msgstr ""
3898
+ #~ "با توجه به تغییرات افزودنی ها، انواع زمینه ها و اکشن ها/فیلترها، ممکن است "
3899
+ #~ "سایت شما به درستی عمل نکند. پس لازم است راهنمای کامل "
3900
 
3901
  #~ msgid "Migrating from v3 to v4"
3902
  #~ msgstr "مهاجرت از نسخه 3 به نسخه 4 را مطالعه کنید"
3907
  #~ msgid "Really Important!"
3908
  #~ msgstr "واقعا مهم!"
3909
 
3910
+ #~ msgid ""
3911
+ #~ "If you updated the ACF plugin without prior knowledge of such changes, "
3912
+ #~ "please roll back to the latest"
3913
+ #~ msgstr ""
3914
+ #~ "اگر شما افزونه زمینه های دلخواه پیشرفته وردپرس را بدون آگاهی از آخرین "
3915
+ #~ "تغییرات بروزرسانی کردید، لطفا به نسخه قبل برگردید "
3916
 
3917
  #~ msgid "version 3"
3918
  #~ msgstr "نسخه 3"
3923
  #~ msgid "Thank You"
3924
  #~ msgstr "از شما متشکرم"
3925
 
3926
+ #~ msgid ""
3927
+ #~ "A <strong>BIG</strong> thank you to everyone who has helped test the "
3928
+ #~ "version 4 beta and for all the support I have received."
3929
+ #~ msgstr ""
3930
+ #~ "یک <strong>تشکر بزرگ</strong> از شما و همه کسانی که در تست نسخه 4 بتا به "
3931
+ #~ "من کمک کردند میکنم. برای تمام کمک ها و پشتیبانی هایی که دریافت کردم نیز "
3932
+ #~ "از همه شما متشکرم."
3933
 
3934
  #~ msgid "Without you all, this release would not have been possible!"
3935
  #~ msgstr "بدون همه شما انتشار این نسخه امکان پذیر نبود!"
3943
  #~ msgid "Overview"
3944
  #~ msgstr "بازنگری"
3945
 
3946
+ #~ msgid ""
3947
+ #~ "Previously, all Add-ons were unlocked via an activation code (purchased "
3948
+ #~ "from the ACF Add-ons store). New to v4, all Add-ons act as separate "
3949
+ #~ "plugins which need to be individually downloaded, installed and updated."
3950
+ #~ msgstr ""
3951
+ #~ "پیش از این، قفل همه افزودنی ها از طریق یک کد فعالسازی (خریداری شده از "
3952
+ #~ "فروشگاه افزودنی ها) باز می شدند.اما در نسخه 4 همه آنها به صورت افزودنی "
3953
+ #~ "های جداگانه هستند و باید به صورت جدا دریافت، نصب و بروزرسانی شوند."
3954
+
3955
+ #~ msgid ""
3956
+ #~ "This page will assist you in downloading and installing each available "
3957
+ #~ "Add-on."
3958
  #~ msgstr "این برگه به شما در دریافت و نصب هر افزودنی موجود کمک خواهد کرد."
3959
 
3960
  #~ msgid "Available Add-ons"
3961
  #~ msgstr "افزودنی های موجود"
3962
 
3963
+ #~ msgid ""
3964
+ #~ "The following Add-ons have been detected as activated on this website."
3965
  #~ msgstr "افزودنی های زیر به صورت فعال در این سایت شناسایی شده اند"
3966
 
3967
  #~ msgid "Installation"
3979
  #~ msgid "Plugins > Add New > Upload"
3980
  #~ msgstr "افزونه ها > افزودن > بارگذاری"
3981
 
3982
+ #~ msgid ""
3983
+ #~ "Use the uploader to browse, select and install your Add-on (.zip file)"
3984
+ #~ msgstr ""
3985
+ #~ "از بارگذار برای انتخاب فایل استفاده کنید. افزودنی خود را (پرونده ZIP) "
3986
+ #~ "انتخاب و نصب نمایید"
3987
 
3988
+ #~ msgid ""
3989
+ #~ "Once the plugin has been uploaded and installed, click the 'Activate "
3990
+ #~ "Plugin' link"
3991
+ #~ msgstr ""
3992
+ #~ "هنگامی که یک افزونه دریافت و نصب شده است، روی لینک (( فعال کردن افزونه)) "
3993
+ #~ "کلیک کنید"
3994
 
3995
  #~ msgid "The Add-on is now installed and activated!"
3996
  #~ msgstr "افزودنی در حال حاضر نصب و فعال سازی شده است!"
4026
  #~ msgstr "آبجکت تصویر"
4027
 
4028
  #~ msgid "Text &amp; HTML entered here will appear inline with the fields"
4029
+ #~ msgstr ""
4030
+ #~ "متن و کد HTML وارد شده در اینجا در خط همراه با زمینه نمایش داده خواهد شد"
4031
 
4032
  #~ msgid "Enter your choices one per line"
4033
  #~ msgstr "انتخاب ها را در هر خط وارد کنید"
4062
  #~ msgid "Save format"
4063
  #~ msgstr "فرمت ذخیره"
4064
 
4065
+ #~ msgid ""
4066
+ #~ "This format will determin the value saved to the database and returned "
4067
+ #~ "via the API"
4068
+ #~ msgstr ""
4069
+ #~ "این فرمت مقدار ذخیره شده در پایگاه داده را مشخص خواهد کرد و از طریق API "
4070
+ #~ "قابل خواندن است"
4071
 
4072
  #~ msgid "\"yymmdd\" is the most versatile save format. Read more about"
4073
  #~ msgstr "\"yymmdd\" بهترین و پر استفاده ترین فرمت ذخیره است. اطلاعات بیشتر"
4078
  #~ msgid "This format will be seen by the user when entering a value"
4079
  #~ msgstr "این فرمت توسط کاربر در هنگام وارد کردن یک مقدار دیده خواهد شد"
4080
 
4081
+ #~ msgid ""
4082
+ #~ "\"dd/mm/yy\" or \"mm/dd/yy\" are the most used Display Formats. Read more "
4083
+ #~ "about"
4084
+ #~ msgstr ""
4085
+ #~ "\"dd/mm/yy\" یا \"mm/dd/yy\" پر استفاده ترین قالب های نمایش تاریخ می "
4086
+ #~ "باشند. اطلاعات بیشتر"
4087
 
4088
  #~ msgid "Field Order"
4089
  #~ msgstr "ترتیب زمینه"
lang/acf-ru_RU.mo CHANGED
Binary file
lang/acf-ru_RU.po CHANGED
@@ -2,15 +2,15 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n"
4
  "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
5
- "POT-Creation-Date: 2017-10-24 23:11+0300\n"
6
- "PO-Revision-Date: 2018-07-25 10:10+1000\n"
7
- "Last-Translator: Elliot Condon <e@elliotcondon.com>\n"
8
  "Language-Team: \n"
9
  "Language: ru_RU\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
- "X-Generator: Poedit 1.8.1\n"
14
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
  "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
@@ -23,97 +23,96 @@ msgstr ""
23
  "X-Poedit-SearchPath-0: .\n"
24
  "X-Poedit-SearchPathExcluded-0: *.js\n"
25
 
26
- #: acf.php:67
27
  msgid "Advanced Custom Fields"
28
  msgstr "Advanced Custom Fields"
29
 
30
- #: acf.php:369 includes/admin/admin.php:117
31
  msgid "Field Groups"
32
  msgstr "Группы полей"
33
 
34
- #: acf.php:370
35
  msgid "Field Group"
36
  msgstr "Группа полей"
37
 
38
- #: acf.php:371 acf.php:403 includes/admin/admin.php:118
39
- #: pro/fields/class-acf-field-flexible-content.php:557
40
  msgid "Add New"
41
  msgstr "Добавить"
42
 
43
- #: acf.php:372
44
  msgid "Add New Field Group"
45
  msgstr "Создание новой группы полей"
46
 
47
- #: acf.php:373
48
  msgid "Edit Field Group"
49
  msgstr "Редактирование группы полей"
50
 
51
- #: acf.php:374
52
  msgid "New Field Group"
53
  msgstr "Новая группа полей"
54
 
55
- #: acf.php:375
56
  msgid "View Field Group"
57
  msgstr "Просмотреть группу полей"
58
 
59
- #: acf.php:376
60
  msgid "Search Field Groups"
61
  msgstr "Поиск групп полей"
62
 
63
- #: acf.php:377
64
  msgid "No Field Groups found"
65
  msgstr "Группы полей не найдены."
66
 
67
- #: acf.php:378
68
  msgid "No Field Groups found in Trash"
69
  msgstr "Группы полей не найдены в корзине."
70
 
71
- #: acf.php:401 includes/admin/admin-field-group.php:182
72
- #: includes/admin/admin-field-group.php:275
73
  #: includes/admin/admin-field-groups.php:510
74
- #: pro/fields/class-acf-field-clone.php:807
75
  msgid "Fields"
76
  msgstr "Поля"
77
 
78
- #: acf.php:402
79
  msgid "Field"
80
  msgstr "Поле"
81
 
82
- #: acf.php:404
83
  msgid "Add New Field"
84
  msgstr "Добавить новое поле"
85
 
86
- #: acf.php:405
87
  msgid "Edit Field"
88
  msgstr "Изменить поле"
89
 
90
- #: acf.php:406 includes/admin/views/field-group-fields.php:41
91
  #: includes/admin/views/settings-info.php:105
92
  msgid "New Field"
93
  msgstr "Новое поле"
94
 
95
- #: acf.php:407
96
  msgid "View Field"
97
  msgstr "Просмотреть поле"
98
 
99
- #: acf.php:408
100
  msgid "Search Fields"
101
  msgstr "Поиск полей"
102
 
103
- #: acf.php:409
104
  msgid "No Fields found"
105
  msgstr "Поля не найдены"
106
 
107
- #: acf.php:410
108
  msgid "No Fields found in Trash"
109
  msgstr "Поля не найдены в Корзине"
110
 
111
- #: acf.php:449 includes/admin/admin-field-group.php:390
112
  #: includes/admin/admin-field-groups.php:567
113
  msgid "Inactive"
114
  msgstr "Неактивно"
115
 
116
- #: acf.php:454
117
  #, php-format
118
  msgid "Inactive <span class=\"count\">(%s)</span>"
119
  msgid_plural "Inactive <span class=\"count\">(%s)</span>"
@@ -151,100 +150,97 @@ msgstr "Группа полей запланирована на"
151
  msgid "Field group draft updated."
152
  msgstr "Черновик группы полей обновлен."
153
 
154
- #: includes/admin/admin-field-group.php:183
155
- msgid "Location"
156
- msgstr "Условия отображения"
157
 
158
- #: includes/admin/admin-field-group.php:184
159
- msgid "Settings"
160
- msgstr "Настройки"
161
 
162
- #: includes/admin/admin-field-group.php:269
 
 
 
 
163
  msgid "Move to trash. Are you sure?"
164
  msgstr "Отправить в корзину. Вы уверены?"
165
 
 
 
 
 
 
 
 
 
166
  # Maybe non-translateable too.
167
- #: includes/admin/admin-field-group.php:270
168
- msgid "checked"
169
  msgstr "Выбрано"
170
 
171
- #: includes/admin/admin-field-group.php:271
172
- msgid "No toggle fields available"
173
- msgstr "Нет доступных полей с выбором значений."
174
 
175
- #: includes/admin/admin-field-group.php:272
176
- msgid "Field group title is required"
177
- msgstr "Введите название для группы полей"
178
 
179
- #: includes/admin/admin-field-group.php:273
180
  #: includes/api/api-field-group.php:751
181
  msgid "copy"
182
  msgstr "копия"
183
 
184
- #: includes/admin/admin-field-group.php:274
185
- #: includes/admin/views/field-group-field-conditional-logic.php:54
186
- #: includes/admin/views/field-group-field-conditional-logic.php:154
187
  #: includes/admin/views/field-group-locations.php:29
188
  #: includes/admin/views/html-location-group.php:3
189
- #: includes/api/api-helpers.php:3964
190
  msgid "or"
191
  msgstr "или"
192
 
193
- #: includes/admin/admin-field-group.php:276
194
- msgid "Parent fields"
195
- msgstr "Родительские поля"
196
-
197
- #: includes/admin/admin-field-group.php:277
198
- msgid "Sibling fields"
199
- msgstr "Поля одного уровня вложенности"
200
-
201
- #: includes/admin/admin-field-group.php:278
202
- msgid "Move Custom Field"
203
- msgstr "Переместить поле"
204
-
205
- #: includes/admin/admin-field-group.php:279
206
- msgid "This field cannot be moved until its changes have been saved"
207
- msgstr "Это поле не может быть перемещено до сохранения изменений"
208
-
209
- #: includes/admin/admin-field-group.php:280
210
  msgid "Null"
211
  msgstr "null"
212
 
213
- #: includes/admin/admin-field-group.php:281 includes/input.php:258
214
- msgid "The changes you made will be lost if you navigate away from this page"
215
- msgstr "Внесенные вами изменения будут утеряны, если вы покинете эту страницу"
216
 
217
- #: includes/admin/admin-field-group.php:282
218
- msgid "The string \"field_\" may not be used at the start of a field name"
219
- msgstr "Имя поля не должно начинаться со строки \"field_\""
 
220
 
221
- #: includes/admin/admin-field-group.php:360
222
  msgid "Field Keys"
223
  msgstr "Ключи полей"
224
 
225
- #: includes/admin/admin-field-group.php:390
226
  #: includes/admin/views/field-group-options.php:9
227
  msgid "Active"
228
  msgstr "Активные"
229
 
230
- #: includes/admin/admin-field-group.php:801
231
  msgid "Move Complete."
232
  msgstr "Перемещение выполнено."
233
 
234
- #: includes/admin/admin-field-group.php:802
235
  #, php-format
236
  msgid "The %s field can now be found in the %s field group"
237
  msgstr "Теперь поле %s может быть найдено в группе полей %s"
238
 
239
- #: includes/admin/admin-field-group.php:803
240
  msgid "Close Window"
241
  msgstr "Закрыть окно"
242
 
243
- #: includes/admin/admin-field-group.php:844
244
  msgid "Please select the destination for this field"
245
  msgstr "Пожалуйста выберите местоположение для этого поля"
246
 
247
- #: includes/admin/admin-field-group.php:851
248
  msgid "Move Field"
249
  msgstr "Переместить поле"
250
 
@@ -288,7 +284,7 @@ msgid "Sync available"
288
  msgstr "Синхронизация доступна"
289
 
290
  #: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38
291
- #: pro/fields/class-acf-field-gallery.php:355
292
  msgid "Title"
293
  msgstr "Заголовок"
294
 
@@ -296,7 +292,7 @@ msgstr "Заголовок"
296
  #: includes/admin/views/field-group-options.php:96
297
  #: includes/admin/views/install-network.php:21
298
  #: includes/admin/views/install-network.php:29
299
- #: pro/fields/class-acf-field-gallery.php:382
300
  msgid "Description"
301
  msgstr "Описание"
302
 
@@ -308,6 +304,8 @@ msgstr "Статус"
308
  #: includes/admin/admin-field-groups.php:607
309
  msgid "Customise WordPress with powerful, professional and intuitive fields."
310
  msgstr ""
 
 
311
 
312
  #: includes/admin/admin-field-groups.php:609
313
  #: includes/admin/settings-info.php:76
@@ -345,47 +343,52 @@ msgstr "Pro"
345
  msgid "Thank you for creating with <a href=\"%s\">ACF</a>."
346
  msgstr "Спасибо вам за использование <a href=\"%s\">ACF</a>."
347
 
348
- #: includes/admin/admin-field-groups.php:668
349
  msgid "Duplicate this item"
350
  msgstr "Дублировать элемент"
351
 
352
- #: includes/admin/admin-field-groups.php:668
353
- #: includes/admin/admin-field-groups.php:684
354
- #: includes/admin/views/field-group-field.php:49
355
- #: pro/fields/class-acf-field-flexible-content.php:556
356
  msgid "Duplicate"
357
  msgstr "Дублировать"
358
 
359
- #: includes/admin/admin-field-groups.php:701
360
- #: includes/fields/class-acf-field-google-map.php:112
361
- #: includes/fields/class-acf-field-relationship.php:656
362
  msgid "Search"
363
  msgstr "Поиск"
364
 
365
- #: includes/admin/admin-field-groups.php:760
366
  #, php-format
367
  msgid "Select %s"
368
  msgstr "Выберите %s"
369
 
370
- #: includes/admin/admin-field-groups.php:768
371
  msgid "Synchronise field group"
372
  msgstr "Синхронизировать группу полей"
373
 
374
- #: includes/admin/admin-field-groups.php:768
375
- #: includes/admin/admin-field-groups.php:798
376
  msgid "Sync"
377
  msgstr "Синхронизация"
378
 
379
- #: includes/admin/admin-field-groups.php:780
380
  msgid "Apply"
381
  msgstr "Применить"
382
 
383
- #: includes/admin/admin-field-groups.php:798
384
  msgid "Bulk Actions"
385
  msgstr "Массовые операции"
386
 
 
 
 
 
 
387
  #: includes/admin/admin.php:113
388
- #: includes/admin/views/field-group-options.php:118
389
  msgid "Custom Fields"
390
  msgstr "Группы полей"
391
 
@@ -402,7 +405,7 @@ msgstr "Проверить сайт и обновить"
402
  msgid "Error validating request"
403
  msgstr "Возникла ошибка при обработке запроса"
404
 
405
- #: includes/admin/install.php:210 includes/admin/views/install.php:105
406
  msgid "No updates available."
407
  msgstr "На данный момент обновлений нет."
408
 
@@ -423,34 +426,109 @@ msgstr "Информация"
423
  msgid "What's New"
424
  msgstr "Что нового"
425
 
426
- #: includes/admin/settings-tools.php:50
427
- #: includes/admin/views/settings-tools-export.php:19
428
- #: includes/admin/views/settings-tools.php:31
429
- msgid "Tools"
430
- msgstr "Инструменты"
 
 
 
 
431
 
432
- #: includes/admin/settings-tools.php:147 includes/admin/settings-tools.php:380
 
433
  msgid "No field groups selected"
434
  msgstr "Группы полей не выбраны"
435
 
436
- #: includes/admin/settings-tools.php:184
437
- #: includes/fields/class-acf-field-file.php:155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
438
  msgid "No file selected"
439
  msgstr "Файл не выбран"
440
 
441
- #: includes/admin/settings-tools.php:197
442
  msgid "Error uploading file. Please try again"
443
  msgstr "Ошибка при загрузке файла. Попробуйте еще раз"
444
 
445
- #: includes/admin/settings-tools.php:206
446
  msgid "Incorrect file type"
447
  msgstr "Неправильный тип файла"
448
 
449
- #: includes/admin/settings-tools.php:223
450
  msgid "Import file empty"
451
  msgstr "Импортируемый файл пуст"
452
 
453
- #: includes/admin/settings-tools.php:331
454
  #, php-format
455
  msgid "Imported 1 field group"
456
  msgid_plural "Imported %s field groups"
@@ -458,124 +536,113 @@ msgstr[0] "Импортировано %s группу полей"
458
  msgstr[1] "Импортировано %s группы полей"
459
  msgstr[2] "Импортировано %s групп полей"
460
 
461
- #: includes/admin/views/field-group-field-conditional-logic.php:28
462
  msgid "Conditional Logic"
463
  msgstr "Условная логика"
464
 
465
- #: includes/admin/views/field-group-field-conditional-logic.php:54
466
  msgid "Show this field if"
467
  msgstr "Показывать это поле, если"
468
 
469
- #: includes/admin/views/field-group-field-conditional-logic.php:103
470
- #: includes/locations.php:247
471
- msgid "is equal to"
472
- msgstr "равно"
473
-
474
- #: includes/admin/views/field-group-field-conditional-logic.php:104
475
- #: includes/locations.php:248
476
- msgid "is not equal to"
477
- msgstr "не равно"
478
-
479
- #: includes/admin/views/field-group-field-conditional-logic.php:141
480
  #: includes/admin/views/html-location-rule.php:80
481
  msgid "and"
482
  msgstr "и"
483
 
484
- #: includes/admin/views/field-group-field-conditional-logic.php:156
485
  #: includes/admin/views/field-group-locations.php:31
486
  msgid "Add rule group"
487
  msgstr "Добавить группу условий"
488
 
489
- #: includes/admin/views/field-group-field.php:41
490
- #: pro/fields/class-acf-field-flexible-content.php:403
491
- #: pro/fields/class-acf-field-repeater.php:296
492
  msgid "Drag to reorder"
493
  msgstr "Потяните для изменения порядка"
494
 
 
495
  #: includes/admin/views/field-group-field.php:45
496
- #: includes/admin/views/field-group-field.php:48
497
  msgid "Edit field"
498
  msgstr "Редактировать поле"
499
 
500
- #: includes/admin/views/field-group-field.php:48
501
- #: includes/fields/class-acf-field-file.php:137
502
- #: includes/fields/class-acf-field-image.php:122
503
  #: includes/fields/class-acf-field-link.php:139
504
- #: pro/fields/class-acf-field-gallery.php:342
505
  msgid "Edit"
506
  msgstr "Редактировать"
507
 
508
- #: includes/admin/views/field-group-field.php:49
509
  msgid "Duplicate field"
510
  msgstr "Дублировать поле"
511
 
512
- #: includes/admin/views/field-group-field.php:50
513
  msgid "Move field to another group"
514
  msgstr "Переместить поле в другую группу"
515
 
516
- #: includes/admin/views/field-group-field.php:50
517
  msgid "Move"
518
  msgstr "Переместить"
519
 
520
- #: includes/admin/views/field-group-field.php:51
521
  msgid "Delete field"
522
  msgstr "Удалить поле"
523
 
524
- #: includes/admin/views/field-group-field.php:51
525
- #: pro/fields/class-acf-field-flexible-content.php:555
526
  msgid "Delete"
527
  msgstr "Удалить"
528
 
529
- #: includes/admin/views/field-group-field.php:67
530
  msgid "Field Label"
531
  msgstr "Ярлык поля"
532
 
533
- #: includes/admin/views/field-group-field.php:68
534
  msgid "This is the name which will appear on the EDIT page"
535
  msgstr "Имя поля на странице редактирования"
536
 
537
- #: includes/admin/views/field-group-field.php:77
538
  msgid "Field Name"
539
  msgstr "Имя поля"
540
 
541
- #: includes/admin/views/field-group-field.php:78
542
  msgid "Single word, no spaces. Underscores and dashes allowed"
543
  msgstr "Допускаются буквы, цифры, а также символы _ и -"
544
 
545
- #: includes/admin/views/field-group-field.php:87
546
  msgid "Field Type"
547
  msgstr "Тип поля"
548
 
549
- #: includes/admin/views/field-group-field.php:98
550
- #: includes/fields/class-acf-field-tab.php:88
551
  msgid "Instructions"
552
  msgstr "Инструкции"
553
 
554
- #: includes/admin/views/field-group-field.php:99
555
  msgid "Instructions for authors. Shown when submitting data"
556
  msgstr "Инструкции, которые отображаются при редактировании"
557
 
558
- #: includes/admin/views/field-group-field.php:108
559
  msgid "Required?"
560
- msgstr "Обязательное поле"
561
 
562
- #: includes/admin/views/field-group-field.php:131
563
  msgid "Wrapper Attributes"
564
  msgstr "Атрибуты"
565
 
566
- #: includes/admin/views/field-group-field.php:137
567
  msgid "width"
568
  msgstr "ширина"
569
 
570
- #: includes/admin/views/field-group-field.php:152
571
  msgid "class"
572
  msgstr "class"
573
 
574
- #: includes/admin/views/field-group-field.php:165
575
  msgid "id"
576
  msgstr "id"
577
 
578
- #: includes/admin/views/field-group-field.php:177
579
  msgid "Close Field"
580
  msgstr "Закрыть поле"
581
 
@@ -585,16 +652,16 @@ msgstr "Сортировка"
585
 
586
  #: includes/admin/views/field-group-fields.php:5
587
  #: includes/fields/class-acf-field-button-group.php:198
588
- #: includes/fields/class-acf-field-checkbox.php:415
589
- #: includes/fields/class-acf-field-radio.php:306
590
- #: includes/fields/class-acf-field-select.php:432
591
- #: pro/fields/class-acf-field-flexible-content.php:582
592
  msgid "Label"
593
  msgstr "Ярлык"
594
 
595
  #: includes/admin/views/field-group-fields.php:6
596
- #: includes/fields/class-acf-field-taxonomy.php:964
597
- #: pro/fields/class-acf-field-flexible-content.php:595
598
  msgid "Name"
599
  msgstr "Имя"
600
 
@@ -663,12 +730,12 @@ msgid "Label placement"
663
  msgstr "Расположение меток"
664
 
665
  #: includes/admin/views/field-group-options.php:62
666
- #: includes/fields/class-acf-field-tab.php:102
667
  msgid "Top aligned"
668
  msgstr "Вверху"
669
 
670
  #: includes/admin/views/field-group-options.php:63
671
- #: includes/fields/class-acf-field-tab.php:103
672
  msgid "Left aligned"
673
  msgstr "Слева"
674
 
@@ -699,80 +766,80 @@ msgid "Shown in field group list"
699
  msgstr "Отображаемое описание в списке групп"
700
 
701
  #: includes/admin/views/field-group-options.php:107
702
- msgid "Hide on screen"
703
- msgstr "Скрывание блоков"
704
-
705
- #: includes/admin/views/field-group-options.php:108
706
- msgid "<b>Select</b> items to <b>hide</b> them from the edit screen."
707
- msgstr ""
708
- "Выберите блоки, которые необходимо <b>скрыть</b> на странице редактирования."
709
-
710
- #: includes/admin/views/field-group-options.php:108
711
- msgid ""
712
- "If multiple field groups appear on an edit screen, the first field group's "
713
- "options will be used (the one with the lowest order number)"
714
- msgstr ""
715
- "Если на странице редактирования присутствует несколько групп полей, то будут "
716
- "использованы настройки первой из них (с наиболее низким значением порядка "
717
- "очередности)"
718
-
719
- #: includes/admin/views/field-group-options.php:115
720
  msgid "Permalink"
721
  msgstr "Ссылка"
722
 
723
- #: includes/admin/views/field-group-options.php:116
724
  msgid "Content Editor"
725
  msgstr "Текстовый редактор"
726
 
727
- #: includes/admin/views/field-group-options.php:117
728
  msgid "Excerpt"
729
  msgstr "Цитата"
730
 
731
- #: includes/admin/views/field-group-options.php:119
732
  msgid "Discussion"
733
  msgstr "Обсуждение"
734
 
735
- #: includes/admin/views/field-group-options.php:120
736
  msgid "Comments"
737
  msgstr "Комментарии"
738
 
739
- #: includes/admin/views/field-group-options.php:121
740
  msgid "Revisions"
741
  msgstr "Редакции"
742
 
743
- #: includes/admin/views/field-group-options.php:122
744
  msgid "Slug"
745
  msgstr "Ярлык"
746
 
747
- #: includes/admin/views/field-group-options.php:123
748
  msgid "Author"
749
  msgstr "Автор"
750
 
751
- #: includes/admin/views/field-group-options.php:124
752
  msgid "Format"
753
  msgstr "Формат"
754
 
755
- #: includes/admin/views/field-group-options.php:125
756
  msgid "Page Attributes"
757
  msgstr "Атрибуты страницы"
758
 
759
- #: includes/admin/views/field-group-options.php:126
760
- #: includes/fields/class-acf-field-relationship.php:670
761
  msgid "Featured Image"
762
  msgstr "Миниатюра записи"
763
 
764
- #: includes/admin/views/field-group-options.php:127
765
  msgid "Categories"
766
  msgstr "Рубрики"
767
 
768
- #: includes/admin/views/field-group-options.php:128
769
  msgid "Tags"
770
  msgstr "Метки"
771
 
772
- #: includes/admin/views/field-group-options.php:129
773
  msgid "Send Trackbacks"
774
  msgstr "Отправить обратные ссылки"
775
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
776
  #: includes/admin/views/html-location-group.php:3
777
  msgid "Show this field group if"
778
  msgstr "Отображать группу полей, если"
@@ -1169,178 +1236,263 @@ msgstr ""
1169
  "Новые функции для страницы настроек позволяют создавать и родительские, и "
1170
  "дочерние меню"
1171
 
1172
- #: includes/admin/views/settings-info.php:159
1173
  #, php-format
1174
  msgid "We think you'll love the changes in %s."
1175
  msgstr "Думаем, вам понравятся изменения в %s."
1176
 
1177
- #: includes/admin/views/settings-tools-export.php:23
1178
- msgid "Export Field Groups to PHP"
1179
- msgstr "Экспортировать группы полей в PHP"
1180
-
1181
- #: includes/admin/views/settings-tools-export.php:27
1182
- msgid ""
1183
- "The following code can be used to register a local version of the selected "
1184
- "field group(s). A local field group can provide many benefits such as faster "
1185
- "load times, version control & dynamic fields/settings. Simply copy and paste "
1186
- "the following code to your theme's functions.php file or include it within "
1187
- "an external file."
1188
- msgstr ""
1189
- "Указанный код может быть использован для регистрации группы полей "
1190
- "непосредственно в шаблоне. Локальная группа полей может предоставить много "
1191
- "преимуществ в виде большей скорости загрузки, упрощения контроля версий и "
1192
- "динамических полей. Просто скопируйте и вставьте указанный ниже код в файл "
1193
- "functions.php или подключите его через внешний файл"
1194
-
1195
- #: includes/admin/views/settings-tools.php:5
1196
- msgid "Select Field Groups"
1197
- msgstr "Выберите группы полей"
1198
-
1199
- #: includes/admin/views/settings-tools.php:35
1200
- msgid "Export Field Groups"
1201
- msgstr "Экспорт групп полей"
1202
-
1203
- #: includes/admin/views/settings-tools.php:38
1204
- msgid ""
1205
- "Select the field groups you would like to export and then select your export "
1206
- "method. Use the download button to export to a .json file which you can then "
1207
- "import to another ACF installation. Use the generate button to export to PHP "
1208
- "code which you can place in your theme."
1209
- msgstr ""
1210
- "Выберите группы полей, которые вы хотите экспортировать, а также метод "
1211
- "экспорта. Используйте кнопку <b>Загрузить файл</b> для загрузки JSON файла "
1212
- "или <b>Генерировать код</b> для получения кода, который можно интегрировать "
1213
- "в шаблон."
1214
-
1215
- #: includes/admin/views/settings-tools.php:50
1216
- msgid "Download export file"
1217
- msgstr "Загрузить файл"
1218
-
1219
- #: includes/admin/views/settings-tools.php:51
1220
- msgid "Generate export code"
1221
- msgstr "Генерировать код"
1222
-
1223
- #: includes/admin/views/settings-tools.php:64
1224
- msgid "Import Field Groups"
1225
- msgstr "Импорт групп полей"
1226
-
1227
- #: includes/admin/views/settings-tools.php:67
1228
- msgid ""
1229
- "Select the Advanced Custom Fields JSON file you would like to import. When "
1230
- "you click the import button below, ACF will import the field groups."
1231
- msgstr "Выберите файл конфигурации в формате JSON для импорта групп полей"
1232
-
1233
- #: includes/admin/views/settings-tools.php:77
1234
- #: includes/fields/class-acf-field-file.php:35
1235
- msgid "Select File"
1236
- msgstr "Выбрать файл"
1237
-
1238
- #: includes/admin/views/settings-tools.php:86
1239
- msgid "Import"
1240
- msgstr "Импорт"
1241
-
1242
- #: includes/api/api-helpers.php:856
1243
  msgid "Thumbnail"
1244
  msgstr "Миниатюра"
1245
 
1246
- #: includes/api/api-helpers.php:857
1247
  msgid "Medium"
1248
  msgstr "Средний"
1249
 
1250
- #: includes/api/api-helpers.php:858
1251
  msgid "Large"
1252
  msgstr "Большой"
1253
 
1254
- #: includes/api/api-helpers.php:907
1255
  msgid "Full Size"
1256
  msgstr "Полный"
1257
 
1258
- #: includes/api/api-helpers.php:1248 includes/api/api-helpers.php:1831
1259
- #: pro/fields/class-acf-field-clone.php:992
1260
  msgid "(no title)"
1261
  msgstr "(нет заголовка)"
1262
 
1263
- #: includes/api/api-helpers.php:1868
1264
- #: includes/fields/class-acf-field-page_link.php:269
1265
- #: includes/fields/class-acf-field-post_object.php:268
1266
- #: includes/fields/class-acf-field-taxonomy.php:986
1267
- msgid "Parent"
1268
- msgstr "Родитель"
1269
-
1270
- #: includes/api/api-helpers.php:3885
1271
  #, php-format
1272
  msgid "Image width must be at least %dpx."
1273
  msgstr "Изображение не должно быть уже чем %d пикселей."
1274
 
1275
- #: includes/api/api-helpers.php:3890
1276
  #, php-format
1277
  msgid "Image width must not exceed %dpx."
1278
  msgstr "Изображение не должно быть шире чем %d пикселей."
1279
 
1280
- #: includes/api/api-helpers.php:3906
1281
  #, php-format
1282
  msgid "Image height must be at least %dpx."
1283
  msgstr "Изображение должно иметь высоту как минимум %d пикселей."
1284
 
1285
- #: includes/api/api-helpers.php:3911
1286
  #, php-format
1287
  msgid "Image height must not exceed %dpx."
1288
  msgstr "Изображение должно иметь высоту не более чем %d пикселей."
1289
 
1290
- #: includes/api/api-helpers.php:3929
1291
  #, php-format
1292
  msgid "File size must be at least %s."
1293
  msgstr "Размер файла должен быть не менее чем %s."
1294
 
1295
- #: includes/api/api-helpers.php:3934
1296
  #, php-format
1297
  msgid "File size must must not exceed %s."
1298
  msgstr "Размер файла должен быть не более чем %s."
1299
 
1300
- #: includes/api/api-helpers.php:3968
1301
  #, php-format
1302
  msgid "File type must be %s."
1303
  msgstr "Файл должен иметь тип: %s."
1304
 
1305
- #: includes/fields.php:144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1306
  msgid "Basic"
1307
  msgstr "Основное"
1308
 
1309
- #: includes/fields.php:145 includes/forms/form-front.php:47
1310
  msgid "Content"
1311
  msgstr "Содержание"
1312
 
1313
- #: includes/fields.php:146
1314
  msgid "Choice"
1315
  msgstr "Выбор"
1316
 
1317
- #: includes/fields.php:147
1318
  msgid "Relational"
1319
  msgstr "Отношение"
1320
 
1321
- #: includes/fields.php:148
1322
  msgid "jQuery"
1323
  msgstr "jQuery"
1324
 
1325
- #: includes/fields.php:149
1326
- #: includes/fields/class-acf-field-button-group.php:177
1327
- #: includes/fields/class-acf-field-checkbox.php:384
1328
  #: includes/fields/class-acf-field-group.php:474
1329
- #: includes/fields/class-acf-field-radio.php:285
1330
- #: pro/fields/class-acf-field-clone.php:839
1331
- #: pro/fields/class-acf-field-flexible-content.php:552
1332
- #: pro/fields/class-acf-field-flexible-content.php:601
1333
- #: pro/fields/class-acf-field-repeater.php:450
1334
  msgid "Layout"
1335
  msgstr "Блок"
1336
 
1337
- #: includes/fields.php:326
1338
- msgid "Field type does not exist"
1339
- msgstr "Тип поля не существует"
1340
 
1341
- #: includes/fields.php:326
1342
- msgid "Unknown"
1343
- msgstr "Неизвестно"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1344
 
1345
  #: includes/fields/class-acf-field-button-group.php:24
1346
  msgid "Button Group"
@@ -1349,21 +1501,21 @@ msgstr "Группа кнопок"
1349
  #: includes/fields/class-acf-field-button-group.php:149
1350
  #: includes/fields/class-acf-field-checkbox.php:344
1351
  #: includes/fields/class-acf-field-radio.php:235
1352
- #: includes/fields/class-acf-field-select.php:368
1353
  msgid "Choices"
1354
  msgstr "Варианты"
1355
 
1356
  #: includes/fields/class-acf-field-button-group.php:150
1357
  #: includes/fields/class-acf-field-checkbox.php:345
1358
  #: includes/fields/class-acf-field-radio.php:236
1359
- #: includes/fields/class-acf-field-select.php:369
1360
  msgid "Enter each choice on a new line."
1361
  msgstr "Введите каждый вариант выбора на новую строку."
1362
 
1363
  #: includes/fields/class-acf-field-button-group.php:150
1364
  #: includes/fields/class-acf-field-checkbox.php:345
1365
  #: includes/fields/class-acf-field-radio.php:236
1366
- #: includes/fields/class-acf-field-select.php:369
1367
  msgid "For more control, you may specify both a value and label like this:"
1368
  msgstr ""
1369
  "Для большего контроля, вы можете ввести значение и ярлык по следующему "
@@ -1372,7 +1524,7 @@ msgstr ""
1372
  #: includes/fields/class-acf-field-button-group.php:150
1373
  #: includes/fields/class-acf-field-checkbox.php:345
1374
  #: includes/fields/class-acf-field-radio.php:236
1375
- #: includes/fields/class-acf-field-select.php:369
1376
  msgid "red : Red"
1377
  msgstr "red : Красный"
1378
 
@@ -1380,87 +1532,87 @@ msgstr "red : Красный"
1380
  #: includes/fields/class-acf-field-page_link.php:513
1381
  #: includes/fields/class-acf-field-post_object.php:412
1382
  #: includes/fields/class-acf-field-radio.php:244
1383
- #: includes/fields/class-acf-field-select.php:386
1384
- #: includes/fields/class-acf-field-taxonomy.php:793
1385
- #: includes/fields/class-acf-field-user.php:408
1386
  msgid "Allow Null?"
1387
  msgstr "Разрешить пустое значение?"
1388
 
1389
  #: includes/fields/class-acf-field-button-group.php:168
1390
- #: includes/fields/class-acf-field-checkbox.php:375
1391
  #: includes/fields/class-acf-field-color_picker.php:131
1392
  #: includes/fields/class-acf-field-email.php:118
1393
  #: includes/fields/class-acf-field-number.php:127
1394
- #: includes/fields/class-acf-field-radio.php:276
1395
- #: includes/fields/class-acf-field-range.php:148
1396
- #: includes/fields/class-acf-field-select.php:377
1397
  #: includes/fields/class-acf-field-text.php:119
1398
  #: includes/fields/class-acf-field-textarea.php:102
1399
  #: includes/fields/class-acf-field-true_false.php:135
1400
  #: includes/fields/class-acf-field-url.php:100
1401
- #: includes/fields/class-acf-field-wysiwyg.php:410
1402
  msgid "Default Value"
1403
  msgstr "Значение по умолчанию"
1404
 
1405
  #: includes/fields/class-acf-field-button-group.php:169
1406
  #: includes/fields/class-acf-field-email.php:119
1407
  #: includes/fields/class-acf-field-number.php:128
1408
- #: includes/fields/class-acf-field-radio.php:277
1409
- #: includes/fields/class-acf-field-range.php:149
1410
  #: includes/fields/class-acf-field-text.php:120
1411
  #: includes/fields/class-acf-field-textarea.php:103
1412
  #: includes/fields/class-acf-field-url.php:101
1413
- #: includes/fields/class-acf-field-wysiwyg.php:411
1414
  msgid "Appears when creating a new post"
1415
- msgstr "Заполняются при создании новой записи"
1416
 
1417
  #: includes/fields/class-acf-field-button-group.php:183
1418
- #: includes/fields/class-acf-field-checkbox.php:391
1419
- #: includes/fields/class-acf-field-radio.php:292
1420
  msgid "Horizontal"
1421
  msgstr "Горизонтальная"
1422
 
1423
  #: includes/fields/class-acf-field-button-group.php:184
1424
- #: includes/fields/class-acf-field-checkbox.php:390
1425
- #: includes/fields/class-acf-field-radio.php:291
1426
  msgid "Vertical"
1427
  msgstr "Вертикальная"
1428
 
1429
  #: includes/fields/class-acf-field-button-group.php:191
1430
- #: includes/fields/class-acf-field-checkbox.php:408
1431
- #: includes/fields/class-acf-field-file.php:200
1432
- #: includes/fields/class-acf-field-image.php:188
1433
  #: includes/fields/class-acf-field-link.php:166
1434
- #: includes/fields/class-acf-field-radio.php:299
1435
- #: includes/fields/class-acf-field-taxonomy.php:833
1436
  msgid "Return Value"
1437
  msgstr "Возвращаемое значение"
1438
 
1439
  #: includes/fields/class-acf-field-button-group.php:192
1440
- #: includes/fields/class-acf-field-checkbox.php:409
1441
- #: includes/fields/class-acf-field-file.php:201
1442
- #: includes/fields/class-acf-field-image.php:189
1443
  #: includes/fields/class-acf-field-link.php:167
1444
- #: includes/fields/class-acf-field-radio.php:300
1445
  msgid "Specify the returned value on front end"
1446
  msgstr "Укажите возвращаемое значение для поля"
1447
 
1448
  #: includes/fields/class-acf-field-button-group.php:197
1449
- #: includes/fields/class-acf-field-checkbox.php:414
1450
- #: includes/fields/class-acf-field-radio.php:305
1451
- #: includes/fields/class-acf-field-select.php:431
1452
  msgid "Value"
1453
  msgstr "Значение"
1454
 
1455
  #: includes/fields/class-acf-field-button-group.php:199
1456
- #: includes/fields/class-acf-field-checkbox.php:416
1457
- #: includes/fields/class-acf-field-radio.php:307
1458
- #: includes/fields/class-acf-field-select.php:433
1459
  msgid "Both (Array)"
1460
  msgstr "Оба (массив)"
1461
 
1462
  #: includes/fields/class-acf-field-checkbox.php:25
1463
- #: includes/fields/class-acf-field-taxonomy.php:780
1464
  msgid "Checkbox"
1465
  msgstr "Флажок (checkbox)"
1466
 
@@ -1488,16 +1640,16 @@ msgstr "Сохранить пользовательские"
1488
  msgid "Save 'custom' values to the field's choices"
1489
  msgstr "Сохранить пользовательские варианты в настройках поля"
1490
 
1491
- #: includes/fields/class-acf-field-checkbox.php:376
1492
- #: includes/fields/class-acf-field-select.php:378
1493
  msgid "Enter each default value on a new line"
1494
  msgstr "Введите каждое значение на новую строку."
1495
 
1496
- #: includes/fields/class-acf-field-checkbox.php:398
1497
  msgid "Toggle"
1498
  msgstr "Переключить"
1499
 
1500
- #: includes/fields/class-acf-field-checkbox.php:399
1501
  msgid "Prepend an extra checkbox to toggle all choices"
1502
  msgstr "Добавить чекбокс для переключения всех чекбоксов"
1503
 
@@ -1525,77 +1677,78 @@ msgstr "Текущий цвет"
1525
  msgid "Date Picker"
1526
  msgstr "Дата"
1527
 
1528
- #: includes/fields/class-acf-field-date_picker.php:33
1529
  msgctxt "Date Picker JS closeText"
1530
  msgid "Done"
1531
  msgstr "Готово"
1532
 
1533
- #: includes/fields/class-acf-field-date_picker.php:34
1534
  msgctxt "Date Picker JS currentText"
1535
  msgid "Today"
1536
  msgstr "Сегодня"
1537
 
1538
- #: includes/fields/class-acf-field-date_picker.php:35
1539
  msgctxt "Date Picker JS nextText"
1540
  msgid "Next"
1541
  msgstr "Дальше"
1542
 
1543
- #: includes/fields/class-acf-field-date_picker.php:36
1544
  msgctxt "Date Picker JS prevText"
1545
  msgid "Prev"
1546
  msgstr "Назад"
1547
 
1548
- #: includes/fields/class-acf-field-date_picker.php:37
1549
  msgctxt "Date Picker JS weekHeader"
1550
  msgid "Wk"
1551
  msgstr "Неделя"
1552
 
1553
- #: includes/fields/class-acf-field-date_picker.php:207
1554
- #: includes/fields/class-acf-field-date_time_picker.php:181
1555
  #: includes/fields/class-acf-field-time_picker.php:109
1556
  msgid "Display Format"
1557
  msgstr "Отображаемый формат"
1558
 
1559
- #: includes/fields/class-acf-field-date_picker.php:208
1560
- #: includes/fields/class-acf-field-date_time_picker.php:182
1561
  #: includes/fields/class-acf-field-time_picker.php:110
1562
  msgid "The format displayed when editing a post"
1563
  msgstr "Формат во время редактирования поля"
1564
 
1565
- #: includes/fields/class-acf-field-date_picker.php:216
1566
- #: includes/fields/class-acf-field-date_picker.php:247
1567
- #: includes/fields/class-acf-field-date_time_picker.php:191
1568
- #: includes/fields/class-acf-field-date_time_picker.php:208
1569
  #: includes/fields/class-acf-field-time_picker.php:117
1570
  #: includes/fields/class-acf-field-time_picker.php:132
1571
  msgid "Custom:"
1572
  msgstr "Пользовательский:"
1573
 
1574
- #: includes/fields/class-acf-field-date_picker.php:226
1575
  msgid "Save Format"
1576
  msgstr "Формат сохраняемого значения"
1577
 
1578
- #: includes/fields/class-acf-field-date_picker.php:227
1579
  msgid "The format used when saving a value"
1580
  msgstr "Формат для сохранения в базе данных"
1581
 
1582
- #: includes/fields/class-acf-field-date_picker.php:237
1583
- #: includes/fields/class-acf-field-date_time_picker.php:198
1584
  #: includes/fields/class-acf-field-post_object.php:432
1585
- #: includes/fields/class-acf-field-relationship.php:697
1586
- #: includes/fields/class-acf-field-select.php:426
1587
  #: includes/fields/class-acf-field-time_picker.php:124
 
1588
  msgid "Return Format"
1589
  msgstr "Возвращаемый формат"
1590
 
1591
- #: includes/fields/class-acf-field-date_picker.php:238
1592
- #: includes/fields/class-acf-field-date_time_picker.php:199
1593
  #: includes/fields/class-acf-field-time_picker.php:125
1594
  msgid "The format returned via template functions"
1595
  msgstr "Формат возвращаемого значения"
1596
 
1597
- #: includes/fields/class-acf-field-date_picker.php:256
1598
- #: includes/fields/class-acf-field-date_time_picker.php:215
1599
  msgid "Week Starts On"
1600
  msgstr "День начала недели"
1601
 
@@ -1603,77 +1756,77 @@ msgstr "День начала недели"
1603
  msgid "Date Time Picker"
1604
  msgstr "Дата и время"
1605
 
1606
- #: includes/fields/class-acf-field-date_time_picker.php:33
1607
  msgctxt "Date Time Picker JS timeOnlyTitle"
1608
  msgid "Choose Time"
1609
  msgstr "Выберите время"
1610
 
1611
- #: includes/fields/class-acf-field-date_time_picker.php:34
1612
  msgctxt "Date Time Picker JS timeText"
1613
  msgid "Time"
1614
  msgstr "Время"
1615
 
1616
- #: includes/fields/class-acf-field-date_time_picker.php:35
1617
  msgctxt "Date Time Picker JS hourText"
1618
  msgid "Hour"
1619
  msgstr "Час"
1620
 
1621
- #: includes/fields/class-acf-field-date_time_picker.php:36
1622
  msgctxt "Date Time Picker JS minuteText"
1623
  msgid "Minute"
1624
  msgstr "Минута"
1625
 
1626
- #: includes/fields/class-acf-field-date_time_picker.php:37
1627
  msgctxt "Date Time Picker JS secondText"
1628
  msgid "Second"
1629
  msgstr "Секунда"
1630
 
1631
- #: includes/fields/class-acf-field-date_time_picker.php:38
1632
  msgctxt "Date Time Picker JS millisecText"
1633
  msgid "Millisecond"
1634
  msgstr "Миллисекунда"
1635
 
1636
- #: includes/fields/class-acf-field-date_time_picker.php:39
1637
  msgctxt "Date Time Picker JS microsecText"
1638
  msgid "Microsecond"
1639
  msgstr "Микросекунда"
1640
 
1641
- #: includes/fields/class-acf-field-date_time_picker.php:40
1642
  msgctxt "Date Time Picker JS timezoneText"
1643
  msgid "Time Zone"
1644
  msgstr "Часовой пояс"
1645
 
1646
- #: includes/fields/class-acf-field-date_time_picker.php:41
1647
  msgctxt "Date Time Picker JS currentText"
1648
  msgid "Now"
1649
  msgstr "Сейчас"
1650
 
1651
- #: includes/fields/class-acf-field-date_time_picker.php:42
1652
  msgctxt "Date Time Picker JS closeText"
1653
  msgid "Done"
1654
  msgstr "Готово"
1655
 
1656
- #: includes/fields/class-acf-field-date_time_picker.php:43
1657
  msgctxt "Date Time Picker JS selectText"
1658
  msgid "Select"
1659
  msgstr "Выбрать"
1660
 
1661
- #: includes/fields/class-acf-field-date_time_picker.php:45
1662
  msgctxt "Date Time Picker JS amText"
1663
  msgid "AM"
1664
  msgstr "ДП"
1665
 
1666
- #: includes/fields/class-acf-field-date_time_picker.php:46
1667
  msgctxt "Date Time Picker JS amTextShort"
1668
  msgid "A"
1669
  msgstr "Д"
1670
 
1671
- #: includes/fields/class-acf-field-date_time_picker.php:49
1672
  msgctxt "Date Time Picker JS pmText"
1673
  msgid "PM"
1674
  msgstr "ПП"
1675
 
1676
- #: includes/fields/class-acf-field-date_time_picker.php:50
1677
  msgctxt "Date Time Picker JS pmTextShort"
1678
  msgid "P"
1679
  msgstr "П"
@@ -1703,7 +1856,7 @@ msgstr "Появляется перед полем ввода"
1703
  #: includes/fields/class-acf-field-email.php:136
1704
  #: includes/fields/class-acf-field-number.php:145
1705
  #: includes/fields/class-acf-field-password.php:80
1706
- #: includes/fields/class-acf-field-range.php:187
1707
  #: includes/fields/class-acf-field-text.php:137
1708
  msgid "Prepend"
1709
  msgstr "Текст перед полем"
@@ -1711,7 +1864,7 @@ msgstr "Текст перед полем"
1711
  #: includes/fields/class-acf-field-email.php:137
1712
  #: includes/fields/class-acf-field-number.php:146
1713
  #: includes/fields/class-acf-field-password.php:81
1714
- #: includes/fields/class-acf-field-range.php:188
1715
  #: includes/fields/class-acf-field-text.php:138
1716
  msgid "Appears before the input"
1717
  msgstr "Текст перед полем ввода"
@@ -1719,7 +1872,7 @@ msgstr "Текст перед полем ввода"
1719
  #: includes/fields/class-acf-field-email.php:145
1720
  #: includes/fields/class-acf-field-number.php:154
1721
  #: includes/fields/class-acf-field-password.php:89
1722
- #: includes/fields/class-acf-field-range.php:196
1723
  #: includes/fields/class-acf-field-text.php:146
1724
  msgid "Append"
1725
  msgstr "Текст после поля"
@@ -1727,7 +1880,7 @@ msgstr "Текст после поля"
1727
  #: includes/fields/class-acf-field-email.php:146
1728
  #: includes/fields/class-acf-field-number.php:155
1729
  #: includes/fields/class-acf-field-password.php:90
1730
- #: includes/fields/class-acf-field-range.php:197
1731
  #: includes/fields/class-acf-field-text.php:147
1732
  msgid "Appears after the input"
1733
  msgstr "Текст после поля ввода"
@@ -1736,72 +1889,58 @@ msgstr "Текст после поля ввода"
1736
  msgid "File"
1737
  msgstr "Файл"
1738
 
1739
- #: includes/fields/class-acf-field-file.php:36
1740
  msgid "Edit File"
1741
  msgstr "Изменить файл"
1742
 
1743
- #: includes/fields/class-acf-field-file.php:37
1744
  msgid "Update File"
1745
  msgstr "Обновить файл"
1746
 
1747
- #: includes/fields/class-acf-field-file.php:38
1748
- #: includes/fields/class-acf-field-image.php:43 includes/media.php:57
1749
- #: pro/fields/class-acf-field-gallery.php:44
1750
- msgid "Uploaded to this post"
1751
- msgstr "Загружено для этой записи"
1752
-
1753
- #: includes/fields/class-acf-field-file.php:126
1754
  msgid "File name"
1755
  msgstr "Имя файла"
1756
 
1757
- #: includes/fields/class-acf-field-file.php:130
1758
- #: includes/fields/class-acf-field-file.php:233
1759
- #: includes/fields/class-acf-field-file.php:244
1760
- #: includes/fields/class-acf-field-image.php:248
1761
- #: includes/fields/class-acf-field-image.php:277
1762
- #: pro/fields/class-acf-field-gallery.php:690
1763
- #: pro/fields/class-acf-field-gallery.php:719
1764
  msgid "File size"
1765
  msgstr "Размер файла"
1766
 
1767
- #: includes/fields/class-acf-field-file.php:139
1768
- #: includes/fields/class-acf-field-image.php:124
1769
- #: includes/fields/class-acf-field-link.php:140 includes/input.php:269
1770
- #: pro/fields/class-acf-field-gallery.php:343
1771
- #: pro/fields/class-acf-field-gallery.php:531
1772
- msgid "Remove"
1773
- msgstr "Убрать"
1774
-
1775
- #: includes/fields/class-acf-field-file.php:155
1776
  msgid "Add File"
1777
  msgstr "Добавить файл"
1778
 
1779
- #: includes/fields/class-acf-field-file.php:206
1780
  msgid "File Array"
1781
  msgstr "Массив"
1782
 
1783
- #: includes/fields/class-acf-field-file.php:207
1784
  msgid "File URL"
1785
  msgstr "Ссылка на файл"
1786
 
1787
- #: includes/fields/class-acf-field-file.php:208
1788
  msgid "File ID"
1789
  msgstr "ID файла"
1790
 
1791
- #: includes/fields/class-acf-field-file.php:215
1792
- #: includes/fields/class-acf-field-image.php:213
1793
- #: pro/fields/class-acf-field-gallery.php:655
1794
  msgid "Library"
1795
  msgstr "Библиотека"
1796
 
1797
- #: includes/fields/class-acf-field-file.php:216
1798
- #: includes/fields/class-acf-field-image.php:214
1799
- #: pro/fields/class-acf-field-gallery.php:656
1800
  msgid "Limit the media library choice"
1801
  msgstr "Ограничение количества выбранных элементов"
1802
 
1803
- #: includes/fields/class-acf-field-file.php:221
1804
- #: includes/fields/class-acf-field-image.php:219
1805
  #: includes/locations/class-acf-location-attachment.php:101
1806
  #: includes/locations/class-acf-location-comment.php:79
1807
  #: includes/locations/class-acf-location-nav-menu.php:102
@@ -1809,42 +1948,42 @@ msgstr "Ограничение количества выбранных элем
1809
  #: includes/locations/class-acf-location-user-form.php:87
1810
  #: includes/locations/class-acf-location-user-role.php:111
1811
  #: includes/locations/class-acf-location-widget.php:83
1812
- #: pro/fields/class-acf-field-gallery.php:661
1813
  msgid "All"
1814
  msgstr "Все"
1815
 
1816
- #: includes/fields/class-acf-field-file.php:222
1817
- #: includes/fields/class-acf-field-image.php:220
1818
- #: pro/fields/class-acf-field-gallery.php:662
1819
  msgid "Uploaded to post"
1820
  msgstr "Загружено в запись"
1821
 
1822
- #: includes/fields/class-acf-field-file.php:229
1823
- #: includes/fields/class-acf-field-image.php:227
1824
- #: pro/fields/class-acf-field-gallery.php:669
1825
  msgid "Minimum"
1826
  msgstr "Минимум"
1827
 
1828
- #: includes/fields/class-acf-field-file.php:230
1829
- #: includes/fields/class-acf-field-file.php:241
1830
  msgid "Restrict which files can be uploaded"
1831
  msgstr "Ограничить файлы, которые могут быть загружены"
1832
 
1833
- #: includes/fields/class-acf-field-file.php:240
1834
- #: includes/fields/class-acf-field-image.php:256
1835
- #: pro/fields/class-acf-field-gallery.php:698
1836
  msgid "Maximum"
1837
  msgstr "Максимум"
1838
 
1839
- #: includes/fields/class-acf-field-file.php:251
1840
- #: includes/fields/class-acf-field-image.php:285
1841
- #: pro/fields/class-acf-field-gallery.php:727
1842
  msgid "Allowed file types"
1843
  msgstr "Допустимые типы файлов"
1844
 
1845
- #: includes/fields/class-acf-field-file.php:252
1846
- #: includes/fields/class-acf-field-image.php:286
1847
- #: pro/fields/class-acf-field-gallery.php:728
1848
  msgid "Comma separated list. Leave blank for all types"
1849
  msgstr ""
1850
  "Для разделения типов файлов используйте запятые. Оставьте поле пустым для "
@@ -1854,54 +1993,50 @@ msgstr ""
1854
  msgid "Google Map"
1855
  msgstr "Расположение на карте"
1856
 
1857
- #: includes/fields/class-acf-field-google-map.php:40
1858
- msgid "Locating"
1859
- msgstr "Определение местоположение"
1860
-
1861
- #: includes/fields/class-acf-field-google-map.php:41
1862
  msgid "Sorry, this browser does not support geolocation"
1863
  msgstr "Извините, но ваш браузер не поддерживает определение местоположения"
1864
 
1865
- #: includes/fields/class-acf-field-google-map.php:113
1866
  msgid "Clear location"
1867
  msgstr "Очистить местоположение"
1868
 
1869
- #: includes/fields/class-acf-field-google-map.php:114
1870
  msgid "Find current location"
1871
  msgstr "Определить текущее местоположение"
1872
 
1873
- #: includes/fields/class-acf-field-google-map.php:117
1874
  msgid "Search for address..."
1875
  msgstr "Поиск по адресу..."
1876
 
1877
- #: includes/fields/class-acf-field-google-map.php:147
1878
- #: includes/fields/class-acf-field-google-map.php:158
1879
  msgid "Center"
1880
  msgstr "Центрировать"
1881
 
1882
- #: includes/fields/class-acf-field-google-map.php:148
1883
- #: includes/fields/class-acf-field-google-map.php:159
1884
  msgid "Center the initial map"
1885
  msgstr "Центрировать изначальную карту"
1886
 
1887
- #: includes/fields/class-acf-field-google-map.php:170
1888
  msgid "Zoom"
1889
  msgstr "Масштаб"
1890
 
1891
- #: includes/fields/class-acf-field-google-map.php:171
1892
  msgid "Set the initial zoom level"
1893
  msgstr "Укажите начальный масштаб"
1894
 
1895
- #: includes/fields/class-acf-field-google-map.php:180
1896
- #: includes/fields/class-acf-field-image.php:239
1897
- #: includes/fields/class-acf-field-image.php:268
1898
- #: includes/fields/class-acf-field-oembed.php:281
1899
- #: pro/fields/class-acf-field-gallery.php:681
1900
- #: pro/fields/class-acf-field-gallery.php:710
1901
  msgid "Height"
1902
  msgstr "Высота"
1903
 
1904
- #: includes/fields/class-acf-field-google-map.php:181
1905
  msgid "Customise the map height"
1906
  msgstr "Настройка высоты карты"
1907
 
@@ -1910,33 +2045,33 @@ msgid "Group"
1910
  msgstr "Группа"
1911
 
1912
  #: includes/fields/class-acf-field-group.php:459
1913
- #: pro/fields/class-acf-field-repeater.php:389
1914
  msgid "Sub Fields"
1915
  msgstr "Вложенные поля"
1916
 
1917
  #: includes/fields/class-acf-field-group.php:475
1918
- #: pro/fields/class-acf-field-clone.php:840
1919
  msgid "Specify the style used to render the selected fields"
1920
  msgstr "Укажите способ отображения клонированных полей"
1921
 
1922
  #: includes/fields/class-acf-field-group.php:480
1923
- #: pro/fields/class-acf-field-clone.php:845
1924
- #: pro/fields/class-acf-field-flexible-content.php:612
1925
- #: pro/fields/class-acf-field-repeater.php:458
1926
  msgid "Block"
1927
  msgstr "Блок"
1928
 
1929
  #: includes/fields/class-acf-field-group.php:481
1930
- #: pro/fields/class-acf-field-clone.php:846
1931
- #: pro/fields/class-acf-field-flexible-content.php:611
1932
- #: pro/fields/class-acf-field-repeater.php:457
1933
  msgid "Table"
1934
  msgstr "Таблица"
1935
 
1936
  #: includes/fields/class-acf-field-group.php:482
1937
- #: pro/fields/class-acf-field-clone.php:847
1938
- #: pro/fields/class-acf-field-flexible-content.php:613
1939
- #: pro/fields/class-acf-field-repeater.php:459
1940
  msgid "Row"
1941
  msgstr "Строка"
1942
 
@@ -1944,64 +2079,58 @@ msgstr "Строка"
1944
  msgid "Image"
1945
  msgstr "Изображение"
1946
 
1947
- #: includes/fields/class-acf-field-image.php:40
1948
  msgid "Select Image"
1949
  msgstr "Выбрать изображение"
1950
 
1951
- #: includes/fields/class-acf-field-image.php:41
1952
- #: pro/fields/class-acf-field-gallery.php:42
1953
  msgid "Edit Image"
1954
  msgstr "Редактировать изображение"
1955
 
1956
- #: includes/fields/class-acf-field-image.php:42
1957
- #: pro/fields/class-acf-field-gallery.php:43
1958
  msgid "Update Image"
1959
  msgstr "Обновить изображение"
1960
 
1961
- #: includes/fields/class-acf-field-image.php:44
1962
- msgid "All images"
1963
- msgstr "Все изображения"
1964
-
1965
- #: includes/fields/class-acf-field-image.php:140
1966
  msgid "No image selected"
1967
  msgstr "Изображение не выбрано"
1968
 
1969
- #: includes/fields/class-acf-field-image.php:140
1970
  msgid "Add Image"
1971
  msgstr "Добавить изображение"
1972
 
1973
- #: includes/fields/class-acf-field-image.php:194
1974
  msgid "Image Array"
1975
  msgstr "Массив изображения"
1976
 
1977
- #: includes/fields/class-acf-field-image.php:195
1978
  msgid "Image URL"
1979
  msgstr "Ссылка на изображение"
1980
 
1981
- #: includes/fields/class-acf-field-image.php:196
1982
  msgid "Image ID"
1983
  msgstr "ID изображения"
1984
 
1985
- #: includes/fields/class-acf-field-image.php:203
1986
  msgid "Preview Size"
1987
  msgstr "Размер изображения"
1988
 
1989
- #: includes/fields/class-acf-field-image.php:204
1990
  msgid "Shown when entering data"
1991
  msgstr "Размер отображаемого изображения при редактировании"
1992
 
1993
- #: includes/fields/class-acf-field-image.php:228
1994
- #: includes/fields/class-acf-field-image.php:257
1995
- #: pro/fields/class-acf-field-gallery.php:670
1996
- #: pro/fields/class-acf-field-gallery.php:699
1997
  msgid "Restrict which images can be uploaded"
1998
  msgstr "Ограничить изображения, которые могут быть загружены"
1999
 
2000
- #: includes/fields/class-acf-field-image.php:231
2001
- #: includes/fields/class-acf-field-image.php:260
2002
- #: includes/fields/class-acf-field-oembed.php:270
2003
- #: pro/fields/class-acf-field-gallery.php:673
2004
- #: pro/fields/class-acf-field-gallery.php:702
2005
  msgid "Width"
2006
  msgstr "Ширина"
2007
 
@@ -2071,17 +2200,17 @@ msgid "Number"
2071
  msgstr "Число"
2072
 
2073
  #: includes/fields/class-acf-field-number.php:163
2074
- #: includes/fields/class-acf-field-range.php:157
2075
  msgid "Minimum Value"
2076
  msgstr "Минимальное значение"
2077
 
2078
  #: includes/fields/class-acf-field-number.php:172
2079
- #: includes/fields/class-acf-field-range.php:167
2080
  msgid "Maximum Value"
2081
  msgstr "Максимальное значение"
2082
 
2083
  #: includes/fields/class-acf-field-number.php:181
2084
- #: includes/fields/class-acf-field-range.php:177
2085
  msgid "Step Size"
2086
  msgstr "Шаг изменения"
2087
 
@@ -2103,21 +2232,12 @@ msgstr "Значение должно быть равным или меньши
2103
  msgid "oEmbed"
2104
  msgstr "Медиа"
2105
 
2106
- #: includes/fields/class-acf-field-oembed.php:219
2107
  msgid "Enter URL"
2108
  msgstr "Введите адрес ссылки"
2109
 
2110
- #: includes/fields/class-acf-field-oembed.php:234
2111
- #: includes/fields/class-acf-field-taxonomy.php:898
2112
- msgid "Error."
2113
- msgstr "Ошибка."
2114
-
2115
- #: includes/fields/class-acf-field-oembed.php:234
2116
- msgid "No embed found for the given URL."
2117
- msgstr "По указанной вами ссылке медиаконтент не обнаружен."
2118
-
2119
- #: includes/fields/class-acf-field-oembed.php:267
2120
- #: includes/fields/class-acf-field-oembed.php:278
2121
  msgid "Embed Size"
2122
  msgstr "Размер медиа"
2123
 
@@ -2125,27 +2245,33 @@ msgstr "Размер медиа"
2125
  msgid "Archives"
2126
  msgstr "Архивы"
2127
 
 
 
 
 
 
 
2128
  #: includes/fields/class-acf-field-page_link.php:485
2129
  #: includes/fields/class-acf-field-post_object.php:384
2130
- #: includes/fields/class-acf-field-relationship.php:623
2131
  msgid "Filter by Post Type"
2132
  msgstr "Фильтрация по типу записей"
2133
 
2134
  #: includes/fields/class-acf-field-page_link.php:493
2135
  #: includes/fields/class-acf-field-post_object.php:392
2136
- #: includes/fields/class-acf-field-relationship.php:631
2137
  msgid "All post types"
2138
  msgstr "Все типы записей"
2139
 
2140
  #: includes/fields/class-acf-field-page_link.php:499
2141
  #: includes/fields/class-acf-field-post_object.php:398
2142
- #: includes/fields/class-acf-field-relationship.php:637
2143
  msgid "Filter by Taxonomy"
2144
  msgstr "Фильтрация по таксономии"
2145
 
2146
  #: includes/fields/class-acf-field-page_link.php:507
2147
  #: includes/fields/class-acf-field-post_object.php:406
2148
- #: includes/fields/class-acf-field-relationship.php:645
2149
  msgid "All taxonomies"
2150
  msgstr "Все таксономии"
2151
 
@@ -2155,8 +2281,8 @@ msgstr "Разрешить ссылки на архивы"
2155
 
2156
  #: includes/fields/class-acf-field-page_link.php:533
2157
  #: includes/fields/class-acf-field-post_object.php:422
2158
- #: includes/fields/class-acf-field-select.php:396
2159
- #: includes/fields/class-acf-field-user.php:418
2160
  msgid "Select multiple values?"
2161
  msgstr "Выбрать несколько значений?"
2162
 
@@ -2166,12 +2292,12 @@ msgstr "Пароль"
2166
 
2167
  #: includes/fields/class-acf-field-post_object.php:25
2168
  #: includes/fields/class-acf-field-post_object.php:437
2169
- #: includes/fields/class-acf-field-relationship.php:702
2170
  msgid "Post Object"
2171
- msgstr "Одна запись"
2172
 
2173
  #: includes/fields/class-acf-field-post_object.php:438
2174
- #: includes/fields/class-acf-field-relationship.php:703
2175
  msgid "Post ID"
2176
  msgstr "ID записи"
2177
 
@@ -2203,67 +2329,64 @@ msgstr "Диапазон"
2203
  msgid "Relationship"
2204
  msgstr "Записи"
2205
 
2206
- #: includes/fields/class-acf-field-relationship.php:37
2207
- msgid "Minimum values reached ( {min} values )"
2208
- msgstr "Минимальное количество значений достигнуто ({min} значений)"
2209
-
2210
- #: includes/fields/class-acf-field-relationship.php:38
2211
  msgid "Maximum values reached ( {max} values )"
2212
  msgstr "Максимальное количество значений достигнуто ({max} значений)"
2213
 
2214
- #: includes/fields/class-acf-field-relationship.php:39
2215
  msgid "Loading"
2216
  msgstr "Загрузка"
2217
 
2218
- #: includes/fields/class-acf-field-relationship.php:40
2219
  msgid "No matches found"
2220
  msgstr "Совпадения не найдены"
2221
 
2222
- #: includes/fields/class-acf-field-relationship.php:423
2223
  msgid "Select post type"
2224
  msgstr "Выберите тип записи"
2225
 
2226
- #: includes/fields/class-acf-field-relationship.php:449
2227
  msgid "Select taxonomy"
2228
  msgstr "Выберите таксономию"
2229
 
2230
- #: includes/fields/class-acf-field-relationship.php:539
2231
  msgid "Search..."
2232
  msgstr "Поиск..."
2233
 
2234
- #: includes/fields/class-acf-field-relationship.php:651
2235
  msgid "Filters"
2236
  msgstr "Фильтры"
2237
 
2238
- #: includes/fields/class-acf-field-relationship.php:657
2239
  #: includes/locations/class-acf-location-post-type.php:27
2240
  msgid "Post Type"
2241
  msgstr "Тип записи"
2242
 
2243
- #: includes/fields/class-acf-field-relationship.php:658
2244
  #: includes/fields/class-acf-field-taxonomy.php:28
2245
- #: includes/fields/class-acf-field-taxonomy.php:763
 
2246
  msgid "Taxonomy"
2247
  msgstr "Таксономия"
2248
 
2249
- #: includes/fields/class-acf-field-relationship.php:665
2250
  msgid "Elements"
2251
  msgstr "Элементы"
2252
 
2253
- #: includes/fields/class-acf-field-relationship.php:666
2254
  msgid "Selected elements will be displayed in each result"
2255
- msgstr "Выбранные элементы будут отображены в каждом результате."
2256
 
2257
- #: includes/fields/class-acf-field-relationship.php:677
2258
  msgid "Minimum posts"
2259
  msgstr "Минимум записей"
2260
 
2261
- #: includes/fields/class-acf-field-relationship.php:686
2262
  msgid "Maximum posts"
2263
  msgstr "Максимум записей"
2264
 
2265
- #: includes/fields/class-acf-field-relationship.php:790
2266
- #: pro/fields/class-acf-field-gallery.php:800
2267
  #, php-format
2268
  msgid "%s requires at least %s selection"
2269
  msgid_plural "%s requires at least %s selections"
@@ -2272,90 +2395,85 @@ msgstr[1] "%s требует выбрать как минимум %s значе
2272
  msgstr[2] "%s требует выбрать как минимум %s значений"
2273
 
2274
  #: includes/fields/class-acf-field-select.php:25
2275
- #: includes/fields/class-acf-field-taxonomy.php:785
2276
  msgctxt "noun"
2277
  msgid "Select"
2278
  msgstr "Выбор (select)"
2279
 
2280
- #: includes/fields/class-acf-field-select.php:38
2281
  msgctxt "Select2 JS matches_1"
2282
  msgid "One result is available, press enter to select it."
2283
  msgstr "Доступно одно значение, нажмите Enter для его выбора."
2284
 
2285
- #: includes/fields/class-acf-field-select.php:39
2286
  #, php-format
2287
  msgctxt "Select2 JS matches_n"
2288
  msgid "%d results are available, use up and down arrow keys to navigate."
2289
  msgstr "%d значений доступно, используйте клавиши вверх и вниз для навигации."
2290
 
2291
- #: includes/fields/class-acf-field-select.php:40
2292
  msgctxt "Select2 JS matches_0"
2293
  msgid "No matches found"
2294
  msgstr "Подходящие значения не найдены"
2295
 
2296
- #: includes/fields/class-acf-field-select.php:41
2297
  msgctxt "Select2 JS input_too_short_1"
2298
  msgid "Please enter 1 or more characters"
2299
  msgstr "Пожалуйста, введите 1 символ или больше"
2300
 
2301
- #: includes/fields/class-acf-field-select.php:42
2302
  #, php-format
2303
  msgctxt "Select2 JS input_too_short_n"
2304
  msgid "Please enter %d or more characters"
2305
  msgstr "Пожалуйста, введите %d или больше символов"
2306
 
2307
- #: includes/fields/class-acf-field-select.php:43
2308
  msgctxt "Select2 JS input_too_long_1"
2309
  msgid "Please delete 1 character"
2310
  msgstr "Пожалуйста, удалите 1 символ"
2311
 
2312
- #: includes/fields/class-acf-field-select.php:44
2313
  #, php-format
2314
  msgctxt "Select2 JS input_too_long_n"
2315
  msgid "Please delete %d characters"
2316
  msgstr "Пожалуйста, удалите %d символов"
2317
 
2318
- #: includes/fields/class-acf-field-select.php:45
2319
  msgctxt "Select2 JS selection_too_long_1"
2320
  msgid "You can only select 1 item"
2321
  msgstr "Вы можете выбрать только одно значение"
2322
 
2323
- #: includes/fields/class-acf-field-select.php:46
2324
  #, php-format
2325
  msgctxt "Select2 JS selection_too_long_n"
2326
  msgid "You can only select %d items"
2327
  msgstr "Вы можете выбрать только %d значений"
2328
 
2329
- #: includes/fields/class-acf-field-select.php:47
2330
  msgctxt "Select2 JS load_more"
2331
  msgid "Loading more results&hellip;"
2332
  msgstr "Загрузка других значений&hellip;"
2333
 
2334
- #: includes/fields/class-acf-field-select.php:48
2335
  msgctxt "Select2 JS searching"
2336
  msgid "Searching&hellip;"
2337
  msgstr "Поиск&hellip;"
2338
 
2339
- #: includes/fields/class-acf-field-select.php:49
2340
  msgctxt "Select2 JS load_fail"
2341
  msgid "Loading failed"
2342
  msgstr "Не получилось загрузить"
2343
 
2344
- #: includes/fields/class-acf-field-select.php:255 includes/media.php:54
2345
- msgctxt "verb"
2346
- msgid "Select"
2347
- msgstr "Выбрать"
2348
-
2349
- #: includes/fields/class-acf-field-select.php:406
2350
  #: includes/fields/class-acf-field-true_false.php:144
2351
  msgid "Stylised UI"
2352
  msgstr "Стилизованный интерфейс"
2353
 
2354
- #: includes/fields/class-acf-field-select.php:416
2355
  msgid "Use AJAX to lazy load choices?"
2356
  msgstr "Использовать AJAX для загрузки вариантов выбора?"
2357
 
2358
- #: includes/fields/class-acf-field-select.php:427
2359
  msgid "Specify the value returned"
2360
  msgstr "Укажите возвращаемое значение"
2361
 
@@ -2367,128 +2485,98 @@ msgstr "Разделитель"
2367
  msgid "Tab"
2368
  msgstr "Вкладка"
2369
 
2370
- #: includes/fields/class-acf-field-tab.php:82
2371
- msgid ""
2372
- "The tab field will display incorrectly when added to a Table style repeater "
2373
- "field or flexible content field layout"
2374
- msgstr ""
2375
- "Вкладка может отображаться неправильно при добавлении в поля гибкого "
2376
- "содержания и повторителя в табличном стиле"
2377
-
2378
- #: includes/fields/class-acf-field-tab.php:83
2379
- msgid ""
2380
- "Use \"Tab Fields\" to better organize your edit screen by grouping fields "
2381
- "together."
2382
- msgstr "Используйте вкладки для лучшей организации редактирования групп полей"
2383
-
2384
- #: includes/fields/class-acf-field-tab.php:84
2385
- msgid ""
2386
- "All fields following this \"tab field\" (or until another \"tab field\" is "
2387
- "defined) will be grouped together using this field's label as the tab "
2388
- "heading."
2389
- msgstr ""
2390
- "Все поля после поля со вкладкой группируются на отдельной вкладке с "
2391
- "соответствующим названием."
2392
-
2393
- #: includes/fields/class-acf-field-tab.php:98
2394
  msgid "Placement"
2395
  msgstr "Расположение"
2396
 
2397
- #: includes/fields/class-acf-field-tab.php:110
2398
- msgid "End-point"
2399
- msgstr "Разделитель"
2400
-
2401
- #: includes/fields/class-acf-field-tab.php:111
2402
- msgid "Use this field as an end-point and start a new group of tabs"
2403
- msgstr ""
2404
- "Используйте это поле это поле в качестве разделителя между группами вкладок"
2405
 
2406
- #: includes/fields/class-acf-field-taxonomy.php:713
2407
  #, php-format
2408
  msgctxt "No terms"
2409
  msgid "No %s"
2410
  msgstr "Нет %s [нет терминов]"
2411
 
2412
- #: includes/fields/class-acf-field-taxonomy.php:732
2413
- msgid "None"
2414
- msgstr "Ничего"
2415
-
2416
- #: includes/fields/class-acf-field-taxonomy.php:764
2417
  msgid "Select the taxonomy to be displayed"
2418
  msgstr "Выберите таксономию для отображения"
2419
 
2420
- #: includes/fields/class-acf-field-taxonomy.php:773
2421
  msgid "Appearance"
2422
  msgstr "Отображение"
2423
 
2424
- #: includes/fields/class-acf-field-taxonomy.php:774
2425
  msgid "Select the appearance of this field"
2426
  msgstr "Выберите способ отображения поля"
2427
 
2428
- #: includes/fields/class-acf-field-taxonomy.php:779
2429
  msgid "Multiple Values"
2430
  msgstr "Несколько значений"
2431
 
2432
- #: includes/fields/class-acf-field-taxonomy.php:781
2433
  msgid "Multi Select"
2434
  msgstr "Множественный выбор"
2435
 
2436
- #: includes/fields/class-acf-field-taxonomy.php:783
2437
  msgid "Single Value"
2438
  msgstr "Одно значение"
2439
 
2440
- #: includes/fields/class-acf-field-taxonomy.php:784
2441
  msgid "Radio Buttons"
2442
  msgstr "Радио-кнопки"
2443
 
2444
- #: includes/fields/class-acf-field-taxonomy.php:803
2445
  msgid "Create Terms"
2446
  msgstr "Создание терминов"
2447
 
2448
- #: includes/fields/class-acf-field-taxonomy.php:804
2449
  msgid "Allow new terms to be created whilst editing"
2450
  msgstr "Разрешнить создавать новые термины во время редактирования"
2451
 
2452
- #: includes/fields/class-acf-field-taxonomy.php:813
2453
  msgid "Save Terms"
2454
  msgstr "Сохранение терминов"
2455
 
2456
- #: includes/fields/class-acf-field-taxonomy.php:814
2457
  msgid "Connect selected terms to the post"
2458
  msgstr "Связать выбранные термины с записью"
2459
 
2460
- #: includes/fields/class-acf-field-taxonomy.php:823
2461
  msgid "Load Terms"
2462
  msgstr "Загрузить термины"
2463
 
2464
- #: includes/fields/class-acf-field-taxonomy.php:824
2465
  msgid "Load value from posts terms"
2466
  msgstr "Загрузить значения из терминов записей"
2467
 
2468
- #: includes/fields/class-acf-field-taxonomy.php:838
2469
  msgid "Term Object"
2470
  msgstr "Объект термина"
2471
 
2472
- #: includes/fields/class-acf-field-taxonomy.php:839
2473
  msgid "Term ID"
2474
  msgstr "ID термина"
2475
 
2476
- #: includes/fields/class-acf-field-taxonomy.php:898
2477
  #, php-format
2478
  msgid "User unable to add new %s"
2479
  msgstr "У пользователя нет возможности добавить новый %s"
2480
 
2481
- #: includes/fields/class-acf-field-taxonomy.php:911
2482
  #, php-format
2483
  msgid "%s already exists"
2484
  msgstr "%s уже существует"
2485
 
2486
- #: includes/fields/class-acf-field-taxonomy.php:952
2487
  #, php-format
2488
  msgid "%s added"
2489
  msgstr "%s добавлен"
2490
 
2491
- #: includes/fields/class-acf-field-taxonomy.php:997
2492
  msgid "Add"
2493
  msgstr "Добавить"
2494
 
@@ -2526,18 +2614,6 @@ msgstr "Время"
2526
  msgid "True / False"
2527
  msgstr "Да / Нет"
2528
 
2529
- #: includes/fields/class-acf-field-true_false.php:79
2530
- #: includes/fields/class-acf-field-true_false.php:159 includes/input.php:267
2531
- #: pro/admin/views/html-settings-updates.php:89
2532
- msgid "Yes"
2533
- msgstr "Да"
2534
-
2535
- #: includes/fields/class-acf-field-true_false.php:80
2536
- #: includes/fields/class-acf-field-true_false.php:169 includes/input.php:268
2537
- #: pro/admin/views/html-settings-updates.php:99
2538
- msgid "No"
2539
- msgstr "Нет"
2540
-
2541
  #: includes/fields/class-acf-field-true_false.php:127
2542
  msgid "Displays text alongside the checkbox"
2543
  msgstr "Отображать текст рядом с переключателем"
@@ -2550,11 +2626,11 @@ msgstr "Включено"
2550
  msgid "Text shown when active"
2551
  msgstr "Текст в активном состоянии"
2552
 
2553
- #: includes/fields/class-acf-field-true_false.php:165
2554
  msgid "Off Text"
2555
  msgstr "Выключено"
2556
 
2557
- #: includes/fields/class-acf-field-true_false.php:166
2558
  msgid "Text shown when inactive"
2559
  msgstr "Текст в выключенном состоянии"
2560
 
@@ -2570,64 +2646,76 @@ msgstr "Значение должно быть корректной ссылко
2570
  msgid "User"
2571
  msgstr "Пользователь"
2572
 
2573
- #: includes/fields/class-acf-field-user.php:393
2574
  msgid "Filter by role"
2575
  msgstr "Фильтровать по группе"
2576
 
2577
- #: includes/fields/class-acf-field-user.php:401
2578
  msgid "All user roles"
2579
  msgstr "Все группы пользователей"
2580
 
 
 
 
 
 
 
 
 
 
 
 
 
2581
  #: includes/fields/class-acf-field-wysiwyg.php:25
2582
  msgid "Wysiwyg Editor"
2583
  msgstr "Редактор WordPress"
2584
 
2585
- #: includes/fields/class-acf-field-wysiwyg.php:359
2586
  msgid "Visual"
2587
  msgstr "Визуально"
2588
 
2589
- #: includes/fields/class-acf-field-wysiwyg.php:360
2590
  msgctxt "Name for the Text editor tab (formerly HTML)"
2591
  msgid "Text"
2592
  msgstr "Текст"
2593
 
2594
- #: includes/fields/class-acf-field-wysiwyg.php:366
2595
  msgid "Click to initialize TinyMCE"
2596
  msgstr "Нажмите для запуска TinyMCE"
2597
 
2598
- #: includes/fields/class-acf-field-wysiwyg.php:419
2599
  msgid "Tabs"
2600
  msgstr "Вкладки"
2601
 
2602
- #: includes/fields/class-acf-field-wysiwyg.php:424
2603
  msgid "Visual & Text"
2604
  msgstr "Визуально и текст"
2605
 
2606
- #: includes/fields/class-acf-field-wysiwyg.php:425
2607
  msgid "Visual Only"
2608
  msgstr "Только визуальный редактор"
2609
 
2610
- #: includes/fields/class-acf-field-wysiwyg.php:426
2611
  msgid "Text Only"
2612
  msgstr "Только текстовый редактор"
2613
 
2614
- #: includes/fields/class-acf-field-wysiwyg.php:433
2615
  msgid "Toolbar"
2616
  msgstr "Панель инструментов"
2617
 
2618
- #: includes/fields/class-acf-field-wysiwyg.php:443
2619
  msgid "Show Media Upload Buttons?"
2620
  msgstr "Кнопки загрузки медиа"
2621
 
2622
- #: includes/fields/class-acf-field-wysiwyg.php:453
2623
  msgid "Delay initialization?"
2624
  msgstr "Отложенная инициализация"
2625
 
2626
- #: includes/fields/class-acf-field-wysiwyg.php:454
2627
  msgid "TinyMCE will not be initalized until field is clicked"
2628
  msgstr "TinyMCE не будет инициализирован до клика по полю"
2629
 
2630
- #: includes/forms/form-comment.php:166 includes/forms/form-post.php:303
2631
  #: pro/admin/admin-options-page.php:308
2632
  msgid "Edit field group"
2633
  msgstr "Редактировать группу полей"
@@ -2636,8 +2724,8 @@ msgstr "Редактировать группу полей"
2636
  msgid "Validate Email"
2637
  msgstr "Проверка Email"
2638
 
2639
- #: includes/forms/form-front.php:103
2640
- #: pro/fields/class-acf-field-gallery.php:573 pro/options-page.php:81
2641
  msgid "Update"
2642
  msgstr "Обновить"
2643
 
@@ -2645,48 +2733,10 @@ msgstr "Обновить"
2645
  msgid "Post updated"
2646
  msgstr "Запись обновлена"
2647
 
2648
- #: includes/forms/form-front.php:229
2649
  msgid "Spam Detected"
2650
  msgstr "Обнаружен спам"
2651
 
2652
- #: includes/input.php:259
2653
- msgid "Expand Details"
2654
- msgstr "Показать детали"
2655
-
2656
- #: includes/input.php:260
2657
- msgid "Collapse Details"
2658
- msgstr "Скрыть детали"
2659
-
2660
- #: includes/input.php:261
2661
- msgid "Validation successful"
2662
- msgstr "Проверка успешно выполнена"
2663
-
2664
- #: includes/input.php:262 includes/validation.php:285
2665
- #: includes/validation.php:296
2666
- msgid "Validation failed"
2667
- msgstr "Проверка не пройдена"
2668
-
2669
- #: includes/input.php:263
2670
- msgid "1 field requires attention"
2671
- msgstr "1 поле требует вашего внимания"
2672
-
2673
- #: includes/input.php:264
2674
- #, php-format
2675
- msgid "%d fields require attention"
2676
- msgstr "%d полей требуют вашего внимания"
2677
-
2678
- #: includes/input.php:265
2679
- msgid "Restricted"
2680
- msgstr "Ограничено"
2681
-
2682
- #: includes/input.php:266
2683
- msgid "Are you sure?"
2684
- msgstr "Вы уверены?"
2685
-
2686
- #: includes/input.php:270
2687
- msgid "Cancel"
2688
- msgstr "Отмена"
2689
-
2690
  #: includes/locations.php:93 includes/locations/class-acf-location-post.php:27
2691
  msgid "Post"
2692
  msgstr "Запись"
@@ -2699,6 +2749,14 @@ msgstr "Страница"
2699
  msgid "Forms"
2700
  msgstr "Формы"
2701
 
 
 
 
 
 
 
 
 
2702
  #: includes/locations/class-acf-location-attachment.php:27
2703
  msgid "Attachment"
2704
  msgstr "Медиафайл"
@@ -2769,23 +2827,23 @@ msgstr "Шаблон по умолчанию"
2769
  msgid "Page Type"
2770
  msgstr "Тип страницы"
2771
 
2772
- #: includes/locations/class-acf-location-page-type.php:145
2773
  msgid "Front Page"
2774
  msgstr "Главная страница"
2775
 
2776
- #: includes/locations/class-acf-location-page-type.php:146
2777
  msgid "Posts Page"
2778
  msgstr "Страница записей"
2779
 
2780
- #: includes/locations/class-acf-location-page-type.php:147
2781
  msgid "Top Level Page (no parent)"
2782
  msgstr "Страница верхнего уровня (без родителя)"
2783
 
2784
- #: includes/locations/class-acf-location-page-type.php:148
2785
  msgid "Parent Page (has children)"
2786
  msgstr "Родительская страница (есть дочерние страницы)"
2787
 
2788
- #: includes/locations/class-acf-location-page-type.php:149
2789
  msgid "Child Page (has parent)"
2790
  msgstr "Дочерняя страница (есть родительские страницы)"
2791
 
@@ -2809,10 +2867,6 @@ msgstr "Таксономия записи"
2809
  msgid "Post Template"
2810
  msgstr "Шаблон записи"
2811
 
2812
- #: includes/locations/class-acf-location-taxonomy.php:27
2813
- msgid "Taxonomy Term"
2814
- msgstr "Таксономия"
2815
-
2816
  #: includes/locations/class-acf-location-user-form.php:27
2817
  msgid "User Form"
2818
  msgstr "Пользователь"
@@ -2833,16 +2887,6 @@ msgstr "Группа пользователя"
2833
  msgid "Widget"
2834
  msgstr "Виджет"
2835
 
2836
- #: includes/media.php:55
2837
- msgctxt "verb"
2838
- msgid "Edit"
2839
- msgstr "Изменить"
2840
-
2841
- #: includes/media.php:56
2842
- msgctxt "verb"
2843
- msgid "Update"
2844
- msgstr "Обновить"
2845
-
2846
  #: includes/validation.php:364
2847
  #, php-format
2848
  msgid "%s value is required"
@@ -2938,266 +2982,262 @@ msgctxt "noun"
2938
  msgid "Clone"
2939
  msgstr "Клон"
2940
 
2941
- #: pro/fields/class-acf-field-clone.php:808
2942
  msgid "Select one or more fields you wish to clone"
2943
  msgstr "Выберите одно или несколько полей, которые вы хотите клонировать"
2944
 
2945
- #: pro/fields/class-acf-field-clone.php:825
2946
  msgid "Display"
2947
  msgstr "Способ отображения"
2948
 
2949
- #: pro/fields/class-acf-field-clone.php:826
2950
  msgid "Specify the style used to render the clone field"
2951
  msgstr "Выберите стиль отображения клонированных полей"
2952
 
2953
- #: pro/fields/class-acf-field-clone.php:831
2954
  msgid "Group (displays selected fields in a group within this field)"
2955
  msgstr ""
2956
  "Группа (сгруппировать выбранные поля в одно и выводить вместо текущего)"
2957
 
2958
- #: pro/fields/class-acf-field-clone.php:832
2959
  msgid "Seamless (replaces this field with selected fields)"
2960
  msgstr "Отдельно (выбранные поля выводятся отдельно вместо текущего)"
2961
 
2962
- #: pro/fields/class-acf-field-clone.php:853
2963
  #, php-format
2964
  msgid "Labels will be displayed as %s"
2965
  msgstr "Ярлыки будут отображаться как %s"
2966
 
2967
- #: pro/fields/class-acf-field-clone.php:856
2968
  msgid "Prefix Field Labels"
2969
  msgstr "Префикс для ярлыков полей"
2970
 
2971
- #: pro/fields/class-acf-field-clone.php:867
2972
  #, php-format
2973
  msgid "Values will be saved as %s"
2974
  msgstr "Значения будут сохранены как %s"
2975
 
2976
- #: pro/fields/class-acf-field-clone.php:870
2977
  msgid "Prefix Field Names"
2978
  msgstr "Префикс для названий полей"
2979
 
2980
- #: pro/fields/class-acf-field-clone.php:988
2981
  msgid "Unknown field"
2982
  msgstr "Неизвестное поле"
2983
 
2984
- #: pro/fields/class-acf-field-clone.php:1027
2985
  msgid "Unknown field group"
2986
  msgstr "Неизвестная группа полей"
2987
 
2988
- #: pro/fields/class-acf-field-clone.php:1031
2989
  #, php-format
2990
  msgid "All fields from %s field group"
2991
- msgstr "Все поля группы \"%s\""
2992
 
2993
  #: pro/fields/class-acf-field-flexible-content.php:31
2994
- #: pro/fields/class-acf-field-repeater.php:174
2995
- #: pro/fields/class-acf-field-repeater.php:470
2996
  msgid "Add Row"
2997
  msgstr "Добавить"
2998
 
2999
- #: pro/fields/class-acf-field-flexible-content.php:34
 
 
3000
  msgid "layout"
3001
- msgstr "макет"
 
 
 
3002
 
3003
- #: pro/fields/class-acf-field-flexible-content.php:35
3004
  msgid "layouts"
3005
  msgstr "макеты"
3006
 
3007
- #: pro/fields/class-acf-field-flexible-content.php:36
3008
- msgid "remove {layout}?"
3009
- msgstr "удалить {layout}?"
3010
-
3011
- #: pro/fields/class-acf-field-flexible-content.php:37
3012
- msgid "This field requires at least {min} {identifier}"
3013
- msgstr "Это поле требует как минимум {min} {identifier}"
3014
-
3015
- #: pro/fields/class-acf-field-flexible-content.php:38
3016
- msgid "This field has a limit of {max} {identifier}"
3017
- msgstr "Это поле ограничено {max} {identifier}"
3018
-
3019
- #: pro/fields/class-acf-field-flexible-content.php:39
3020
  msgid "This field requires at least {min} {label} {identifier}"
3021
  msgstr "Это поле требует как минимум {min} {label} {identifier}"
3022
 
3023
- #: pro/fields/class-acf-field-flexible-content.php:40
3024
- msgid "Maximum {label} limit reached ({max} {identifier})"
3025
- msgstr "Максимальное ограничение {label} достигнуто ({max} {identifier})"
3026
 
3027
- #: pro/fields/class-acf-field-flexible-content.php:41
3028
  msgid "{available} {label} {identifier} available (max {max})"
3029
  msgstr "{available} {label} {identifier} доступно (максимум {max})"
3030
 
3031
- #: pro/fields/class-acf-field-flexible-content.php:42
3032
  msgid "{required} {label} {identifier} required (min {min})"
3033
  msgstr "{required} {label} {identifier} требуется (минимум {min})"
3034
 
3035
- #: pro/fields/class-acf-field-flexible-content.php:43
3036
  msgid "Flexible Content requires at least 1 layout"
3037
  msgstr "Для гибкого содержания требуется как минимум один макет"
3038
 
3039
- #: pro/fields/class-acf-field-flexible-content.php:273
3040
  #, php-format
3041
  msgid "Click the \"%s\" button below to start creating your layout"
3042
  msgstr "Нажмите на кнопку \"%s\" ниже для начала создания собственного макета"
3043
 
3044
- #: pro/fields/class-acf-field-flexible-content.php:406
3045
  msgid "Add layout"
3046
  msgstr "Добавить макет"
3047
 
3048
- #: pro/fields/class-acf-field-flexible-content.php:407
3049
  msgid "Remove layout"
3050
  msgstr "Удалить макет"
3051
 
3052
- #: pro/fields/class-acf-field-flexible-content.php:408
3053
- #: pro/fields/class-acf-field-repeater.php:298
3054
  msgid "Click to toggle"
3055
  msgstr "Нажмите для переключения"
3056
 
3057
- #: pro/fields/class-acf-field-flexible-content.php:554
3058
  msgid "Reorder Layout"
3059
  msgstr "Переместить макет"
3060
 
3061
- #: pro/fields/class-acf-field-flexible-content.php:554
3062
  msgid "Reorder"
3063
  msgstr "Переместить"
3064
 
3065
- #: pro/fields/class-acf-field-flexible-content.php:555
3066
  msgid "Delete Layout"
3067
  msgstr "Удалить макет"
3068
 
3069
- #: pro/fields/class-acf-field-flexible-content.php:556
3070
  msgid "Duplicate Layout"
3071
  msgstr "Дублировать макет"
3072
 
3073
- #: pro/fields/class-acf-field-flexible-content.php:557
3074
  msgid "Add New Layout"
3075
  msgstr "Добавить новый макет"
3076
 
3077
- #: pro/fields/class-acf-field-flexible-content.php:628
3078
  msgid "Min"
3079
  msgstr "Минимум"
3080
 
3081
- #: pro/fields/class-acf-field-flexible-content.php:641
3082
  msgid "Max"
3083
  msgstr "Максимум"
3084
 
3085
- #: pro/fields/class-acf-field-flexible-content.php:668
3086
- #: pro/fields/class-acf-field-repeater.php:466
3087
  msgid "Button Label"
3088
  msgstr "Текст кнопки добавления"
3089
 
3090
- #: pro/fields/class-acf-field-flexible-content.php:677
3091
  msgid "Minimum Layouts"
3092
  msgstr "Мин. количество блоков"
3093
 
3094
- #: pro/fields/class-acf-field-flexible-content.php:686
3095
  msgid "Maximum Layouts"
3096
  msgstr "Макс. количество блоков"
3097
 
3098
- #: pro/fields/class-acf-field-gallery.php:41
3099
  msgid "Add Image to Gallery"
3100
  msgstr "Добавление изображений в галерею"
3101
 
3102
- #: pro/fields/class-acf-field-gallery.php:45
3103
  msgid "Maximum selection reached"
3104
  msgstr "Выбрано максимальное количество изображений"
3105
 
3106
- #: pro/fields/class-acf-field-gallery.php:321
3107
  msgid "Length"
3108
  msgstr "Длина"
3109
 
3110
- #: pro/fields/class-acf-field-gallery.php:364
3111
  msgid "Caption"
3112
  msgstr "Подпись"
3113
 
3114
- #: pro/fields/class-acf-field-gallery.php:373
3115
  msgid "Alt Text"
3116
  msgstr "Текст в ALT"
3117
 
3118
- #: pro/fields/class-acf-field-gallery.php:544
3119
  msgid "Add to gallery"
3120
  msgstr "Добавить изображения"
3121
 
3122
- #: pro/fields/class-acf-field-gallery.php:548
3123
  msgid "Bulk actions"
3124
  msgstr "Сортировка"
3125
 
3126
- #: pro/fields/class-acf-field-gallery.php:549
3127
  msgid "Sort by date uploaded"
3128
  msgstr "По дате загрузки"
3129
 
3130
- #: pro/fields/class-acf-field-gallery.php:550
3131
  msgid "Sort by date modified"
3132
  msgstr "По дате изменения"
3133
 
3134
- #: pro/fields/class-acf-field-gallery.php:551
3135
  msgid "Sort by title"
3136
  msgstr "По названию"
3137
 
3138
- #: pro/fields/class-acf-field-gallery.php:552
3139
  msgid "Reverse current order"
3140
  msgstr "Инвертировать"
3141
 
3142
- #: pro/fields/class-acf-field-gallery.php:570
3143
  msgid "Close"
3144
  msgstr "Закрыть"
3145
 
3146
- #: pro/fields/class-acf-field-gallery.php:624
3147
  msgid "Minimum Selection"
3148
  msgstr "Мин. количество изображений"
3149
 
3150
- #: pro/fields/class-acf-field-gallery.php:633
3151
  msgid "Maximum Selection"
3152
  msgstr "Макс. количество изображений"
3153
 
3154
- #: pro/fields/class-acf-field-gallery.php:642
3155
  msgid "Insert"
3156
  msgstr "Добавить"
3157
 
3158
- #: pro/fields/class-acf-field-gallery.php:643
3159
  msgid "Specify where new attachments are added"
3160
  msgstr "Укажите куда добавлять новые вложения"
3161
 
3162
- #: pro/fields/class-acf-field-gallery.php:647
3163
  msgid "Append to the end"
3164
  msgstr "Добавлять в конец"
3165
 
3166
- #: pro/fields/class-acf-field-gallery.php:648
3167
  msgid "Prepend to the beginning"
3168
  msgstr "Добавлять в начало"
3169
 
3170
- #: pro/fields/class-acf-field-repeater.php:36
 
3171
  msgid "Minimum rows reached ({min} rows)"
3172
  msgstr "Достигнуто минимальное количество ({min} элементов)"
3173
 
3174
- #: pro/fields/class-acf-field-repeater.php:37
3175
  msgid "Maximum rows reached ({max} rows)"
3176
  msgstr "Достигнуто максимальное количество ({max} элементов)"
3177
 
3178
- #: pro/fields/class-acf-field-repeater.php:343
3179
  msgid "Add row"
3180
  msgstr "Добавить"
3181
 
3182
- #: pro/fields/class-acf-field-repeater.php:344
3183
  msgid "Remove row"
3184
  msgstr "Удалить"
3185
 
3186
- #: pro/fields/class-acf-field-repeater.php:419
3187
  msgid "Collapsed"
3188
  msgstr "Сокращенный заголовок"
3189
 
3190
- #: pro/fields/class-acf-field-repeater.php:420
3191
  msgid "Select a sub field to show when row is collapsed"
3192
  msgstr ""
3193
  "Выберите поле, которое будет отображаться в качестве заголовка при "
3194
  "сворачивании блока"
3195
 
3196
- #: pro/fields/class-acf-field-repeater.php:430
3197
  msgid "Minimum Rows"
3198
  msgstr "Мин. количество элементов"
3199
 
3200
- #: pro/fields/class-acf-field-repeater.php:440
3201
  msgid "Maximum Rows"
3202
  msgstr "Макс. количество элементов"
3203
 
@@ -3236,6 +3276,72 @@ msgstr "Эллиот Кондон"
3236
  msgid "http://www.elliotcondon.com/"
3237
  msgstr "http://www.elliotcondon.com/"
3238
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3239
  #~ msgid "Getting Started"
3240
  #~ msgstr "Приступаем к работе"
3241
 
@@ -3612,9 +3718,6 @@ msgstr "http://www.elliotcondon.com/"
3612
  #~ msgid "Download"
3613
  #~ msgstr "Скачать"
3614
 
3615
- #~ msgid "Export"
3616
- #~ msgstr "Экспорт"
3617
-
3618
  #~ msgid "Select the field groups to be exported"
3619
  #~ msgstr "Выберите группы полей, которые надо экспортировать."
3620
 
2
  msgstr ""
3
  "Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n"
4
  "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
5
+ "POT-Creation-Date: 2018-08-18 18:25+0300\n"
6
+ "PO-Revision-Date: 2018-08-18 18:49+0300\n"
7
+ "Last-Translator: Toniievych Andrii <toniyevych@gmail.com>\n"
8
  "Language-Team: \n"
9
  "Language: ru_RU\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 2.1.1\n"
14
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
  "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
23
  "X-Poedit-SearchPath-0: .\n"
24
  "X-Poedit-SearchPathExcluded-0: *.js\n"
25
 
26
+ #: acf.php:80
27
  msgid "Advanced Custom Fields"
28
  msgstr "Advanced Custom Fields"
29
 
30
+ #: acf.php:392 includes/admin/admin.php:117
31
  msgid "Field Groups"
32
  msgstr "Группы полей"
33
 
34
+ #: acf.php:393
35
  msgid "Field Group"
36
  msgstr "Группа полей"
37
 
38
+ #: acf.php:394 acf.php:426 includes/admin/admin.php:118
39
+ #: pro/fields/class-acf-field-flexible-content.php:572
40
  msgid "Add New"
41
  msgstr "Добавить"
42
 
43
+ #: acf.php:395
44
  msgid "Add New Field Group"
45
  msgstr "Создание новой группы полей"
46
 
47
+ #: acf.php:396
48
  msgid "Edit Field Group"
49
  msgstr "Редактирование группы полей"
50
 
51
+ #: acf.php:397
52
  msgid "New Field Group"
53
  msgstr "Новая группа полей"
54
 
55
+ #: acf.php:398
56
  msgid "View Field Group"
57
  msgstr "Просмотреть группу полей"
58
 
59
+ #: acf.php:399
60
  msgid "Search Field Groups"
61
  msgstr "Поиск групп полей"
62
 
63
+ #: acf.php:400
64
  msgid "No Field Groups found"
65
  msgstr "Группы полей не найдены."
66
 
67
+ #: acf.php:401
68
  msgid "No Field Groups found in Trash"
69
  msgstr "Группы полей не найдены в корзине."
70
 
71
+ #: acf.php:424 includes/admin/admin-field-group.php:202
 
72
  #: includes/admin/admin-field-groups.php:510
73
+ #: pro/fields/class-acf-field-clone.php:811
74
  msgid "Fields"
75
  msgstr "Поля"
76
 
77
+ #: acf.php:425
78
  msgid "Field"
79
  msgstr "Поле"
80
 
81
+ #: acf.php:427
82
  msgid "Add New Field"
83
  msgstr "Добавить новое поле"
84
 
85
+ #: acf.php:428
86
  msgid "Edit Field"
87
  msgstr "Изменить поле"
88
 
89
+ #: acf.php:429 includes/admin/views/field-group-fields.php:41
90
  #: includes/admin/views/settings-info.php:105
91
  msgid "New Field"
92
  msgstr "Новое поле"
93
 
94
+ #: acf.php:430
95
  msgid "View Field"
96
  msgstr "Просмотреть поле"
97
 
98
+ #: acf.php:431
99
  msgid "Search Fields"
100
  msgstr "Поиск полей"
101
 
102
+ #: acf.php:432
103
  msgid "No Fields found"
104
  msgstr "Поля не найдены"
105
 
106
+ #: acf.php:433
107
  msgid "No Fields found in Trash"
108
  msgstr "Поля не найдены в Корзине"
109
 
110
+ #: acf.php:472 includes/admin/admin-field-group.php:384
111
  #: includes/admin/admin-field-groups.php:567
112
  msgid "Inactive"
113
  msgstr "Неактивно"
114
 
115
+ #: acf.php:477
116
  #, php-format
117
  msgid "Inactive <span class=\"count\">(%s)</span>"
118
  msgid_plural "Inactive <span class=\"count\">(%s)</span>"
150
  msgid "Field group draft updated."
151
  msgstr "Черновик группы полей обновлен."
152
 
153
+ #: includes/admin/admin-field-group.php:153
154
+ msgid "The string \"field_\" may not be used at the start of a field name"
155
+ msgstr "Имя поля не должно начинаться со строки \"field_\""
156
 
157
+ #: includes/admin/admin-field-group.php:154
158
+ msgid "This field cannot be moved until its changes have been saved"
159
+ msgstr "Это поле не может быть перемещено до сохранения изменений"
160
 
161
+ #: includes/admin/admin-field-group.php:155
162
+ msgid "Field group title is required"
163
+ msgstr "Введите название для группы полей"
164
+
165
+ #: includes/admin/admin-field-group.php:156
166
  msgid "Move to trash. Are you sure?"
167
  msgstr "Отправить в корзину. Вы уверены?"
168
 
169
+ #: includes/admin/admin-field-group.php:157
170
+ msgid "No toggle fields available"
171
+ msgstr "Нет доступных полей с выбором значений."
172
+
173
+ #: includes/admin/admin-field-group.php:158
174
+ msgid "Move Custom Field"
175
+ msgstr "Переместить поле"
176
+
177
  # Maybe non-translateable too.
178
+ #: includes/admin/admin-field-group.php:159
179
+ msgid "Checked"
180
  msgstr "Выбрано"
181
 
182
+ #: includes/admin/admin-field-group.php:160 includes/api/api-field.php:289
183
+ msgid "(no label)"
184
+ msgstr "(нет заголовка)"
185
 
186
+ #: includes/admin/admin-field-group.php:161
187
+ msgid "(this field)"
188
+ msgstr " (текущее поле)"
189
 
190
+ #: includes/admin/admin-field-group.php:162
191
  #: includes/api/api-field-group.php:751
192
  msgid "copy"
193
  msgstr "копия"
194
 
195
+ #: includes/admin/admin-field-group.php:163
196
+ #: includes/admin/views/field-group-field-conditional-logic.php:51
197
+ #: includes/admin/views/field-group-field-conditional-logic.php:151
198
  #: includes/admin/views/field-group-locations.php:29
199
  #: includes/admin/views/html-location-group.php:3
200
+ #: includes/api/api-helpers.php:4055
201
  msgid "or"
202
  msgstr "или"
203
 
204
+ #: includes/admin/admin-field-group.php:164
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  msgid "Null"
206
  msgstr "null"
207
 
208
+ #: includes/admin/admin-field-group.php:203
209
+ msgid "Location"
210
+ msgstr "Условия отображения"
211
 
212
+ #: includes/admin/admin-field-group.php:204
213
+ #: includes/admin/tools/class-acf-admin-tool-export.php:295
214
+ msgid "Settings"
215
+ msgstr "Настройки"
216
 
217
+ #: includes/admin/admin-field-group.php:354
218
  msgid "Field Keys"
219
  msgstr "Ключи полей"
220
 
221
+ #: includes/admin/admin-field-group.php:384
222
  #: includes/admin/views/field-group-options.php:9
223
  msgid "Active"
224
  msgstr "Активные"
225
 
226
+ #: includes/admin/admin-field-group.php:750
227
  msgid "Move Complete."
228
  msgstr "Перемещение выполнено."
229
 
230
+ #: includes/admin/admin-field-group.php:751
231
  #, php-format
232
  msgid "The %s field can now be found in the %s field group"
233
  msgstr "Теперь поле %s может быть найдено в группе полей %s"
234
 
235
+ #: includes/admin/admin-field-group.php:752
236
  msgid "Close Window"
237
  msgstr "Закрыть окно"
238
 
239
+ #: includes/admin/admin-field-group.php:793
240
  msgid "Please select the destination for this field"
241
  msgstr "Пожалуйста выберите местоположение для этого поля"
242
 
243
+ #: includes/admin/admin-field-group.php:800
244
  msgid "Move Field"
245
  msgstr "Переместить поле"
246
 
284
  msgstr "Синхронизация доступна"
285
 
286
  #: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38
287
+ #: pro/fields/class-acf-field-gallery.php:370
288
  msgid "Title"
289
  msgstr "Заголовок"
290
 
292
  #: includes/admin/views/field-group-options.php:96
293
  #: includes/admin/views/install-network.php:21
294
  #: includes/admin/views/install-network.php:29
295
+ #: pro/fields/class-acf-field-gallery.php:397
296
  msgid "Description"
297
  msgstr "Описание"
298
 
304
  #: includes/admin/admin-field-groups.php:607
305
  msgid "Customise WordPress with powerful, professional and intuitive fields."
306
  msgstr ""
307
+ "Настраивайте WordPress с помощью интуитивно понятных и мощных дополнительных "
308
+ "полей."
309
 
310
  #: includes/admin/admin-field-groups.php:609
311
  #: includes/admin/settings-info.php:76
343
  msgid "Thank you for creating with <a href=\"%s\">ACF</a>."
344
  msgstr "Спасибо вам за использование <a href=\"%s\">ACF</a>."
345
 
346
+ #: includes/admin/admin-field-groups.php:667
347
  msgid "Duplicate this item"
348
  msgstr "Дублировать элемент"
349
 
350
+ #: includes/admin/admin-field-groups.php:667
351
+ #: includes/admin/admin-field-groups.php:683
352
+ #: includes/admin/views/field-group-field.php:46
353
+ #: pro/fields/class-acf-field-flexible-content.php:571
354
  msgid "Duplicate"
355
  msgstr "Дублировать"
356
 
357
+ #: includes/admin/admin-field-groups.php:700
358
+ #: includes/fields/class-acf-field-google-map.php:164
359
+ #: includes/fields/class-acf-field-relationship.php:674
360
  msgid "Search"
361
  msgstr "Поиск"
362
 
363
+ #: includes/admin/admin-field-groups.php:759
364
  #, php-format
365
  msgid "Select %s"
366
  msgstr "Выберите %s"
367
 
368
+ #: includes/admin/admin-field-groups.php:767
369
  msgid "Synchronise field group"
370
  msgstr "Синхронизировать группу полей"
371
 
372
+ #: includes/admin/admin-field-groups.php:767
373
+ #: includes/admin/admin-field-groups.php:797
374
  msgid "Sync"
375
  msgstr "Синхронизация"
376
 
377
+ #: includes/admin/admin-field-groups.php:779
378
  msgid "Apply"
379
  msgstr "Применить"
380
 
381
+ #: includes/admin/admin-field-groups.php:797
382
  msgid "Bulk Actions"
383
  msgstr "Массовые операции"
384
 
385
+ #: includes/admin/admin-tools.php:116
386
+ #: includes/admin/views/html-admin-tools.php:21
387
+ msgid "Tools"
388
+ msgstr "Инструменты"
389
+
390
  #: includes/admin/admin.php:113
391
+ #: includes/admin/views/field-group-options.php:110
392
  msgid "Custom Fields"
393
  msgstr "Группы полей"
394
 
405
  msgid "Error validating request"
406
  msgstr "Возникла ошибка при обработке запроса"
407
 
408
+ #: includes/admin/install.php:210 includes/admin/views/install.php:104
409
  msgid "No updates available."
410
  msgstr "На данный момент обновлений нет."
411
 
426
  msgid "What's New"
427
  msgstr "Что нового"
428
 
429
+ #: includes/admin/tools/class-acf-admin-tool-export.php:33
430
+ msgid "Export Field Groups"
431
+ msgstr "Экспорт групп полей"
432
+
433
+ #: includes/admin/tools/class-acf-admin-tool-export.php:38
434
+ #: includes/admin/tools/class-acf-admin-tool-export.php:342
435
+ #: includes/admin/tools/class-acf-admin-tool-export.php:371
436
+ msgid "Generate PHP"
437
+ msgstr "Генерировать PHP"
438
 
439
+ #: includes/admin/tools/class-acf-admin-tool-export.php:97
440
+ #: includes/admin/tools/class-acf-admin-tool-export.php:135
441
  msgid "No field groups selected"
442
  msgstr "Группы полей не выбраны"
443
 
444
+ #: includes/admin/tools/class-acf-admin-tool-export.php:174
445
+ #, php-format
446
+ msgid "Exported 1 field group."
447
+ msgid_plural "Exported %s field groups."
448
+ msgstr[0] "Импортировано %s группу полей."
449
+ msgstr[1] "Импортировано %s группы полей"
450
+ msgstr[2] "Импортировано %s групп полей"
451
+
452
+ #: includes/admin/tools/class-acf-admin-tool-export.php:241
453
+ #: includes/admin/tools/class-acf-admin-tool-export.php:269
454
+ msgid "Select Field Groups"
455
+ msgstr "Выберите группы полей"
456
+
457
+ #: includes/admin/tools/class-acf-admin-tool-export.php:336
458
+ msgid ""
459
+ "Select the field groups you would like to export and then select your export "
460
+ "method. Use the download button to export to a .json file which you can then "
461
+ "import to another ACF installation. Use the generate button to export to PHP "
462
+ "code which you can place in your theme."
463
+ msgstr ""
464
+ "Выберите группы полей, которые вы хотите экспортировать, а также метод "
465
+ "экспорта. Используйте кнопку <b>Загрузить файл</b> для загрузки JSON файла "
466
+ "или <b>Генерировать код</b> для получения кода, который можно интегрировать "
467
+ "в шаблон."
468
+
469
+ #: includes/admin/tools/class-acf-admin-tool-export.php:341
470
+ msgid "Export File"
471
+ msgstr "Экспорт файла"
472
+
473
+ #: includes/admin/tools/class-acf-admin-tool-export.php:414
474
+ msgid ""
475
+ "The following code can be used to register a local version of the selected "
476
+ "field group(s). A local field group can provide many benefits such as faster "
477
+ "load times, version control & dynamic fields/settings. Simply copy and paste "
478
+ "the following code to your theme's functions.php file or include it within "
479
+ "an external file."
480
+ msgstr ""
481
+ "Указанный код может быть использован для регистрации группы полей "
482
+ "непосредственно в шаблоне. Локальная группа полей может предоставить много "
483
+ "преимуществ в виде большей скорости загрузки, упрощения контроля версий и "
484
+ "динамических полей. Просто скопируйте и вставьте указанный ниже код в файл "
485
+ "functions.php или подключите его через внешний файл."
486
+
487
+ #: includes/admin/tools/class-acf-admin-tool-export.php:446
488
+ msgid "Copy to clipboard"
489
+ msgstr "Скопировать в буфер обмена"
490
+
491
+ #: includes/admin/tools/class-acf-admin-tool-export.php:483
492
+ msgid "Copied"
493
+ msgstr "Скопировано"
494
+
495
+ #: includes/admin/tools/class-acf-admin-tool-import.php:26
496
+ msgid "Import Field Groups"
497
+ msgstr "Импорт групп полей"
498
+
499
+ #: includes/admin/tools/class-acf-admin-tool-import.php:61
500
+ msgid ""
501
+ "Select the Advanced Custom Fields JSON file you would like to import. When "
502
+ "you click the import button below, ACF will import the field groups."
503
+ msgstr "Выберите файл конфигурации в формате JSON для импорта групп полей."
504
+
505
+ #: includes/admin/tools/class-acf-admin-tool-import.php:66
506
+ #: includes/fields/class-acf-field-file.php:57
507
+ msgid "Select File"
508
+ msgstr "Выбрать файл"
509
+
510
+ #: includes/admin/tools/class-acf-admin-tool-import.php:76
511
+ msgid "Import File"
512
+ msgstr "Импортировать файл"
513
+
514
+ #: includes/admin/tools/class-acf-admin-tool-import.php:100
515
+ #: includes/fields/class-acf-field-file.php:170
516
  msgid "No file selected"
517
  msgstr "Файл не выбран"
518
 
519
+ #: includes/admin/tools/class-acf-admin-tool-import.php:113
520
  msgid "Error uploading file. Please try again"
521
  msgstr "Ошибка при загрузке файла. Попробуйте еще раз"
522
 
523
+ #: includes/admin/tools/class-acf-admin-tool-import.php:122
524
  msgid "Incorrect file type"
525
  msgstr "Неправильный тип файла"
526
 
527
+ #: includes/admin/tools/class-acf-admin-tool-import.php:139
528
  msgid "Import file empty"
529
  msgstr "Импортируемый файл пуст"
530
 
531
+ #: includes/admin/tools/class-acf-admin-tool-import.php:247
532
  #, php-format
533
  msgid "Imported 1 field group"
534
  msgid_plural "Imported %s field groups"
536
  msgstr[1] "Импортировано %s группы полей"
537
  msgstr[2] "Импортировано %s групп полей"
538
 
539
+ #: includes/admin/views/field-group-field-conditional-logic.php:25
540
  msgid "Conditional Logic"
541
  msgstr "Условная логика"
542
 
543
+ #: includes/admin/views/field-group-field-conditional-logic.php:51
544
  msgid "Show this field if"
545
  msgstr "Показывать это поле, если"
546
 
547
+ #: includes/admin/views/field-group-field-conditional-logic.php:138
 
 
 
 
 
 
 
 
 
 
548
  #: includes/admin/views/html-location-rule.php:80
549
  msgid "and"
550
  msgstr "и"
551
 
552
+ #: includes/admin/views/field-group-field-conditional-logic.php:153
553
  #: includes/admin/views/field-group-locations.php:31
554
  msgid "Add rule group"
555
  msgstr "Добавить группу условий"
556
 
557
+ #: includes/admin/views/field-group-field.php:38
558
+ #: pro/fields/class-acf-field-flexible-content.php:424
559
+ #: pro/fields/class-acf-field-repeater.php:294
560
  msgid "Drag to reorder"
561
  msgstr "Потяните для изменения порядка"
562
 
563
+ #: includes/admin/views/field-group-field.php:42
564
  #: includes/admin/views/field-group-field.php:45
 
565
  msgid "Edit field"
566
  msgstr "Редактировать поле"
567
 
568
+ #: includes/admin/views/field-group-field.php:45
569
+ #: includes/fields/class-acf-field-file.php:152
570
+ #: includes/fields/class-acf-field-image.php:139
571
  #: includes/fields/class-acf-field-link.php:139
572
+ #: pro/fields/class-acf-field-gallery.php:357
573
  msgid "Edit"
574
  msgstr "Редактировать"
575
 
576
+ #: includes/admin/views/field-group-field.php:46
577
  msgid "Duplicate field"
578
  msgstr "Дублировать поле"
579
 
580
+ #: includes/admin/views/field-group-field.php:47
581
  msgid "Move field to another group"
582
  msgstr "Переместить поле в другую группу"
583
 
584
+ #: includes/admin/views/field-group-field.php:47
585
  msgid "Move"
586
  msgstr "Переместить"
587
 
588
+ #: includes/admin/views/field-group-field.php:48
589
  msgid "Delete field"
590
  msgstr "Удалить поле"
591
 
592
+ #: includes/admin/views/field-group-field.php:48
593
+ #: pro/fields/class-acf-field-flexible-content.php:570
594
  msgid "Delete"
595
  msgstr "Удалить"
596
 
597
+ #: includes/admin/views/field-group-field.php:65
598
  msgid "Field Label"
599
  msgstr "Ярлык поля"
600
 
601
+ #: includes/admin/views/field-group-field.php:66
602
  msgid "This is the name which will appear on the EDIT page"
603
  msgstr "Имя поля на странице редактирования"
604
 
605
+ #: includes/admin/views/field-group-field.php:75
606
  msgid "Field Name"
607
  msgstr "Имя поля"
608
 
609
+ #: includes/admin/views/field-group-field.php:76
610
  msgid "Single word, no spaces. Underscores and dashes allowed"
611
  msgstr "Допускаются буквы, цифры, а также символы _ и -"
612
 
613
+ #: includes/admin/views/field-group-field.php:85
614
  msgid "Field Type"
615
  msgstr "Тип поля"
616
 
617
+ #: includes/admin/views/field-group-field.php:96
 
618
  msgid "Instructions"
619
  msgstr "Инструкции"
620
 
621
+ #: includes/admin/views/field-group-field.php:97
622
  msgid "Instructions for authors. Shown when submitting data"
623
  msgstr "Инструкции, которые отображаются при редактировании"
624
 
625
+ #: includes/admin/views/field-group-field.php:106
626
  msgid "Required?"
627
+ msgstr "Обязательное"
628
 
629
+ #: includes/admin/views/field-group-field.php:129
630
  msgid "Wrapper Attributes"
631
  msgstr "Атрибуты"
632
 
633
+ #: includes/admin/views/field-group-field.php:135
634
  msgid "width"
635
  msgstr "ширина"
636
 
637
+ #: includes/admin/views/field-group-field.php:150
638
  msgid "class"
639
  msgstr "class"
640
 
641
+ #: includes/admin/views/field-group-field.php:163
642
  msgid "id"
643
  msgstr "id"
644
 
645
+ #: includes/admin/views/field-group-field.php:175
646
  msgid "Close Field"
647
  msgstr "Закрыть поле"
648
 
652
 
653
  #: includes/admin/views/field-group-fields.php:5
654
  #: includes/fields/class-acf-field-button-group.php:198
655
+ #: includes/fields/class-acf-field-checkbox.php:420
656
+ #: includes/fields/class-acf-field-radio.php:311
657
+ #: includes/fields/class-acf-field-select.php:428
658
+ #: pro/fields/class-acf-field-flexible-content.php:596
659
  msgid "Label"
660
  msgstr "Ярлык"
661
 
662
  #: includes/admin/views/field-group-fields.php:6
663
+ #: includes/fields/class-acf-field-taxonomy.php:939
664
+ #: pro/fields/class-acf-field-flexible-content.php:610
665
  msgid "Name"
666
  msgstr "Имя"
667
 
730
  msgstr "Расположение меток"
731
 
732
  #: includes/admin/views/field-group-options.php:62
733
+ #: includes/fields/class-acf-field-tab.php:106
734
  msgid "Top aligned"
735
  msgstr "Вверху"
736
 
737
  #: includes/admin/views/field-group-options.php:63
738
+ #: includes/fields/class-acf-field-tab.php:107
739
  msgid "Left aligned"
740
  msgstr "Слева"
741
 
766
  msgstr "Отображаемое описание в списке групп"
767
 
768
  #: includes/admin/views/field-group-options.php:107
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
769
  msgid "Permalink"
770
  msgstr "Ссылка"
771
 
772
+ #: includes/admin/views/field-group-options.php:108
773
  msgid "Content Editor"
774
  msgstr "Текстовый редактор"
775
 
776
+ #: includes/admin/views/field-group-options.php:109
777
  msgid "Excerpt"
778
  msgstr "Цитата"
779
 
780
+ #: includes/admin/views/field-group-options.php:111
781
  msgid "Discussion"
782
  msgstr "Обсуждение"
783
 
784
+ #: includes/admin/views/field-group-options.php:112
785
  msgid "Comments"
786
  msgstr "Комментарии"
787
 
788
+ #: includes/admin/views/field-group-options.php:113
789
  msgid "Revisions"
790
  msgstr "Редакции"
791
 
792
+ #: includes/admin/views/field-group-options.php:114
793
  msgid "Slug"
794
  msgstr "Ярлык"
795
 
796
+ #: includes/admin/views/field-group-options.php:115
797
  msgid "Author"
798
  msgstr "Автор"
799
 
800
+ #: includes/admin/views/field-group-options.php:116
801
  msgid "Format"
802
  msgstr "Формат"
803
 
804
+ #: includes/admin/views/field-group-options.php:117
805
  msgid "Page Attributes"
806
  msgstr "Атрибуты страницы"
807
 
808
+ #: includes/admin/views/field-group-options.php:118
809
+ #: includes/fields/class-acf-field-relationship.php:688
810
  msgid "Featured Image"
811
  msgstr "Миниатюра записи"
812
 
813
+ #: includes/admin/views/field-group-options.php:119
814
  msgid "Categories"
815
  msgstr "Рубрики"
816
 
817
+ #: includes/admin/views/field-group-options.php:120
818
  msgid "Tags"
819
  msgstr "Метки"
820
 
821
+ #: includes/admin/views/field-group-options.php:121
822
  msgid "Send Trackbacks"
823
  msgstr "Отправить обратные ссылки"
824
 
825
+ #: includes/admin/views/field-group-options.php:128
826
+ msgid "Hide on screen"
827
+ msgstr "Скрывание блоков"
828
+
829
+ #: includes/admin/views/field-group-options.php:129
830
+ msgid "<b>Select</b> items to <b>hide</b> them from the edit screen."
831
+ msgstr ""
832
+ "Выберите блоки, которые необходимо <b>скрыть</b> на странице редактирования."
833
+
834
+ #: includes/admin/views/field-group-options.php:129
835
+ msgid ""
836
+ "If multiple field groups appear on an edit screen, the first field group's "
837
+ "options will be used (the one with the lowest order number)"
838
+ msgstr ""
839
+ "Если на странице редактирования присутствует несколько групп полей, то будут "
840
+ "использованы настройки первой из них (с наиболее низким значением порядка "
841
+ "очередности)"
842
+
843
  #: includes/admin/views/html-location-group.php:3
844
  msgid "Show this field group if"
845
  msgstr "Отображать группу полей, если"
1236
  "Новые функции для страницы настроек позволяют создавать и родительские, и "
1237
  "дочерние меню"
1238
 
1239
+ #: includes/admin/views/settings-info.php:157
1240
  #, php-format
1241
  msgid "We think you'll love the changes in %s."
1242
  msgstr "Думаем, вам понравятся изменения в %s."
1243
 
1244
+ #: includes/api/api-helpers.php:1028
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1245
  msgid "Thumbnail"
1246
  msgstr "Миниатюра"
1247
 
1248
+ #: includes/api/api-helpers.php:1029
1249
  msgid "Medium"
1250
  msgstr "Средний"
1251
 
1252
+ #: includes/api/api-helpers.php:1030
1253
  msgid "Large"
1254
  msgstr "Большой"
1255
 
1256
+ #: includes/api/api-helpers.php:1079
1257
  msgid "Full Size"
1258
  msgstr "Полный"
1259
 
1260
+ #: includes/api/api-helpers.php:1321 includes/api/api-helpers.php:1894
1261
+ #: pro/fields/class-acf-field-clone.php:996
1262
  msgid "(no title)"
1263
  msgstr "(нет заголовка)"
1264
 
1265
+ #: includes/api/api-helpers.php:3976
 
 
 
 
 
 
 
1266
  #, php-format
1267
  msgid "Image width must be at least %dpx."
1268
  msgstr "Изображение не должно быть уже чем %d пикселей."
1269
 
1270
+ #: includes/api/api-helpers.php:3981
1271
  #, php-format
1272
  msgid "Image width must not exceed %dpx."
1273
  msgstr "Изображение не должно быть шире чем %d пикселей."
1274
 
1275
+ #: includes/api/api-helpers.php:3997
1276
  #, php-format
1277
  msgid "Image height must be at least %dpx."
1278
  msgstr "Изображение должно иметь высоту как минимум %d пикселей."
1279
 
1280
+ #: includes/api/api-helpers.php:4002
1281
  #, php-format
1282
  msgid "Image height must not exceed %dpx."
1283
  msgstr "Изображение должно иметь высоту не более чем %d пикселей."
1284
 
1285
+ #: includes/api/api-helpers.php:4020
1286
  #, php-format
1287
  msgid "File size must be at least %s."
1288
  msgstr "Размер файла должен быть не менее чем %s."
1289
 
1290
+ #: includes/api/api-helpers.php:4025
1291
  #, php-format
1292
  msgid "File size must must not exceed %s."
1293
  msgstr "Размер файла должен быть не более чем %s."
1294
 
1295
+ #: includes/api/api-helpers.php:4059
1296
  #, php-format
1297
  msgid "File type must be %s."
1298
  msgstr "Файл должен иметь тип: %s."
1299
 
1300
+ #: includes/assets.php:172
1301
+ msgid "The changes you made will be lost if you navigate away from this page"
1302
+ msgstr "Внесенные вами изменения будут утеряны, если вы покинете эту страницу"
1303
+
1304
+ #: includes/assets.php:175 includes/fields/class-acf-field-select.php:259
1305
+ msgctxt "verb"
1306
+ msgid "Select"
1307
+ msgstr "Выбрать"
1308
+
1309
+ #: includes/assets.php:176
1310
+ msgctxt "verb"
1311
+ msgid "Edit"
1312
+ msgstr "Изменить"
1313
+
1314
+ #: includes/assets.php:177
1315
+ msgctxt "verb"
1316
+ msgid "Update"
1317
+ msgstr "Обновить"
1318
+
1319
+ #: includes/assets.php:178
1320
+ msgid "Uploaded to this post"
1321
+ msgstr "Загружено для этой записи"
1322
+
1323
+ #: includes/assets.php:179
1324
+ msgid "Expand Details"
1325
+ msgstr "Показать детали"
1326
+
1327
+ #: includes/assets.php:180
1328
+ msgid "Collapse Details"
1329
+ msgstr "Скрыть детали"
1330
+
1331
+ #: includes/assets.php:181
1332
+ msgid "Restricted"
1333
+ msgstr "Ограничено"
1334
+
1335
+ #: includes/assets.php:182 includes/fields/class-acf-field-image.php:67
1336
+ msgid "All images"
1337
+ msgstr "Все изображения"
1338
+
1339
+ #: includes/assets.php:185
1340
+ msgid "Validation successful"
1341
+ msgstr "Проверка успешно выполнена"
1342
+
1343
+ #: includes/assets.php:186 includes/validation.php:285
1344
+ #: includes/validation.php:296
1345
+ msgid "Validation failed"
1346
+ msgstr "Проверка не пройдена"
1347
+
1348
+ #: includes/assets.php:187
1349
+ msgid "1 field requires attention"
1350
+ msgstr "1 поле требует вашего внимания"
1351
+
1352
+ #: includes/assets.php:188
1353
+ #, php-format
1354
+ msgid "%d fields require attention"
1355
+ msgstr "%d полей требуют вашего внимания"
1356
+
1357
+ #: includes/assets.php:191
1358
+ msgid "Are you sure?"
1359
+ msgstr "Вы уверены?"
1360
+
1361
+ #: includes/assets.php:192 includes/fields/class-acf-field-true_false.php:79
1362
+ #: includes/fields/class-acf-field-true_false.php:159
1363
+ #: pro/admin/views/html-settings-updates.php:89
1364
+ msgid "Yes"
1365
+ msgstr "Да"
1366
+
1367
+ #: includes/assets.php:193 includes/fields/class-acf-field-true_false.php:80
1368
+ #: includes/fields/class-acf-field-true_false.php:174
1369
+ #: pro/admin/views/html-settings-updates.php:99
1370
+ msgid "No"
1371
+ msgstr "Нет"
1372
+
1373
+ #: includes/assets.php:194 includes/fields/class-acf-field-file.php:154
1374
+ #: includes/fields/class-acf-field-image.php:141
1375
+ #: includes/fields/class-acf-field-link.php:140
1376
+ #: pro/fields/class-acf-field-gallery.php:358
1377
+ #: pro/fields/class-acf-field-gallery.php:546
1378
+ msgid "Remove"
1379
+ msgstr "Убрать"
1380
+
1381
+ #: includes/assets.php:195
1382
+ msgid "Cancel"
1383
+ msgstr "Отмена"
1384
+
1385
+ #: includes/assets.php:198
1386
+ msgid "Has any value"
1387
+ msgstr "заполнено"
1388
+
1389
+ #: includes/assets.php:199
1390
+ msgid "Has no value"
1391
+ msgstr "пустое"
1392
+
1393
+ #: includes/assets.php:200
1394
+ msgid "Value is equal to"
1395
+ msgstr "равно"
1396
+
1397
+ #: includes/assets.php:201
1398
+ msgid "Value is not equal to"
1399
+ msgstr "не равно"
1400
+
1401
+ #: includes/assets.php:202
1402
+ msgid "Value matches pattern"
1403
+ msgstr "соответствует выражению"
1404
+
1405
+ #: includes/assets.php:203
1406
+ msgid "Value contains"
1407
+ msgstr "содержит"
1408
+
1409
+ #: includes/assets.php:204
1410
+ msgid "Value is greater than"
1411
+ msgstr "больше чем"
1412
+
1413
+ #: includes/assets.php:205
1414
+ msgid "Value is less than"
1415
+ msgstr "меньше чем"
1416
+
1417
+ #: includes/assets.php:206
1418
+ msgid "Selection is greater than"
1419
+ msgstr "выбрано больше чем"
1420
+
1421
+ #: includes/assets.php:207
1422
+ msgid "Selection is less than"
1423
+ msgstr "выбрано меньше чем"
1424
+
1425
+ #: includes/fields.php:308
1426
+ msgid "Field type does not exist"
1427
+ msgstr "Тип поля не существует"
1428
+
1429
+ #: includes/fields.php:308
1430
+ msgid "Unknown"
1431
+ msgstr "Неизвестно"
1432
+
1433
+ #: includes/fields.php:349
1434
  msgid "Basic"
1435
  msgstr "Основное"
1436
 
1437
+ #: includes/fields.php:350 includes/forms/form-front.php:47
1438
  msgid "Content"
1439
  msgstr "Содержание"
1440
 
1441
+ #: includes/fields.php:351
1442
  msgid "Choice"
1443
  msgstr "Выбор"
1444
 
1445
+ #: includes/fields.php:352
1446
  msgid "Relational"
1447
  msgstr "Отношение"
1448
 
1449
+ #: includes/fields.php:353
1450
  msgid "jQuery"
1451
  msgstr "jQuery"
1452
 
1453
+ #: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177
1454
+ #: includes/fields/class-acf-field-checkbox.php:389
 
1455
  #: includes/fields/class-acf-field-group.php:474
1456
+ #: includes/fields/class-acf-field-radio.php:290
1457
+ #: pro/fields/class-acf-field-clone.php:843
1458
+ #: pro/fields/class-acf-field-flexible-content.php:567
1459
+ #: pro/fields/class-acf-field-flexible-content.php:616
1460
+ #: pro/fields/class-acf-field-repeater.php:443
1461
  msgid "Layout"
1462
  msgstr "Блок"
1463
 
1464
+ #: includes/fields/class-acf-field-accordion.php:24
1465
+ msgid "Accordion"
1466
+ msgstr "Аккордеон"
1467
 
1468
+ #: includes/fields/class-acf-field-accordion.php:99
1469
+ msgid "Open"
1470
+ msgstr "Развернуто"
1471
+
1472
+ #: includes/fields/class-acf-field-accordion.php:100
1473
+ msgid "Display this accordion as open on page load."
1474
+ msgstr "Отображать в развернутом виде при загрузке страницы"
1475
+
1476
+ #: includes/fields/class-acf-field-accordion.php:109
1477
+ msgid "Multi-expand"
1478
+ msgstr "Разворачивание нескольких секций"
1479
+
1480
+ #: includes/fields/class-acf-field-accordion.php:110
1481
+ msgid "Allow this accordion to open without closing others."
1482
+ msgstr "Разрешить одновременное разворачивание нескольких секций"
1483
+
1484
+ #: includes/fields/class-acf-field-accordion.php:119
1485
+ #: includes/fields/class-acf-field-tab.php:114
1486
+ msgid "Endpoint"
1487
+ msgstr "Разделитель"
1488
+
1489
+ #: includes/fields/class-acf-field-accordion.php:120
1490
+ msgid ""
1491
+ "Define an endpoint for the previous accordion to stop. This accordion will "
1492
+ "not be visible."
1493
+ msgstr ""
1494
+ "Определяет конечную точку предыдущего аккордеона. Данный аккордеон будет "
1495
+ "невидим."
1496
 
1497
  #: includes/fields/class-acf-field-button-group.php:24
1498
  msgid "Button Group"
1501
  #: includes/fields/class-acf-field-button-group.php:149
1502
  #: includes/fields/class-acf-field-checkbox.php:344
1503
  #: includes/fields/class-acf-field-radio.php:235
1504
+ #: includes/fields/class-acf-field-select.php:359
1505
  msgid "Choices"
1506
  msgstr "Варианты"
1507
 
1508
  #: includes/fields/class-acf-field-button-group.php:150
1509
  #: includes/fields/class-acf-field-checkbox.php:345
1510
  #: includes/fields/class-acf-field-radio.php:236
1511
+ #: includes/fields/class-acf-field-select.php:360
1512
  msgid "Enter each choice on a new line."
1513
  msgstr "Введите каждый вариант выбора на новую строку."
1514
 
1515
  #: includes/fields/class-acf-field-button-group.php:150
1516
  #: includes/fields/class-acf-field-checkbox.php:345
1517
  #: includes/fields/class-acf-field-radio.php:236
1518
+ #: includes/fields/class-acf-field-select.php:360
1519
  msgid "For more control, you may specify both a value and label like this:"
1520
  msgstr ""
1521
  "Для большего контроля, вы можете ввести значение и ярлык по следующему "
1524
  #: includes/fields/class-acf-field-button-group.php:150
1525
  #: includes/fields/class-acf-field-checkbox.php:345
1526
  #: includes/fields/class-acf-field-radio.php:236
1527
+ #: includes/fields/class-acf-field-select.php:360
1528
  msgid "red : Red"
1529
  msgstr "red : Красный"
1530
 
1532
  #: includes/fields/class-acf-field-page_link.php:513
1533
  #: includes/fields/class-acf-field-post_object.php:412
1534
  #: includes/fields/class-acf-field-radio.php:244
1535
+ #: includes/fields/class-acf-field-select.php:377
1536
+ #: includes/fields/class-acf-field-taxonomy.php:784
1537
+ #: includes/fields/class-acf-field-user.php:409
1538
  msgid "Allow Null?"
1539
  msgstr "Разрешить пустое значение?"
1540
 
1541
  #: includes/fields/class-acf-field-button-group.php:168
1542
+ #: includes/fields/class-acf-field-checkbox.php:380
1543
  #: includes/fields/class-acf-field-color_picker.php:131
1544
  #: includes/fields/class-acf-field-email.php:118
1545
  #: includes/fields/class-acf-field-number.php:127
1546
+ #: includes/fields/class-acf-field-radio.php:281
1547
+ #: includes/fields/class-acf-field-range.php:146
1548
+ #: includes/fields/class-acf-field-select.php:368
1549
  #: includes/fields/class-acf-field-text.php:119
1550
  #: includes/fields/class-acf-field-textarea.php:102
1551
  #: includes/fields/class-acf-field-true_false.php:135
1552
  #: includes/fields/class-acf-field-url.php:100
1553
+ #: includes/fields/class-acf-field-wysiwyg.php:397
1554
  msgid "Default Value"
1555
  msgstr "Значение по умолчанию"
1556
 
1557
  #: includes/fields/class-acf-field-button-group.php:169
1558
  #: includes/fields/class-acf-field-email.php:119
1559
  #: includes/fields/class-acf-field-number.php:128
1560
+ #: includes/fields/class-acf-field-radio.php:282
1561
+ #: includes/fields/class-acf-field-range.php:147
1562
  #: includes/fields/class-acf-field-text.php:120
1563
  #: includes/fields/class-acf-field-textarea.php:103
1564
  #: includes/fields/class-acf-field-url.php:101
1565
+ #: includes/fields/class-acf-field-wysiwyg.php:398
1566
  msgid "Appears when creating a new post"
1567
+ msgstr "Заполняется при создании новой записи"
1568
 
1569
  #: includes/fields/class-acf-field-button-group.php:183
1570
+ #: includes/fields/class-acf-field-checkbox.php:396
1571
+ #: includes/fields/class-acf-field-radio.php:297
1572
  msgid "Horizontal"
1573
  msgstr "Горизонтальная"
1574
 
1575
  #: includes/fields/class-acf-field-button-group.php:184
1576
+ #: includes/fields/class-acf-field-checkbox.php:395
1577
+ #: includes/fields/class-acf-field-radio.php:296
1578
  msgid "Vertical"
1579
  msgstr "Вертикальная"
1580
 
1581
  #: includes/fields/class-acf-field-button-group.php:191
1582
+ #: includes/fields/class-acf-field-checkbox.php:413
1583
+ #: includes/fields/class-acf-field-file.php:215
1584
+ #: includes/fields/class-acf-field-image.php:205
1585
  #: includes/fields/class-acf-field-link.php:166
1586
+ #: includes/fields/class-acf-field-radio.php:304
1587
+ #: includes/fields/class-acf-field-taxonomy.php:829
1588
  msgid "Return Value"
1589
  msgstr "Возвращаемое значение"
1590
 
1591
  #: includes/fields/class-acf-field-button-group.php:192
1592
+ #: includes/fields/class-acf-field-checkbox.php:414
1593
+ #: includes/fields/class-acf-field-file.php:216
1594
+ #: includes/fields/class-acf-field-image.php:206
1595
  #: includes/fields/class-acf-field-link.php:167
1596
+ #: includes/fields/class-acf-field-radio.php:305
1597
  msgid "Specify the returned value on front end"
1598
  msgstr "Укажите возвращаемое значение для поля"
1599
 
1600
  #: includes/fields/class-acf-field-button-group.php:197
1601
+ #: includes/fields/class-acf-field-checkbox.php:419
1602
+ #: includes/fields/class-acf-field-radio.php:310
1603
+ #: includes/fields/class-acf-field-select.php:427
1604
  msgid "Value"
1605
  msgstr "Значение"
1606
 
1607
  #: includes/fields/class-acf-field-button-group.php:199
1608
+ #: includes/fields/class-acf-field-checkbox.php:421
1609
+ #: includes/fields/class-acf-field-radio.php:312
1610
+ #: includes/fields/class-acf-field-select.php:429
1611
  msgid "Both (Array)"
1612
  msgstr "Оба (массив)"
1613
 
1614
  #: includes/fields/class-acf-field-checkbox.php:25
1615
+ #: includes/fields/class-acf-field-taxonomy.php:771
1616
  msgid "Checkbox"
1617
  msgstr "Флажок (checkbox)"
1618
 
1640
  msgid "Save 'custom' values to the field's choices"
1641
  msgstr "Сохранить пользовательские варианты в настройках поля"
1642
 
1643
+ #: includes/fields/class-acf-field-checkbox.php:381
1644
+ #: includes/fields/class-acf-field-select.php:369
1645
  msgid "Enter each default value on a new line"
1646
  msgstr "Введите каждое значение на новую строку."
1647
 
1648
+ #: includes/fields/class-acf-field-checkbox.php:403
1649
  msgid "Toggle"
1650
  msgstr "Переключить"
1651
 
1652
+ #: includes/fields/class-acf-field-checkbox.php:404
1653
  msgid "Prepend an extra checkbox to toggle all choices"
1654
  msgstr "Добавить чекбокс для переключения всех чекбоксов"
1655
 
1677
  msgid "Date Picker"
1678
  msgstr "Дата"
1679
 
1680
+ #: includes/fields/class-acf-field-date_picker.php:59
1681
  msgctxt "Date Picker JS closeText"
1682
  msgid "Done"
1683
  msgstr "Готово"
1684
 
1685
+ #: includes/fields/class-acf-field-date_picker.php:60
1686
  msgctxt "Date Picker JS currentText"
1687
  msgid "Today"
1688
  msgstr "Сегодня"
1689
 
1690
+ #: includes/fields/class-acf-field-date_picker.php:61
1691
  msgctxt "Date Picker JS nextText"
1692
  msgid "Next"
1693
  msgstr "Дальше"
1694
 
1695
+ #: includes/fields/class-acf-field-date_picker.php:62
1696
  msgctxt "Date Picker JS prevText"
1697
  msgid "Prev"
1698
  msgstr "Назад"
1699
 
1700
+ #: includes/fields/class-acf-field-date_picker.php:63
1701
  msgctxt "Date Picker JS weekHeader"
1702
  msgid "Wk"
1703
  msgstr "Неделя"
1704
 
1705
+ #: includes/fields/class-acf-field-date_picker.php:180
1706
+ #: includes/fields/class-acf-field-date_time_picker.php:183
1707
  #: includes/fields/class-acf-field-time_picker.php:109
1708
  msgid "Display Format"
1709
  msgstr "Отображаемый формат"
1710
 
1711
+ #: includes/fields/class-acf-field-date_picker.php:181
1712
+ #: includes/fields/class-acf-field-date_time_picker.php:184
1713
  #: includes/fields/class-acf-field-time_picker.php:110
1714
  msgid "The format displayed when editing a post"
1715
  msgstr "Формат во время редактирования поля"
1716
 
1717
+ #: includes/fields/class-acf-field-date_picker.php:189
1718
+ #: includes/fields/class-acf-field-date_picker.php:220
1719
+ #: includes/fields/class-acf-field-date_time_picker.php:193
1720
+ #: includes/fields/class-acf-field-date_time_picker.php:210
1721
  #: includes/fields/class-acf-field-time_picker.php:117
1722
  #: includes/fields/class-acf-field-time_picker.php:132
1723
  msgid "Custom:"
1724
  msgstr "Пользовательский:"
1725
 
1726
+ #: includes/fields/class-acf-field-date_picker.php:199
1727
  msgid "Save Format"
1728
  msgstr "Формат сохраняемого значения"
1729
 
1730
+ #: includes/fields/class-acf-field-date_picker.php:200
1731
  msgid "The format used when saving a value"
1732
  msgstr "Формат для сохранения в базе данных"
1733
 
1734
+ #: includes/fields/class-acf-field-date_picker.php:210
1735
+ #: includes/fields/class-acf-field-date_time_picker.php:200
1736
  #: includes/fields/class-acf-field-post_object.php:432
1737
+ #: includes/fields/class-acf-field-relationship.php:715
1738
+ #: includes/fields/class-acf-field-select.php:422
1739
  #: includes/fields/class-acf-field-time_picker.php:124
1740
+ #: includes/fields/class-acf-field-user.php:428
1741
  msgid "Return Format"
1742
  msgstr "Возвращаемый формат"
1743
 
1744
+ #: includes/fields/class-acf-field-date_picker.php:211
1745
+ #: includes/fields/class-acf-field-date_time_picker.php:201
1746
  #: includes/fields/class-acf-field-time_picker.php:125
1747
  msgid "The format returned via template functions"
1748
  msgstr "Формат возвращаемого значения"
1749
 
1750
+ #: includes/fields/class-acf-field-date_picker.php:229
1751
+ #: includes/fields/class-acf-field-date_time_picker.php:217
1752
  msgid "Week Starts On"
1753
  msgstr "День начала недели"
1754
 
1756
  msgid "Date Time Picker"
1757
  msgstr "Дата и время"
1758
 
1759
+ #: includes/fields/class-acf-field-date_time_picker.php:68
1760
  msgctxt "Date Time Picker JS timeOnlyTitle"
1761
  msgid "Choose Time"
1762
  msgstr "Выберите время"
1763
 
1764
+ #: includes/fields/class-acf-field-date_time_picker.php:69
1765
  msgctxt "Date Time Picker JS timeText"
1766
  msgid "Time"
1767
  msgstr "Время"
1768
 
1769
+ #: includes/fields/class-acf-field-date_time_picker.php:70
1770
  msgctxt "Date Time Picker JS hourText"
1771
  msgid "Hour"
1772
  msgstr "Час"
1773
 
1774
+ #: includes/fields/class-acf-field-date_time_picker.php:71
1775
  msgctxt "Date Time Picker JS minuteText"
1776
  msgid "Minute"
1777
  msgstr "Минута"
1778
 
1779
+ #: includes/fields/class-acf-field-date_time_picker.php:72
1780
  msgctxt "Date Time Picker JS secondText"
1781
  msgid "Second"
1782
  msgstr "Секунда"
1783
 
1784
+ #: includes/fields/class-acf-field-date_time_picker.php:73
1785
  msgctxt "Date Time Picker JS millisecText"
1786
  msgid "Millisecond"
1787
  msgstr "Миллисекунда"
1788
 
1789
+ #: includes/fields/class-acf-field-date_time_picker.php:74
1790
  msgctxt "Date Time Picker JS microsecText"
1791
  msgid "Microsecond"
1792
  msgstr "Микросекунда"
1793
 
1794
+ #: includes/fields/class-acf-field-date_time_picker.php:75
1795
  msgctxt "Date Time Picker JS timezoneText"
1796
  msgid "Time Zone"
1797
  msgstr "Часовой пояс"
1798
 
1799
+ #: includes/fields/class-acf-field-date_time_picker.php:76
1800
  msgctxt "Date Time Picker JS currentText"
1801
  msgid "Now"
1802
  msgstr "Сейчас"
1803
 
1804
+ #: includes/fields/class-acf-field-date_time_picker.php:77
1805
  msgctxt "Date Time Picker JS closeText"
1806
  msgid "Done"
1807
  msgstr "Готово"
1808
 
1809
+ #: includes/fields/class-acf-field-date_time_picker.php:78
1810
  msgctxt "Date Time Picker JS selectText"
1811
  msgid "Select"
1812
  msgstr "Выбрать"
1813
 
1814
+ #: includes/fields/class-acf-field-date_time_picker.php:80
1815
  msgctxt "Date Time Picker JS amText"
1816
  msgid "AM"
1817
  msgstr "ДП"
1818
 
1819
+ #: includes/fields/class-acf-field-date_time_picker.php:81
1820
  msgctxt "Date Time Picker JS amTextShort"
1821
  msgid "A"
1822
  msgstr "Д"
1823
 
1824
+ #: includes/fields/class-acf-field-date_time_picker.php:84
1825
  msgctxt "Date Time Picker JS pmText"
1826
  msgid "PM"
1827
  msgstr "ПП"
1828
 
1829
+ #: includes/fields/class-acf-field-date_time_picker.php:85
1830
  msgctxt "Date Time Picker JS pmTextShort"
1831
  msgid "P"
1832
  msgstr "П"
1856
  #: includes/fields/class-acf-field-email.php:136
1857
  #: includes/fields/class-acf-field-number.php:145
1858
  #: includes/fields/class-acf-field-password.php:80
1859
+ #: includes/fields/class-acf-field-range.php:185
1860
  #: includes/fields/class-acf-field-text.php:137
1861
  msgid "Prepend"
1862
  msgstr "Текст перед полем"
1864
  #: includes/fields/class-acf-field-email.php:137
1865
  #: includes/fields/class-acf-field-number.php:146
1866
  #: includes/fields/class-acf-field-password.php:81
1867
+ #: includes/fields/class-acf-field-range.php:186
1868
  #: includes/fields/class-acf-field-text.php:138
1869
  msgid "Appears before the input"
1870
  msgstr "Текст перед полем ввода"
1872
  #: includes/fields/class-acf-field-email.php:145
1873
  #: includes/fields/class-acf-field-number.php:154
1874
  #: includes/fields/class-acf-field-password.php:89
1875
+ #: includes/fields/class-acf-field-range.php:194
1876
  #: includes/fields/class-acf-field-text.php:146
1877
  msgid "Append"
1878
  msgstr "Текст после поля"
1880
  #: includes/fields/class-acf-field-email.php:146
1881
  #: includes/fields/class-acf-field-number.php:155
1882
  #: includes/fields/class-acf-field-password.php:90
1883
+ #: includes/fields/class-acf-field-range.php:195
1884
  #: includes/fields/class-acf-field-text.php:147
1885
  msgid "Appears after the input"
1886
  msgstr "Текст после поля ввода"
1889
  msgid "File"
1890
  msgstr "Файл"
1891
 
1892
+ #: includes/fields/class-acf-field-file.php:58
1893
  msgid "Edit File"
1894
  msgstr "Изменить файл"
1895
 
1896
+ #: includes/fields/class-acf-field-file.php:59
1897
  msgid "Update File"
1898
  msgstr "Обновить файл"
1899
 
1900
+ #: includes/fields/class-acf-field-file.php:141
 
 
 
 
 
 
1901
  msgid "File name"
1902
  msgstr "Имя файла"
1903
 
1904
+ #: includes/fields/class-acf-field-file.php:145
1905
+ #: includes/fields/class-acf-field-file.php:248
1906
+ #: includes/fields/class-acf-field-file.php:259
1907
+ #: includes/fields/class-acf-field-image.php:265
1908
+ #: includes/fields/class-acf-field-image.php:294
1909
+ #: pro/fields/class-acf-field-gallery.php:705
1910
+ #: pro/fields/class-acf-field-gallery.php:734
1911
  msgid "File size"
1912
  msgstr "Размер файла"
1913
 
1914
+ #: includes/fields/class-acf-field-file.php:170
 
 
 
 
 
 
 
 
1915
  msgid "Add File"
1916
  msgstr "Добавить файл"
1917
 
1918
+ #: includes/fields/class-acf-field-file.php:221
1919
  msgid "File Array"
1920
  msgstr "Массив"
1921
 
1922
+ #: includes/fields/class-acf-field-file.php:222
1923
  msgid "File URL"
1924
  msgstr "Ссылка на файл"
1925
 
1926
+ #: includes/fields/class-acf-field-file.php:223
1927
  msgid "File ID"
1928
  msgstr "ID файла"
1929
 
1930
+ #: includes/fields/class-acf-field-file.php:230
1931
+ #: includes/fields/class-acf-field-image.php:230
1932
+ #: pro/fields/class-acf-field-gallery.php:670
1933
  msgid "Library"
1934
  msgstr "Библиотека"
1935
 
1936
+ #: includes/fields/class-acf-field-file.php:231
1937
+ #: includes/fields/class-acf-field-image.php:231
1938
+ #: pro/fields/class-acf-field-gallery.php:671
1939
  msgid "Limit the media library choice"
1940
  msgstr "Ограничение количества выбранных элементов"
1941
 
1942
+ #: includes/fields/class-acf-field-file.php:236
1943
+ #: includes/fields/class-acf-field-image.php:236
1944
  #: includes/locations/class-acf-location-attachment.php:101
1945
  #: includes/locations/class-acf-location-comment.php:79
1946
  #: includes/locations/class-acf-location-nav-menu.php:102
1948
  #: includes/locations/class-acf-location-user-form.php:87
1949
  #: includes/locations/class-acf-location-user-role.php:111
1950
  #: includes/locations/class-acf-location-widget.php:83
1951
+ #: pro/fields/class-acf-field-gallery.php:676
1952
  msgid "All"
1953
  msgstr "Все"
1954
 
1955
+ #: includes/fields/class-acf-field-file.php:237
1956
+ #: includes/fields/class-acf-field-image.php:237
1957
+ #: pro/fields/class-acf-field-gallery.php:677
1958
  msgid "Uploaded to post"
1959
  msgstr "Загружено в запись"
1960
 
1961
+ #: includes/fields/class-acf-field-file.php:244
1962
+ #: includes/fields/class-acf-field-image.php:244
1963
+ #: pro/fields/class-acf-field-gallery.php:684
1964
  msgid "Minimum"
1965
  msgstr "Минимум"
1966
 
1967
+ #: includes/fields/class-acf-field-file.php:245
1968
+ #: includes/fields/class-acf-field-file.php:256
1969
  msgid "Restrict which files can be uploaded"
1970
  msgstr "Ограничить файлы, которые могут быть загружены"
1971
 
1972
+ #: includes/fields/class-acf-field-file.php:255
1973
+ #: includes/fields/class-acf-field-image.php:273
1974
+ #: pro/fields/class-acf-field-gallery.php:713
1975
  msgid "Maximum"
1976
  msgstr "Максимум"
1977
 
1978
+ #: includes/fields/class-acf-field-file.php:266
1979
+ #: includes/fields/class-acf-field-image.php:302
1980
+ #: pro/fields/class-acf-field-gallery.php:742
1981
  msgid "Allowed file types"
1982
  msgstr "Допустимые типы файлов"
1983
 
1984
+ #: includes/fields/class-acf-field-file.php:267
1985
+ #: includes/fields/class-acf-field-image.php:303
1986
+ #: pro/fields/class-acf-field-gallery.php:743
1987
  msgid "Comma separated list. Leave blank for all types"
1988
  msgstr ""
1989
  "Для разделения типов файлов используйте запятые. Оставьте поле пустым для "
1993
  msgid "Google Map"
1994
  msgstr "Расположение на карте"
1995
 
1996
+ #: includes/fields/class-acf-field-google-map.php:59
 
 
 
 
1997
  msgid "Sorry, this browser does not support geolocation"
1998
  msgstr "Извините, но ваш браузер не поддерживает определение местоположения"
1999
 
2000
+ #: includes/fields/class-acf-field-google-map.php:165
2001
  msgid "Clear location"
2002
  msgstr "Очистить местоположение"
2003
 
2004
+ #: includes/fields/class-acf-field-google-map.php:166
2005
  msgid "Find current location"
2006
  msgstr "Определить текущее местоположение"
2007
 
2008
+ #: includes/fields/class-acf-field-google-map.php:169
2009
  msgid "Search for address..."
2010
  msgstr "Поиск по адресу..."
2011
 
2012
+ #: includes/fields/class-acf-field-google-map.php:199
2013
+ #: includes/fields/class-acf-field-google-map.php:210
2014
  msgid "Center"
2015
  msgstr "Центрировать"
2016
 
2017
+ #: includes/fields/class-acf-field-google-map.php:200
2018
+ #: includes/fields/class-acf-field-google-map.php:211
2019
  msgid "Center the initial map"
2020
  msgstr "Центрировать изначальную карту"
2021
 
2022
+ #: includes/fields/class-acf-field-google-map.php:222
2023
  msgid "Zoom"
2024
  msgstr "Масштаб"
2025
 
2026
+ #: includes/fields/class-acf-field-google-map.php:223
2027
  msgid "Set the initial zoom level"
2028
  msgstr "Укажите начальный масштаб"
2029
 
2030
+ #: includes/fields/class-acf-field-google-map.php:232
2031
+ #: includes/fields/class-acf-field-image.php:256
2032
+ #: includes/fields/class-acf-field-image.php:285
2033
+ #: includes/fields/class-acf-field-oembed.php:268
2034
+ #: pro/fields/class-acf-field-gallery.php:696
2035
+ #: pro/fields/class-acf-field-gallery.php:725
2036
  msgid "Height"
2037
  msgstr "Высота"
2038
 
2039
+ #: includes/fields/class-acf-field-google-map.php:233
2040
  msgid "Customise the map height"
2041
  msgstr "Настройка высоты карты"
2042
 
2045
  msgstr "Группа"
2046
 
2047
  #: includes/fields/class-acf-field-group.php:459
2048
+ #: pro/fields/class-acf-field-repeater.php:379
2049
  msgid "Sub Fields"
2050
  msgstr "Вложенные поля"
2051
 
2052
  #: includes/fields/class-acf-field-group.php:475
2053
+ #: pro/fields/class-acf-field-clone.php:844
2054
  msgid "Specify the style used to render the selected fields"
2055
  msgstr "Укажите способ отображения клонированных полей"
2056
 
2057
  #: includes/fields/class-acf-field-group.php:480
2058
+ #: pro/fields/class-acf-field-clone.php:849
2059
+ #: pro/fields/class-acf-field-flexible-content.php:627
2060
+ #: pro/fields/class-acf-field-repeater.php:451
2061
  msgid "Block"
2062
  msgstr "Блок"
2063
 
2064
  #: includes/fields/class-acf-field-group.php:481
2065
+ #: pro/fields/class-acf-field-clone.php:850
2066
+ #: pro/fields/class-acf-field-flexible-content.php:626
2067
+ #: pro/fields/class-acf-field-repeater.php:450
2068
  msgid "Table"
2069
  msgstr "Таблица"
2070
 
2071
  #: includes/fields/class-acf-field-group.php:482
2072
+ #: pro/fields/class-acf-field-clone.php:851
2073
+ #: pro/fields/class-acf-field-flexible-content.php:628
2074
+ #: pro/fields/class-acf-field-repeater.php:452
2075
  msgid "Row"
2076
  msgstr "Строка"
2077
 
2079
  msgid "Image"
2080
  msgstr "Изображение"
2081
 
2082
+ #: includes/fields/class-acf-field-image.php:64
2083
  msgid "Select Image"
2084
  msgstr "Выбрать изображение"
2085
 
2086
+ #: includes/fields/class-acf-field-image.php:65
 
2087
  msgid "Edit Image"
2088
  msgstr "Редактировать изображение"
2089
 
2090
+ #: includes/fields/class-acf-field-image.php:66
 
2091
  msgid "Update Image"
2092
  msgstr "Обновить изображение"
2093
 
2094
+ #: includes/fields/class-acf-field-image.php:157
 
 
 
 
2095
  msgid "No image selected"
2096
  msgstr "Изображение не выбрано"
2097
 
2098
+ #: includes/fields/class-acf-field-image.php:157
2099
  msgid "Add Image"
2100
  msgstr "Добавить изображение"
2101
 
2102
+ #: includes/fields/class-acf-field-image.php:211
2103
  msgid "Image Array"
2104
  msgstr "Массив изображения"
2105
 
2106
+ #: includes/fields/class-acf-field-image.php:212
2107
  msgid "Image URL"
2108
  msgstr "Ссылка на изображение"
2109
 
2110
+ #: includes/fields/class-acf-field-image.php:213
2111
  msgid "Image ID"
2112
  msgstr "ID изображения"
2113
 
2114
+ #: includes/fields/class-acf-field-image.php:220
2115
  msgid "Preview Size"
2116
  msgstr "Размер изображения"
2117
 
2118
+ #: includes/fields/class-acf-field-image.php:221
2119
  msgid "Shown when entering data"
2120
  msgstr "Размер отображаемого изображения при редактировании"
2121
 
2122
+ #: includes/fields/class-acf-field-image.php:245
2123
+ #: includes/fields/class-acf-field-image.php:274
2124
+ #: pro/fields/class-acf-field-gallery.php:685
2125
+ #: pro/fields/class-acf-field-gallery.php:714
2126
  msgid "Restrict which images can be uploaded"
2127
  msgstr "Ограничить изображения, которые могут быть загружены"
2128
 
2129
+ #: includes/fields/class-acf-field-image.php:248
2130
+ #: includes/fields/class-acf-field-image.php:277
2131
+ #: includes/fields/class-acf-field-oembed.php:257
2132
+ #: pro/fields/class-acf-field-gallery.php:688
2133
+ #: pro/fields/class-acf-field-gallery.php:717
2134
  msgid "Width"
2135
  msgstr "Ширина"
2136
 
2200
  msgstr "Число"
2201
 
2202
  #: includes/fields/class-acf-field-number.php:163
2203
+ #: includes/fields/class-acf-field-range.php:155
2204
  msgid "Minimum Value"
2205
  msgstr "Минимальное значение"
2206
 
2207
  #: includes/fields/class-acf-field-number.php:172
2208
+ #: includes/fields/class-acf-field-range.php:165
2209
  msgid "Maximum Value"
2210
  msgstr "Максимальное значение"
2211
 
2212
  #: includes/fields/class-acf-field-number.php:181
2213
+ #: includes/fields/class-acf-field-range.php:175
2214
  msgid "Step Size"
2215
  msgstr "Шаг изменения"
2216
 
2232
  msgid "oEmbed"
2233
  msgstr "Медиа"
2234
 
2235
+ #: includes/fields/class-acf-field-oembed.php:216
2236
  msgid "Enter URL"
2237
  msgstr "Введите адрес ссылки"
2238
 
2239
+ #: includes/fields/class-acf-field-oembed.php:254
2240
+ #: includes/fields/class-acf-field-oembed.php:265
 
 
 
 
 
 
 
 
 
2241
  msgid "Embed Size"
2242
  msgstr "Размер медиа"
2243
 
2245
  msgid "Archives"
2246
  msgstr "Архивы"
2247
 
2248
+ #: includes/fields/class-acf-field-page_link.php:269
2249
+ #: includes/fields/class-acf-field-post_object.php:268
2250
+ #: includes/fields/class-acf-field-taxonomy.php:961
2251
+ msgid "Parent"
2252
+ msgstr "Родитель"
2253
+
2254
  #: includes/fields/class-acf-field-page_link.php:485
2255
  #: includes/fields/class-acf-field-post_object.php:384
2256
+ #: includes/fields/class-acf-field-relationship.php:641
2257
  msgid "Filter by Post Type"
2258
  msgstr "Фильтрация по типу записей"
2259
 
2260
  #: includes/fields/class-acf-field-page_link.php:493
2261
  #: includes/fields/class-acf-field-post_object.php:392
2262
+ #: includes/fields/class-acf-field-relationship.php:649
2263
  msgid "All post types"
2264
  msgstr "Все типы записей"
2265
 
2266
  #: includes/fields/class-acf-field-page_link.php:499
2267
  #: includes/fields/class-acf-field-post_object.php:398
2268
+ #: includes/fields/class-acf-field-relationship.php:655
2269
  msgid "Filter by Taxonomy"
2270
  msgstr "Фильтрация по таксономии"
2271
 
2272
  #: includes/fields/class-acf-field-page_link.php:507
2273
  #: includes/fields/class-acf-field-post_object.php:406
2274
+ #: includes/fields/class-acf-field-relationship.php:663
2275
  msgid "All taxonomies"
2276
  msgstr "Все таксономии"
2277
 
2281
 
2282
  #: includes/fields/class-acf-field-page_link.php:533
2283
  #: includes/fields/class-acf-field-post_object.php:422
2284
+ #: includes/fields/class-acf-field-select.php:387
2285
+ #: includes/fields/class-acf-field-user.php:419
2286
  msgid "Select multiple values?"
2287
  msgstr "Выбрать несколько значений?"
2288
 
2292
 
2293
  #: includes/fields/class-acf-field-post_object.php:25
2294
  #: includes/fields/class-acf-field-post_object.php:437
2295
+ #: includes/fields/class-acf-field-relationship.php:720
2296
  msgid "Post Object"
2297
+ msgstr "Объект записи"
2298
 
2299
  #: includes/fields/class-acf-field-post_object.php:438
2300
+ #: includes/fields/class-acf-field-relationship.php:721
2301
  msgid "Post ID"
2302
  msgstr "ID записи"
2303
 
2329
  msgid "Relationship"
2330
  msgstr "Записи"
2331
 
2332
+ #: includes/fields/class-acf-field-relationship.php:62
 
 
 
 
2333
  msgid "Maximum values reached ( {max} values )"
2334
  msgstr "Максимальное количество значений достигнуто ({max} значений)"
2335
 
2336
+ #: includes/fields/class-acf-field-relationship.php:63
2337
  msgid "Loading"
2338
  msgstr "Загрузка"
2339
 
2340
+ #: includes/fields/class-acf-field-relationship.php:64
2341
  msgid "No matches found"
2342
  msgstr "Совпадения не найдены"
2343
 
2344
+ #: includes/fields/class-acf-field-relationship.php:441
2345
  msgid "Select post type"
2346
  msgstr "Выберите тип записи"
2347
 
2348
+ #: includes/fields/class-acf-field-relationship.php:467
2349
  msgid "Select taxonomy"
2350
  msgstr "Выберите таксономию"
2351
 
2352
+ #: includes/fields/class-acf-field-relationship.php:557
2353
  msgid "Search..."
2354
  msgstr "Поиск..."
2355
 
2356
+ #: includes/fields/class-acf-field-relationship.php:669
2357
  msgid "Filters"
2358
  msgstr "Фильтры"
2359
 
2360
+ #: includes/fields/class-acf-field-relationship.php:675
2361
  #: includes/locations/class-acf-location-post-type.php:27
2362
  msgid "Post Type"
2363
  msgstr "Тип записи"
2364
 
2365
+ #: includes/fields/class-acf-field-relationship.php:676
2366
  #: includes/fields/class-acf-field-taxonomy.php:28
2367
+ #: includes/fields/class-acf-field-taxonomy.php:754
2368
+ #: includes/locations/class-acf-location-taxonomy.php:27
2369
  msgid "Taxonomy"
2370
  msgstr "Таксономия"
2371
 
2372
+ #: includes/fields/class-acf-field-relationship.php:683
2373
  msgid "Elements"
2374
  msgstr "Элементы"
2375
 
2376
+ #: includes/fields/class-acf-field-relationship.php:684
2377
  msgid "Selected elements will be displayed in each result"
2378
+ msgstr "Выбранные элементы будут отображены в каждом результате"
2379
 
2380
+ #: includes/fields/class-acf-field-relationship.php:695
2381
  msgid "Minimum posts"
2382
  msgstr "Минимум записей"
2383
 
2384
+ #: includes/fields/class-acf-field-relationship.php:704
2385
  msgid "Maximum posts"
2386
  msgstr "Максимум записей"
2387
 
2388
+ #: includes/fields/class-acf-field-relationship.php:808
2389
+ #: pro/fields/class-acf-field-gallery.php:815
2390
  #, php-format
2391
  msgid "%s requires at least %s selection"
2392
  msgid_plural "%s requires at least %s selections"
2395
  msgstr[2] "%s требует выбрать как минимум %s значений"
2396
 
2397
  #: includes/fields/class-acf-field-select.php:25
2398
+ #: includes/fields/class-acf-field-taxonomy.php:776
2399
  msgctxt "noun"
2400
  msgid "Select"
2401
  msgstr "Выбор (select)"
2402
 
2403
+ #: includes/fields/class-acf-field-select.php:111
2404
  msgctxt "Select2 JS matches_1"
2405
  msgid "One result is available, press enter to select it."
2406
  msgstr "Доступно одно значение, нажмите Enter для его выбора."
2407
 
2408
+ #: includes/fields/class-acf-field-select.php:112
2409
  #, php-format
2410
  msgctxt "Select2 JS matches_n"
2411
  msgid "%d results are available, use up and down arrow keys to navigate."
2412
  msgstr "%d значений доступно, используйте клавиши вверх и вниз для навигации."
2413
 
2414
+ #: includes/fields/class-acf-field-select.php:113
2415
  msgctxt "Select2 JS matches_0"
2416
  msgid "No matches found"
2417
  msgstr "Подходящие значения не найдены"
2418
 
2419
+ #: includes/fields/class-acf-field-select.php:114
2420
  msgctxt "Select2 JS input_too_short_1"
2421
  msgid "Please enter 1 or more characters"
2422
  msgstr "Пожалуйста, введите 1 символ или больше"
2423
 
2424
+ #: includes/fields/class-acf-field-select.php:115
2425
  #, php-format
2426
  msgctxt "Select2 JS input_too_short_n"
2427
  msgid "Please enter %d or more characters"
2428
  msgstr "Пожалуйста, введите %d или больше символов"
2429
 
2430
+ #: includes/fields/class-acf-field-select.php:116
2431
  msgctxt "Select2 JS input_too_long_1"
2432
  msgid "Please delete 1 character"
2433
  msgstr "Пожалуйста, удалите 1 символ"
2434
 
2435
+ #: includes/fields/class-acf-field-select.php:117
2436
  #, php-format
2437
  msgctxt "Select2 JS input_too_long_n"
2438
  msgid "Please delete %d characters"
2439
  msgstr "Пожалуйста, удалите %d символов"
2440
 
2441
+ #: includes/fields/class-acf-field-select.php:118
2442
  msgctxt "Select2 JS selection_too_long_1"
2443
  msgid "You can only select 1 item"
2444
  msgstr "Вы можете выбрать только одно значение"
2445
 
2446
+ #: includes/fields/class-acf-field-select.php:119
2447
  #, php-format
2448
  msgctxt "Select2 JS selection_too_long_n"
2449
  msgid "You can only select %d items"
2450
  msgstr "Вы можете выбрать только %d значений"
2451
 
2452
+ #: includes/fields/class-acf-field-select.php:120
2453
  msgctxt "Select2 JS load_more"
2454
  msgid "Loading more results&hellip;"
2455
  msgstr "Загрузка других значений&hellip;"
2456
 
2457
+ #: includes/fields/class-acf-field-select.php:121
2458
  msgctxt "Select2 JS searching"
2459
  msgid "Searching&hellip;"
2460
  msgstr "Поиск&hellip;"
2461
 
2462
+ #: includes/fields/class-acf-field-select.php:122
2463
  msgctxt "Select2 JS load_fail"
2464
  msgid "Loading failed"
2465
  msgstr "Не получилось загрузить"
2466
 
2467
+ #: includes/fields/class-acf-field-select.php:397
 
 
 
 
 
2468
  #: includes/fields/class-acf-field-true_false.php:144
2469
  msgid "Stylised UI"
2470
  msgstr "Стилизованный интерфейс"
2471
 
2472
+ #: includes/fields/class-acf-field-select.php:407
2473
  msgid "Use AJAX to lazy load choices?"
2474
  msgstr "Использовать AJAX для загрузки вариантов выбора?"
2475
 
2476
+ #: includes/fields/class-acf-field-select.php:423
2477
  msgid "Specify the value returned"
2478
  msgstr "Укажите возвращаемое значение"
2479
 
2485
  msgid "Tab"
2486
  msgstr "Вкладка"
2487
 
2488
+ #: includes/fields/class-acf-field-tab.php:102
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2489
  msgid "Placement"
2490
  msgstr "Расположение"
2491
 
2492
+ #: includes/fields/class-acf-field-tab.php:115
2493
+ msgid ""
2494
+ "Define an endpoint for the previous tabs to stop. This will start a new "
2495
+ "group of tabs."
2496
+ msgstr "Используйте это поле в качестве разделителя между группами вкладок"
 
 
 
2497
 
2498
+ #: includes/fields/class-acf-field-taxonomy.php:714
2499
  #, php-format
2500
  msgctxt "No terms"
2501
  msgid "No %s"
2502
  msgstr "Нет %s [нет терминов]"
2503
 
2504
+ #: includes/fields/class-acf-field-taxonomy.php:755
 
 
 
 
2505
  msgid "Select the taxonomy to be displayed"
2506
  msgstr "Выберите таксономию для отображения"
2507
 
2508
+ #: includes/fields/class-acf-field-taxonomy.php:764
2509
  msgid "Appearance"
2510
  msgstr "Отображение"
2511
 
2512
+ #: includes/fields/class-acf-field-taxonomy.php:765
2513
  msgid "Select the appearance of this field"
2514
  msgstr "Выберите способ отображения поля"
2515
 
2516
+ #: includes/fields/class-acf-field-taxonomy.php:770
2517
  msgid "Multiple Values"
2518
  msgstr "Несколько значений"
2519
 
2520
+ #: includes/fields/class-acf-field-taxonomy.php:772
2521
  msgid "Multi Select"
2522
  msgstr "Множественный выбор"
2523
 
2524
+ #: includes/fields/class-acf-field-taxonomy.php:774
2525
  msgid "Single Value"
2526
  msgstr "Одно значение"
2527
 
2528
+ #: includes/fields/class-acf-field-taxonomy.php:775
2529
  msgid "Radio Buttons"
2530
  msgstr "Радио-кнопки"
2531
 
2532
+ #: includes/fields/class-acf-field-taxonomy.php:799
2533
  msgid "Create Terms"
2534
  msgstr "Создание терминов"
2535
 
2536
+ #: includes/fields/class-acf-field-taxonomy.php:800
2537
  msgid "Allow new terms to be created whilst editing"
2538
  msgstr "Разрешнить создавать новые термины во время редактирования"
2539
 
2540
+ #: includes/fields/class-acf-field-taxonomy.php:809
2541
  msgid "Save Terms"
2542
  msgstr "Сохранение терминов"
2543
 
2544
+ #: includes/fields/class-acf-field-taxonomy.php:810
2545
  msgid "Connect selected terms to the post"
2546
  msgstr "Связать выбранные термины с записью"
2547
 
2548
+ #: includes/fields/class-acf-field-taxonomy.php:819
2549
  msgid "Load Terms"
2550
  msgstr "Загрузить термины"
2551
 
2552
+ #: includes/fields/class-acf-field-taxonomy.php:820
2553
  msgid "Load value from posts terms"
2554
  msgstr "Загрузить значения из терминов записей"
2555
 
2556
+ #: includes/fields/class-acf-field-taxonomy.php:834
2557
  msgid "Term Object"
2558
  msgstr "Объект термина"
2559
 
2560
+ #: includes/fields/class-acf-field-taxonomy.php:835
2561
  msgid "Term ID"
2562
  msgstr "ID термина"
2563
 
2564
+ #: includes/fields/class-acf-field-taxonomy.php:885
2565
  #, php-format
2566
  msgid "User unable to add new %s"
2567
  msgstr "У пользователя нет возможности добавить новый %s"
2568
 
2569
+ #: includes/fields/class-acf-field-taxonomy.php:895
2570
  #, php-format
2571
  msgid "%s already exists"
2572
  msgstr "%s уже существует"
2573
 
2574
+ #: includes/fields/class-acf-field-taxonomy.php:927
2575
  #, php-format
2576
  msgid "%s added"
2577
  msgstr "%s добавлен"
2578
 
2579
+ #: includes/fields/class-acf-field-taxonomy.php:973
2580
  msgid "Add"
2581
  msgstr "Добавить"
2582
 
2614
  msgid "True / False"
2615
  msgstr "Да / Нет"
2616
 
 
 
 
 
 
 
 
 
 
 
 
 
2617
  #: includes/fields/class-acf-field-true_false.php:127
2618
  msgid "Displays text alongside the checkbox"
2619
  msgstr "Отображать текст рядом с переключателем"
2626
  msgid "Text shown when active"
2627
  msgstr "Текст в активном состоянии"
2628
 
2629
+ #: includes/fields/class-acf-field-true_false.php:170
2630
  msgid "Off Text"
2631
  msgstr "Выключено"
2632
 
2633
+ #: includes/fields/class-acf-field-true_false.php:171
2634
  msgid "Text shown when inactive"
2635
  msgstr "Текст в выключенном состоянии"
2636
 
2646
  msgid "User"
2647
  msgstr "Пользователь"
2648
 
2649
+ #: includes/fields/class-acf-field-user.php:394
2650
  msgid "Filter by role"
2651
  msgstr "Фильтровать по группе"
2652
 
2653
+ #: includes/fields/class-acf-field-user.php:402
2654
  msgid "All user roles"
2655
  msgstr "Все группы пользователей"
2656
 
2657
+ #: includes/fields/class-acf-field-user.php:433
2658
+ msgid "User Array"
2659
+ msgstr "Массив с данными"
2660
+
2661
+ #: includes/fields/class-acf-field-user.php:434
2662
+ msgid "User Object"
2663
+ msgstr "Объект пользователя"
2664
+
2665
+ #: includes/fields/class-acf-field-user.php:435
2666
+ msgid "User ID"
2667
+ msgstr "ID пользователя"
2668
+
2669
  #: includes/fields/class-acf-field-wysiwyg.php:25
2670
  msgid "Wysiwyg Editor"
2671
  msgstr "Редактор WordPress"
2672
 
2673
+ #: includes/fields/class-acf-field-wysiwyg.php:346
2674
  msgid "Visual"
2675
  msgstr "Визуально"
2676
 
2677
+ #: includes/fields/class-acf-field-wysiwyg.php:347
2678
  msgctxt "Name for the Text editor tab (formerly HTML)"
2679
  msgid "Text"
2680
  msgstr "Текст"
2681
 
2682
+ #: includes/fields/class-acf-field-wysiwyg.php:353
2683
  msgid "Click to initialize TinyMCE"
2684
  msgstr "Нажмите для запуска TinyMCE"
2685
 
2686
+ #: includes/fields/class-acf-field-wysiwyg.php:406
2687
  msgid "Tabs"
2688
  msgstr "Вкладки"
2689
 
2690
+ #: includes/fields/class-acf-field-wysiwyg.php:411
2691
  msgid "Visual & Text"
2692
  msgstr "Визуально и текст"
2693
 
2694
+ #: includes/fields/class-acf-field-wysiwyg.php:412
2695
  msgid "Visual Only"
2696
  msgstr "Только визуальный редактор"
2697
 
2698
+ #: includes/fields/class-acf-field-wysiwyg.php:413
2699
  msgid "Text Only"
2700
  msgstr "Только текстовый редактор"
2701
 
2702
+ #: includes/fields/class-acf-field-wysiwyg.php:420
2703
  msgid "Toolbar"
2704
  msgstr "Панель инструментов"
2705
 
2706
+ #: includes/fields/class-acf-field-wysiwyg.php:435
2707
  msgid "Show Media Upload Buttons?"
2708
  msgstr "Кнопки загрузки медиа"
2709
 
2710
+ #: includes/fields/class-acf-field-wysiwyg.php:445
2711
  msgid "Delay initialization?"
2712
  msgstr "Отложенная инициализация"
2713
 
2714
+ #: includes/fields/class-acf-field-wysiwyg.php:446
2715
  msgid "TinyMCE will not be initalized until field is clicked"
2716
  msgstr "TinyMCE не будет инициализирован до клика по полю"
2717
 
2718
+ #: includes/forms/form-comment.php:166 includes/forms/form-post.php:301
2719
  #: pro/admin/admin-options-page.php:308
2720
  msgid "Edit field group"
2721
  msgstr "Редактировать группу полей"
2724
  msgid "Validate Email"
2725
  msgstr "Проверка Email"
2726
 
2727
+ #: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:588
2728
+ #: pro/options-page.php:81
2729
  msgid "Update"
2730
  msgstr "Обновить"
2731
 
2733
  msgid "Post updated"
2734
  msgstr "Запись обновлена"
2735
 
2736
+ #: includes/forms/form-front.php:230
2737
  msgid "Spam Detected"
2738
  msgstr "Обнаружен спам"
2739
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2740
  #: includes/locations.php:93 includes/locations/class-acf-location-post.php:27
2741
  msgid "Post"
2742
  msgstr "Запись"
2749
  msgid "Forms"
2750
  msgstr "Формы"
2751
 
2752
+ #: includes/locations.php:247
2753
+ msgid "is equal to"
2754
+ msgstr "равно"
2755
+
2756
+ #: includes/locations.php:248
2757
+ msgid "is not equal to"
2758
+ msgstr "не равно"
2759
+
2760
  #: includes/locations/class-acf-location-attachment.php:27
2761
  msgid "Attachment"
2762
  msgstr "Медиафайл"
2827
  msgid "Page Type"
2828
  msgstr "Тип страницы"
2829
 
2830
+ #: includes/locations/class-acf-location-page-type.php:146
2831
  msgid "Front Page"
2832
  msgstr "Главная страница"
2833
 
2834
+ #: includes/locations/class-acf-location-page-type.php:147
2835
  msgid "Posts Page"
2836
  msgstr "Страница записей"
2837
 
2838
+ #: includes/locations/class-acf-location-page-type.php:148
2839
  msgid "Top Level Page (no parent)"
2840
  msgstr "Страница верхнего уровня (без родителя)"
2841
 
2842
+ #: includes/locations/class-acf-location-page-type.php:149
2843
  msgid "Parent Page (has children)"
2844
  msgstr "Родительская страница (есть дочерние страницы)"
2845
 
2846
+ #: includes/locations/class-acf-location-page-type.php:150
2847
  msgid "Child Page (has parent)"
2848
  msgstr "Дочерняя страница (есть родительские страницы)"
2849
 
2867
  msgid "Post Template"
2868
  msgstr "Шаблон записи"
2869
 
 
 
 
 
2870
  #: includes/locations/class-acf-location-user-form.php:27
2871
  msgid "User Form"
2872
  msgstr "Пользователь"
2887
  msgid "Widget"
2888
  msgstr "Виджет"
2889
 
 
 
 
 
 
 
 
 
 
 
2890
  #: includes/validation.php:364
2891
  #, php-format
2892
  msgid "%s value is required"
2982
  msgid "Clone"
2983
  msgstr "Клон"
2984
 
2985
+ #: pro/fields/class-acf-field-clone.php:812
2986
  msgid "Select one or more fields you wish to clone"
2987
  msgstr "Выберите одно или несколько полей, которые вы хотите клонировать"
2988
 
2989
+ #: pro/fields/class-acf-field-clone.php:829
2990
  msgid "Display"
2991
  msgstr "Способ отображения"
2992
 
2993
+ #: pro/fields/class-acf-field-clone.php:830
2994
  msgid "Specify the style used to render the clone field"
2995
  msgstr "Выберите стиль отображения клонированных полей"
2996
 
2997
+ #: pro/fields/class-acf-field-clone.php:835
2998
  msgid "Group (displays selected fields in a group within this field)"
2999
  msgstr ""
3000
  "Группа (сгруппировать выбранные поля в одно и выводить вместо текущего)"
3001
 
3002
+ #: pro/fields/class-acf-field-clone.php:836
3003
  msgid "Seamless (replaces this field with selected fields)"
3004
  msgstr "Отдельно (выбранные поля выводятся отдельно вместо текущего)"
3005
 
3006
+ #: pro/fields/class-acf-field-clone.php:857
3007
  #, php-format
3008
  msgid "Labels will be displayed as %s"
3009
  msgstr "Ярлыки будут отображаться как %s"
3010
 
3011
+ #: pro/fields/class-acf-field-clone.php:860
3012
  msgid "Prefix Field Labels"
3013
  msgstr "Префикс для ярлыков полей"
3014
 
3015
+ #: pro/fields/class-acf-field-clone.php:871
3016
  #, php-format
3017
  msgid "Values will be saved as %s"
3018
  msgstr "Значения будут сохранены как %s"
3019
 
3020
+ #: pro/fields/class-acf-field-clone.php:874
3021
  msgid "Prefix Field Names"
3022
  msgstr "Префикс для названий полей"
3023
 
3024
+ #: pro/fields/class-acf-field-clone.php:992
3025
  msgid "Unknown field"
3026
  msgstr "Неизвестное поле"
3027
 
3028
+ #: pro/fields/class-acf-field-clone.php:1031
3029
  msgid "Unknown field group"
3030
  msgstr "Неизвестная группа полей"
3031
 
3032
+ #: pro/fields/class-acf-field-clone.php:1035
3033
  #, php-format
3034
  msgid "All fields from %s field group"
3035
+ msgstr "Все поля группы %s"
3036
 
3037
  #: pro/fields/class-acf-field-flexible-content.php:31
3038
+ #: pro/fields/class-acf-field-repeater.php:193
3039
+ #: pro/fields/class-acf-field-repeater.php:463
3040
  msgid "Add Row"
3041
  msgstr "Добавить"
3042
 
3043
+ #: pro/fields/class-acf-field-flexible-content.php:73
3044
+ #: pro/fields/class-acf-field-flexible-content.php:938
3045
+ #: pro/fields/class-acf-field-flexible-content.php:1020
3046
  msgid "layout"
3047
+ msgid_plural "layouts"
3048
+ msgstr[0] "макет"
3049
+ msgstr[1] "макета"
3050
+ msgstr[2] "макетов"
3051
 
3052
+ #: pro/fields/class-acf-field-flexible-content.php:74
3053
  msgid "layouts"
3054
  msgstr "макеты"
3055
 
3056
+ #: pro/fields/class-acf-field-flexible-content.php:77
3057
+ #: pro/fields/class-acf-field-flexible-content.php:937
3058
+ #: pro/fields/class-acf-field-flexible-content.php:1019
 
 
 
 
 
 
 
 
 
 
3059
  msgid "This field requires at least {min} {label} {identifier}"
3060
  msgstr "Это поле требует как минимум {min} {label} {identifier}"
3061
 
3062
+ #: pro/fields/class-acf-field-flexible-content.php:78
3063
+ msgid "This field has a limit of {max} {label} {identifier}"
3064
+ msgstr "Это поле ограничено {max} {label} {identifier}"
3065
 
3066
+ #: pro/fields/class-acf-field-flexible-content.php:81
3067
  msgid "{available} {label} {identifier} available (max {max})"
3068
  msgstr "{available} {label} {identifier} доступно (максимум {max})"
3069
 
3070
+ #: pro/fields/class-acf-field-flexible-content.php:82
3071
  msgid "{required} {label} {identifier} required (min {min})"
3072
  msgstr "{required} {label} {identifier} требуется (минимум {min})"
3073
 
3074
+ #: pro/fields/class-acf-field-flexible-content.php:85
3075
  msgid "Flexible Content requires at least 1 layout"
3076
  msgstr "Для гибкого содержания требуется как минимум один макет"
3077
 
3078
+ #: pro/fields/class-acf-field-flexible-content.php:302
3079
  #, php-format
3080
  msgid "Click the \"%s\" button below to start creating your layout"
3081
  msgstr "Нажмите на кнопку \"%s\" ниже для начала создания собственного макета"
3082
 
3083
+ #: pro/fields/class-acf-field-flexible-content.php:427
3084
  msgid "Add layout"
3085
  msgstr "Добавить макет"
3086
 
3087
+ #: pro/fields/class-acf-field-flexible-content.php:428
3088
  msgid "Remove layout"
3089
  msgstr "Удалить макет"
3090
 
3091
+ #: pro/fields/class-acf-field-flexible-content.php:429
3092
+ #: pro/fields/class-acf-field-repeater.php:296
3093
  msgid "Click to toggle"
3094
  msgstr "Нажмите для переключения"
3095
 
3096
+ #: pro/fields/class-acf-field-flexible-content.php:569
3097
  msgid "Reorder Layout"
3098
  msgstr "Переместить макет"
3099
 
3100
+ #: pro/fields/class-acf-field-flexible-content.php:569
3101
  msgid "Reorder"
3102
  msgstr "Переместить"
3103
 
3104
+ #: pro/fields/class-acf-field-flexible-content.php:570
3105
  msgid "Delete Layout"
3106
  msgstr "Удалить макет"
3107
 
3108
+ #: pro/fields/class-acf-field-flexible-content.php:571
3109
  msgid "Duplicate Layout"
3110
  msgstr "Дублировать макет"
3111
 
3112
+ #: pro/fields/class-acf-field-flexible-content.php:572
3113
  msgid "Add New Layout"
3114
  msgstr "Добавить новый макет"
3115
 
3116
+ #: pro/fields/class-acf-field-flexible-content.php:643
3117
  msgid "Min"
3118
  msgstr "Минимум"
3119
 
3120
+ #: pro/fields/class-acf-field-flexible-content.php:656
3121
  msgid "Max"
3122
  msgstr "Максимум"
3123
 
3124
+ #: pro/fields/class-acf-field-flexible-content.php:683
3125
+ #: pro/fields/class-acf-field-repeater.php:459
3126
  msgid "Button Label"
3127
  msgstr "Текст кнопки добавления"
3128
 
3129
+ #: pro/fields/class-acf-field-flexible-content.php:692
3130
  msgid "Minimum Layouts"
3131
  msgstr "Мин. количество блоков"
3132
 
3133
+ #: pro/fields/class-acf-field-flexible-content.php:701
3134
  msgid "Maximum Layouts"
3135
  msgstr "Макс. количество блоков"
3136
 
3137
+ #: pro/fields/class-acf-field-gallery.php:71
3138
  msgid "Add Image to Gallery"
3139
  msgstr "Добавление изображений в галерею"
3140
 
3141
+ #: pro/fields/class-acf-field-gallery.php:72
3142
  msgid "Maximum selection reached"
3143
  msgstr "Выбрано максимальное количество изображений"
3144
 
3145
+ #: pro/fields/class-acf-field-gallery.php:336
3146
  msgid "Length"
3147
  msgstr "Длина"
3148
 
3149
+ #: pro/fields/class-acf-field-gallery.php:379
3150
  msgid "Caption"
3151
  msgstr "Подпись"
3152
 
3153
+ #: pro/fields/class-acf-field-gallery.php:388
3154
  msgid "Alt Text"
3155
  msgstr "Текст в ALT"
3156
 
3157
+ #: pro/fields/class-acf-field-gallery.php:559
3158
  msgid "Add to gallery"
3159
  msgstr "Добавить изображения"
3160
 
3161
+ #: pro/fields/class-acf-field-gallery.php:563
3162
  msgid "Bulk actions"
3163
  msgstr "Сортировка"
3164
 
3165
+ #: pro/fields/class-acf-field-gallery.php:564
3166
  msgid "Sort by date uploaded"
3167
  msgstr "По дате загрузки"
3168
 
3169
+ #: pro/fields/class-acf-field-gallery.php:565
3170
  msgid "Sort by date modified"
3171
  msgstr "По дате изменения"
3172
 
3173
+ #: pro/fields/class-acf-field-gallery.php:566
3174
  msgid "Sort by title"
3175
  msgstr "По названию"
3176
 
3177
+ #: pro/fields/class-acf-field-gallery.php:567
3178
  msgid "Reverse current order"
3179
  msgstr "Инвертировать"
3180
 
3181
+ #: pro/fields/class-acf-field-gallery.php:585
3182
  msgid "Close"
3183
  msgstr "Закрыть"
3184
 
3185
+ #: pro/fields/class-acf-field-gallery.php:639
3186
  msgid "Minimum Selection"
3187
  msgstr "Мин. количество изображений"
3188
 
3189
+ #: pro/fields/class-acf-field-gallery.php:648
3190
  msgid "Maximum Selection"
3191
  msgstr "Макс. количество изображений"
3192
 
3193
+ #: pro/fields/class-acf-field-gallery.php:657
3194
  msgid "Insert"
3195
  msgstr "Добавить"
3196
 
3197
+ #: pro/fields/class-acf-field-gallery.php:658
3198
  msgid "Specify where new attachments are added"
3199
  msgstr "Укажите куда добавлять новые вложения"
3200
 
3201
+ #: pro/fields/class-acf-field-gallery.php:662
3202
  msgid "Append to the end"
3203
  msgstr "Добавлять в конец"
3204
 
3205
+ #: pro/fields/class-acf-field-gallery.php:663
3206
  msgid "Prepend to the beginning"
3207
  msgstr "Добавлять в начало"
3208
 
3209
+ #: pro/fields/class-acf-field-repeater.php:65
3210
+ #: pro/fields/class-acf-field-repeater.php:656
3211
  msgid "Minimum rows reached ({min} rows)"
3212
  msgstr "Достигнуто минимальное количество ({min} элементов)"
3213
 
3214
+ #: pro/fields/class-acf-field-repeater.php:66
3215
  msgid "Maximum rows reached ({max} rows)"
3216
  msgstr "Достигнуто максимальное количество ({max} элементов)"
3217
 
3218
+ #: pro/fields/class-acf-field-repeater.php:333
3219
  msgid "Add row"
3220
  msgstr "Добавить"
3221
 
3222
+ #: pro/fields/class-acf-field-repeater.php:334
3223
  msgid "Remove row"
3224
  msgstr "Удалить"
3225
 
3226
+ #: pro/fields/class-acf-field-repeater.php:412
3227
  msgid "Collapsed"
3228
  msgstr "Сокращенный заголовок"
3229
 
3230
+ #: pro/fields/class-acf-field-repeater.php:413
3231
  msgid "Select a sub field to show when row is collapsed"
3232
  msgstr ""
3233
  "Выберите поле, которое будет отображаться в качестве заголовка при "
3234
  "сворачивании блока"
3235
 
3236
+ #: pro/fields/class-acf-field-repeater.php:423
3237
  msgid "Minimum Rows"
3238
  msgstr "Мин. количество элементов"
3239
 
3240
+ #: pro/fields/class-acf-field-repeater.php:433
3241
  msgid "Maximum Rows"
3242
  msgstr "Макс. количество элементов"
3243
 
3276
  msgid "http://www.elliotcondon.com/"
3277
  msgstr "http://www.elliotcondon.com/"
3278
 
3279
+ #~ msgid "Parent fields"
3280
+ #~ msgstr "Родительские поля"
3281
+
3282
+ #~ msgid "Sibling fields"
3283
+ #~ msgstr "Поля одного уровня вложенности"
3284
+
3285
+ #~ msgid "Export Field Groups to PHP"
3286
+ #~ msgstr "Экспортировать группы полей в PHP"
3287
+
3288
+ #~ msgid "Download export file"
3289
+ #~ msgstr "Загрузить файл"
3290
+
3291
+ #~ msgid "Generate export code"
3292
+ #~ msgstr "Генерировать код"
3293
+
3294
+ #~ msgid "Import"
3295
+ #~ msgstr "Импорт"
3296
+
3297
+ #~ msgid "Locating"
3298
+ #~ msgstr "Определение местоположение"
3299
+
3300
+ #~ msgid "Error."
3301
+ #~ msgstr "Ошибка."
3302
+
3303
+ #~ msgid "No embed found for the given URL."
3304
+ #~ msgstr "По указанной вами ссылке медиаконтент не обнаружен."
3305
+
3306
+ #~ msgid "Minimum values reached ( {min} values )"
3307
+ #~ msgstr "Минимальное количество значений достигнуто ({min} значений)"
3308
+
3309
+ #~ msgid ""
3310
+ #~ "The tab field will display incorrectly when added to a Table style "
3311
+ #~ "repeater field or flexible content field layout"
3312
+ #~ msgstr ""
3313
+ #~ "Вкладка может отображаться неправильно при добавлении в поля гибкого "
3314
+ #~ "содержания и повторителя в табличном стиле"
3315
+
3316
+ #~ msgid ""
3317
+ #~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields "
3318
+ #~ "together."
3319
+ #~ msgstr ""
3320
+ #~ "Используйте вкладки для лучшей организации редактирования групп полей."
3321
+
3322
+ #~ msgid ""
3323
+ #~ "All fields following this \"tab field\" (or until another \"tab field\" "
3324
+ #~ "is defined) will be grouped together using this field's label as the tab "
3325
+ #~ "heading."
3326
+ #~ msgstr ""
3327
+ #~ "Все поля после поля со вкладкой группируются на отдельной вкладке с "
3328
+ #~ "соответствующим названием."
3329
+
3330
+ #~ msgid "None"
3331
+ #~ msgstr "Ничего"
3332
+
3333
+ #~ msgid "Taxonomy Term"
3334
+ #~ msgstr "Таксономия"
3335
+
3336
+ #~ msgid "remove {layout}?"
3337
+ #~ msgstr "удалить {layout}?"
3338
+
3339
+ #~ msgid "This field requires at least {min} {identifier}"
3340
+ #~ msgstr "Это поле требует как минимум {min} {identifier}"
3341
+
3342
+ #~ msgid "Maximum {label} limit reached ({max} {identifier})"
3343
+ #~ msgstr "Максимальное ограничение {label} достигнуто ({max} {identifier})"
3344
+
3345
  #~ msgid "Getting Started"
3346
  #~ msgstr "Приступаем к работе"
3347
 
3718
  #~ msgid "Download"
3719
  #~ msgstr "Скачать"
3720
 
 
 
 
3721
  #~ msgid "Select the field groups to be exported"
3722
  #~ msgstr "Выберите группы полей, которые надо экспортировать."
3723
 
lang/acf.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Advanced Custom Fields\n"
5
  "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
6
- "POT-Creation-Date: 2018-07-12 13:44+1000\n"
7
  "PO-Revision-Date: 2015-06-11 13:00+1000\n"
8
  "Last-Translator: Elliot Condon <e@elliotcondon.com>\n"
9
  "Language-Team: Elliot Condon <e@elliotcondon.com>\n"
@@ -26,92 +26,91 @@ msgstr ""
26
  msgid "Advanced Custom Fields"
27
  msgstr ""
28
 
29
- #: acf.php:387 includes/admin/admin.php:117
30
  msgid "Field Groups"
31
  msgstr ""
32
 
33
- #: acf.php:388
34
  msgid "Field Group"
35
  msgstr ""
36
 
37
- #: acf.php:389 acf.php:421 includes/admin/admin.php:118
38
  #: pro/fields/class-acf-field-flexible-content.php:572
39
  msgid "Add New"
40
  msgstr ""
41
 
42
- #: acf.php:390
43
  msgid "Add New Field Group"
44
  msgstr ""
45
 
46
- #: acf.php:391
47
  msgid "Edit Field Group"
48
  msgstr ""
49
 
50
- #: acf.php:392
51
  msgid "New Field Group"
52
  msgstr ""
53
 
54
- #: acf.php:393
55
  msgid "View Field Group"
56
  msgstr ""
57
 
58
- #: acf.php:394
59
  msgid "Search Field Groups"
60
  msgstr ""
61
 
62
- #: acf.php:395
63
  msgid "No Field Groups found"
64
  msgstr ""
65
 
66
- #: acf.php:396
67
  msgid "No Field Groups found in Trash"
68
  msgstr ""
69
 
70
- #: acf.php:419 includes/admin/admin-field-group.php:202
71
  #: includes/admin/admin-field-groups.php:510
72
  #: pro/fields/class-acf-field-clone.php:811
73
  msgid "Fields"
74
  msgstr ""
75
 
76
- #: acf.php:420
77
  msgid "Field"
78
  msgstr ""
79
 
80
- #: acf.php:422
81
  msgid "Add New Field"
82
  msgstr ""
83
 
84
- #: acf.php:423
85
  msgid "Edit Field"
86
  msgstr ""
87
 
88
- #: acf.php:424 includes/admin/views/field-group-fields.php:41
89
- #: includes/admin/views/settings-info.php:105
90
  msgid "New Field"
91
  msgstr ""
92
 
93
- #: acf.php:425
94
  msgid "View Field"
95
  msgstr ""
96
 
97
- #: acf.php:426
98
  msgid "Search Fields"
99
  msgstr ""
100
 
101
- #: acf.php:427
102
  msgid "No Fields found"
103
  msgstr ""
104
 
105
- #: acf.php:428
106
  msgid "No Fields found in Trash"
107
  msgstr ""
108
 
109
- #: acf.php:467 includes/admin/admin-field-group.php:384
110
  #: includes/admin/admin-field-groups.php:567
111
  msgid "Inactive"
112
  msgstr ""
113
 
114
- #: acf.php:472
115
  #, php-format
116
  msgid "Inactive <span class=\"count\">(%s)</span>"
117
  msgid_plural "Inactive <span class=\"count\">(%s)</span>"
@@ -194,7 +193,7 @@ msgstr ""
194
  #: includes/admin/views/field-group-field-conditional-logic.php:151
195
  #: includes/admin/views/field-group-locations.php:29
196
  #: includes/admin/views/html-location-group.php:3
197
- #: includes/api/api-helpers.php:4165
198
  msgid "or"
199
  msgstr ""
200
 
@@ -220,24 +219,24 @@ msgstr ""
220
  msgid "Active"
221
  msgstr ""
222
 
223
- #: includes/admin/admin-field-group.php:760
224
  msgid "Move Complete."
225
  msgstr ""
226
 
227
- #: includes/admin/admin-field-group.php:761
228
  #, php-format
229
  msgid "The %s field can now be found in the %s field group"
230
  msgstr ""
231
 
232
- #: includes/admin/admin-field-group.php:762
233
  msgid "Close Window"
234
  msgstr ""
235
 
236
- #: includes/admin/admin-field-group.php:803
237
  msgid "Please select the destination for this field"
238
  msgstr ""
239
 
240
- #: includes/admin/admin-field-group.php:810
241
  msgid "Move Field"
242
  msgstr ""
243
 
@@ -284,8 +283,8 @@ msgstr ""
284
 
285
  #: includes/admin/admin-field-groups.php:508
286
  #: includes/admin/views/field-group-options.php:96
287
- #: includes/admin/views/install-network.php:21
288
- #: includes/admin/views/install-network.php:29
289
  #: pro/fields/class-acf-field-gallery.php:397
290
  msgid "Description"
291
  msgstr ""
@@ -327,6 +326,7 @@ msgid "Support"
327
  msgstr ""
328
 
329
  #: includes/admin/admin-field-groups.php:623
 
330
  msgid "Pro"
331
  msgstr ""
332
 
@@ -379,26 +379,20 @@ msgstr ""
379
  msgid "Tools"
380
  msgstr ""
381
 
382
- #: includes/admin/admin.php:113
383
- #: includes/admin/views/field-group-options.php:110
384
- msgid "Custom Fields"
385
- msgstr ""
386
-
387
- #: includes/admin/install-network.php:88 includes/admin/install.php:70
388
- #: includes/admin/install.php:121
389
  msgid "Upgrade Database"
390
  msgstr ""
391
 
392
- #: includes/admin/install-network.php:140
393
  msgid "Review sites & upgrade"
394
  msgstr ""
395
 
396
- #: includes/admin/install.php:187
397
- msgid "Error validating request"
398
- msgstr ""
399
-
400
- #: includes/admin/install.php:210 includes/admin/views/install.php:104
401
- msgid "No updates available."
402
  msgstr ""
403
 
404
  #: includes/admin/settings-addons.php:51
@@ -526,7 +520,7 @@ msgid "Show this field if"
526
  msgstr ""
527
 
528
  #: includes/admin/views/field-group-field-conditional-logic.php:138
529
- #: includes/admin/views/html-location-rule.php:80
530
  msgid "and"
531
  msgstr ""
532
 
@@ -635,13 +629,13 @@ msgstr ""
635
  #: includes/fields/class-acf-field-button-group.php:198
636
  #: includes/fields/class-acf-field-checkbox.php:420
637
  #: includes/fields/class-acf-field-radio.php:311
638
- #: includes/fields/class-acf-field-select.php:439
639
  #: pro/fields/class-acf-field-flexible-content.php:596
640
  msgid "Label"
641
  msgstr ""
642
 
643
  #: includes/admin/views/field-group-fields.php:6
644
- #: includes/fields/class-acf-field-taxonomy.php:960
645
  #: pro/fields/class-acf-field-flexible-content.php:610
646
  msgid "Name"
647
  msgstr ""
@@ -811,114 +805,122 @@ msgid ""
811
  "options will be used (the one with the lowest order number)"
812
  msgstr ""
813
 
814
- #: includes/admin/views/html-location-group.php:3
815
- msgid "Show this field group if"
816
- msgstr ""
817
-
818
- #: includes/admin/views/install-network.php:4
819
- msgid "Upgrade Sites"
820
- msgstr ""
821
-
822
- #: includes/admin/views/install-network.php:9
823
- #: includes/admin/views/install.php:3
824
- msgid "Advanced Custom Fields Database Upgrade"
825
- msgstr ""
826
-
827
- #: includes/admin/views/install-network.php:11
828
  #, php-format
829
  msgid ""
830
  "The following sites require a DB upgrade. Check the ones you want to update "
831
  "and then click %s."
832
  msgstr ""
833
 
834
- #: includes/admin/views/install-network.php:20
835
- #: includes/admin/views/install-network.php:28
 
 
 
 
 
 
836
  msgid "Site"
837
  msgstr ""
838
 
839
- #: includes/admin/views/install-network.php:48
840
  #, php-format
841
  msgid "Site requires database upgrade from %s to %s"
842
  msgstr ""
843
 
844
- #: includes/admin/views/install-network.php:50
845
  msgid "Site is up to date"
846
  msgstr ""
847
 
848
- #: includes/admin/views/install-network.php:63
849
  #, php-format
850
  msgid ""
851
  "Database Upgrade complete. <a href=\"%s\">Return to network dashboard</a>"
852
  msgstr ""
853
 
854
- #: includes/admin/views/install-network.php:102
855
- #: includes/admin/views/install-notice.php:42
856
  msgid ""
857
  "It is strongly recommended that you backup your database before proceeding. "
858
  "Are you sure you wish to run the updater now?"
859
  msgstr ""
860
 
861
- #: includes/admin/views/install-network.php:158
862
- msgid "Upgrade complete"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
863
  msgstr ""
864
 
865
- #: includes/admin/views/install-network.php:162
866
- #: includes/admin/views/install.php:9
867
  #, php-format
868
- msgid "Upgrading data to version %s"
869
  msgstr ""
870
 
871
- #: includes/admin/views/install-notice.php:8
 
 
 
 
 
 
 
 
 
872
  #: pro/fields/class-acf-field-repeater.php:25
873
  msgid "Repeater"
874
  msgstr ""
875
 
876
- #: includes/admin/views/install-notice.php:9
877
  #: pro/fields/class-acf-field-flexible-content.php:25
878
  msgid "Flexible Content"
879
  msgstr ""
880
 
881
- #: includes/admin/views/install-notice.php:10
882
  #: pro/fields/class-acf-field-gallery.php:25
883
  msgid "Gallery"
884
  msgstr ""
885
 
886
- #: includes/admin/views/install-notice.php:11
887
  #: pro/locations/class-acf-location-options-page.php:26
888
  msgid "Options Page"
889
  msgstr ""
890
 
891
- #: includes/admin/views/install-notice.php:26
892
  msgid "Database Upgrade Required"
893
  msgstr ""
894
 
895
- #: includes/admin/views/install-notice.php:28
896
  #, php-format
897
  msgid "Thank you for updating to %s v%s!"
898
  msgstr ""
899
 
900
- #: includes/admin/views/install-notice.php:28
901
  msgid ""
902
- "Before you start using the new awesome features, please update your database "
903
- "to the newest version."
904
  msgstr ""
905
 
906
- #: includes/admin/views/install-notice.php:31
907
  #, php-format
908
  msgid ""
909
  "Please also ensure any premium add-ons (%s) have first been updated to the "
910
  "latest version."
911
  msgstr ""
912
 
913
- #: includes/admin/views/install.php:7
914
- msgid "Reading upgrade tasks..."
915
- msgstr ""
916
-
917
- #: includes/admin/views/install.php:11
918
- #, php-format
919
- msgid "Database Upgrade complete. <a href=\"%s\">See what's new</a>"
920
- msgstr ""
921
-
922
  #: includes/admin/views/settings-addons.php:17
923
  msgid "Download & Install"
924
  msgstr ""
@@ -938,57 +940,57 @@ msgid ""
938
  "hope you like it."
939
  msgstr ""
940
 
941
- #: includes/admin/views/settings-info.php:17
942
- msgid "A smoother custom field experience"
943
  msgstr ""
944
 
945
- #: includes/admin/views/settings-info.php:22
946
  msgid "Improved Usability"
947
  msgstr ""
948
 
949
- #: includes/admin/views/settings-info.php:23
950
  msgid ""
951
  "Including the popular Select2 library has improved both usability and speed "
952
  "across a number of field types including post object, page link, taxonomy "
953
  "and select."
954
  msgstr ""
955
 
956
- #: includes/admin/views/settings-info.php:27
957
  msgid "Improved Design"
958
  msgstr ""
959
 
960
- #: includes/admin/views/settings-info.php:28
961
  msgid ""
962
  "Many fields have undergone a visual refresh to make ACF look better than "
963
  "ever! Noticeable changes are seen on the gallery, relationship and oEmbed "
964
  "(new) fields!"
965
  msgstr ""
966
 
967
- #: includes/admin/views/settings-info.php:32
968
  msgid "Improved Data"
969
  msgstr ""
970
 
971
- #: includes/admin/views/settings-info.php:33
972
  msgid ""
973
  "Redesigning the data architecture has allowed sub fields to live "
974
  "independently from their parents. This allows you to drag and drop fields in "
975
  "and out of parent fields!"
976
  msgstr ""
977
 
978
- #: includes/admin/views/settings-info.php:39
979
  msgid "Goodbye Add-ons. Hello PRO"
980
  msgstr ""
981
 
982
- #: includes/admin/views/settings-info.php:44
983
  msgid "Introducing ACF PRO"
984
  msgstr ""
985
 
986
- #: includes/admin/views/settings-info.php:45
987
  msgid ""
988
  "We're changing the way premium functionality is delivered in an exciting way!"
989
  msgstr ""
990
 
991
- #: includes/admin/views/settings-info.php:46
992
  #, php-format
993
  msgid ""
994
  "All 4 premium add-ons have been combined into a new <a href=\"%s\">Pro "
@@ -996,228 +998,229 @@ msgid ""
996
  "premium functionality is more affordable and accessible than ever before!"
997
  msgstr ""
998
 
999
- #: includes/admin/views/settings-info.php:50
1000
  msgid "Powerful Features"
1001
  msgstr ""
1002
 
1003
- #: includes/admin/views/settings-info.php:51
1004
  msgid ""
1005
  "ACF PRO contains powerful features such as repeatable data, flexible content "
1006
  "layouts, a beautiful gallery field and the ability to create extra admin "
1007
  "options pages!"
1008
  msgstr ""
1009
 
1010
- #: includes/admin/views/settings-info.php:52
1011
  #, php-format
1012
  msgid "Read more about <a href=\"%s\">ACF PRO features</a>."
1013
  msgstr ""
1014
 
1015
- #: includes/admin/views/settings-info.php:56
1016
  msgid "Easy Upgrading"
1017
  msgstr ""
1018
 
1019
- #: includes/admin/views/settings-info.php:57
1020
- #, php-format
1021
  msgid ""
1022
- "To help make upgrading easy, <a href=\"%s\">login to your store account</a> "
1023
- "and claim a free copy of ACF PRO!"
1024
  msgstr ""
1025
 
1026
- #: includes/admin/views/settings-info.php:58
1027
  #, php-format
1028
  msgid ""
1029
  "We also wrote an <a href=\"%s\">upgrade guide</a> to answer any questions, "
1030
  "but if you do have one, please contact our support team via the <a href=\"%s"
1031
- "\">help desk</a>"
1032
  msgstr ""
1033
 
1034
- #: includes/admin/views/settings-info.php:66
1035
- msgid "Under the Hood"
1036
  msgstr ""
1037
 
1038
- #: includes/admin/views/settings-info.php:71
1039
- msgid "Smarter field settings"
1040
  msgstr ""
1041
 
1042
- #: includes/admin/views/settings-info.php:72
1043
- msgid "ACF now saves its field settings as individual post objects"
 
 
1044
  msgstr ""
1045
 
1046
- #: includes/admin/views/settings-info.php:76
1047
- msgid "More AJAX"
1048
  msgstr ""
1049
 
1050
- #: includes/admin/views/settings-info.php:77
1051
- msgid "More fields use AJAX powered search to speed up page loading"
1052
  msgstr ""
1053
 
1054
- #: includes/admin/views/settings-info.php:81
1055
- msgid "Local JSON"
 
 
 
 
 
 
1056
  msgstr ""
1057
 
1058
- #: includes/admin/views/settings-info.php:82
1059
- msgid "New auto export to JSON feature improves speed"
1060
  msgstr ""
1061
 
1062
- #: includes/admin/views/settings-info.php:88
1063
- msgid "Better version control"
3
  msgstr ""
4
  "Project-Id-Version: Advanced Custom Fields\n"
5
  "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
6
+ "POT-Creation-Date: 2018-08-30 15:53+1000\n"
7
  "PO-Revision-Date: 2015-06-11 13:00+1000\n"
8
  "Last-Translator: Elliot Condon <e@elliotcondon.com>\n"
9
  "Language-Team: Elliot Condon <e@elliotcondon.com>\n"
26
  msgid "Advanced Custom Fields"
27
  msgstr ""
28
 
29
+ #: acf.php:385 includes/admin/admin.php:117
30
  msgid "Field Groups"
31
  msgstr ""
32
 
33
+ #: acf.php:386
34
  msgid "Field Group"
35
  msgstr ""
36
 
37
+ #: acf.php:387 acf.php:419 includes/admin/admin.php:118
38
  #: pro/fields/class-acf-field-flexible-content.php:572
39
  msgid "Add New"
40
  msgstr ""
41
 
42
+ #: acf.php:388
43
  msgid "Add New Field Group"
44
  msgstr ""
45
 
46
+ #: acf.php:389
47
  msgid "Edit Field Group"
48
  msgstr ""
49
 
50
+ #: acf.php:390
51
  msgid "New Field Group"
52
  msgstr ""
53
 
54
+ #: acf.php:391
55
  msgid "View Field Group"
56
  msgstr ""
57
 
58
+ #: acf.php:392
59
  msgid "Search Field Groups"
60
  msgstr ""
61
 
62
+ #: acf.php:393
63
  msgid "No Field Groups found"
64
  msgstr ""
65
 
66
+ #: acf.php:394
67
  msgid "No Field Groups found in Trash"
68
  msgstr ""
69
 
70
+ #: acf.php:417 includes/admin/admin-field-group.php:202
71
  #: includes/admin/admin-field-groups.php:510
72
  #: pro/fields/class-acf-field-clone.php:811
73
  msgid "Fields"
74
  msgstr ""
75
 
76
+ #: acf.php:418
77
  msgid "Field"
78
  msgstr ""
79
 
80
+ #: acf.php:420
81
  msgid "Add New Field"
82
  msgstr ""
83
 
84
+ #: acf.php:421
85
  msgid "Edit Field"
86
  msgstr ""
87
 
88
+ #: acf.php:422 includes/admin/views/field-group-fields.php:41
 
89
  msgid "New Field"
90
  msgstr ""
91
 
92
+ #: acf.php:423
93
  msgid "View Field"
94
  msgstr ""
95
 
96
+ #: acf.php:424
97
  msgid "Search Fields"
98
  msgstr ""
99
 
100
+ #: acf.php:425
101
  msgid "No Fields found"
102
  msgstr ""
103
 
104
+ #: acf.php:426
105
  msgid "No Fields found in Trash"
106
  msgstr ""
107
 
108
+ #: acf.php:465 includes/admin/admin-field-group.php:384
109
  #: includes/admin/admin-field-groups.php:567
110
  msgid "Inactive"
111
  msgstr ""
112
 
113
+ #: acf.php:470
114
  #, php-format
115
  msgid "Inactive <span class=\"count\">(%s)</span>"
116
  msgid_plural "Inactive <span class=\"count\">(%s)</span>"
193
  #: includes/admin/views/field-group-field-conditional-logic.php:151
194
  #: includes/admin/views/field-group-locations.php:29
195
  #: includes/admin/views/html-location-group.php:3
196
+ #: includes/api/api-helpers.php:4073
197
  msgid "or"
198
  msgstr ""
199
 
219
  msgid "Active"
220
  msgstr ""
221
 
222
+ #: includes/admin/admin-field-group.php:746
223
  msgid "Move Complete."
224
  msgstr ""
225
 
226
+ #: includes/admin/admin-field-group.php:747
227
  #, php-format
228
  msgid "The %s field can now be found in the %s field group"
229
  msgstr ""
230
 
231
+ #: includes/admin/admin-field-group.php:748
232
  msgid "Close Window"
233
  msgstr ""
234
 
235
+ #: includes/admin/admin-field-group.php:789
236
  msgid "Please select the destination for this field"
237
  msgstr ""
238
 
239
+ #: includes/admin/admin-field-group.php:796
240
  msgid "Move Field"
241
  msgstr ""
242
 
283
 
284
  #: includes/admin/admin-field-groups.php:508
285
  #: includes/admin/views/field-group-options.php:96
286
+ #: includes/admin/views/html-admin-page-upgrade-network.php:38
287
+ #: includes/admin/views/html-admin-page-upgrade-network.php:49
288
  #: pro/fields/class-acf-field-gallery.php:397
289
  msgid "Description"
290
  msgstr ""
326
  msgstr ""
327
 
328
  #: includes/admin/admin-field-groups.php:623
329
+ #: includes/admin/views/settings-info.php:84
330
  msgid "Pro"
331
  msgstr ""
332
 
379
  msgid "Tools"
380
  msgstr ""
381
 
382
+ #: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:92
383
+ #: includes/admin/admin-upgrade.php:154
384
+ #: includes/admin/views/html-admin-page-upgrade-network.php:24
385
+ #: includes/admin/views/html-admin-page-upgrade.php:26
 
 
 
386
  msgid "Upgrade Database"
387
  msgstr ""
388
 
389
+ #: includes/admin/admin-upgrade.php:178
390
  msgid "Review sites & upgrade"
391
  msgstr ""
392
 
393
+ #: includes/admin/admin.php:113
394
+ #: includes/admin/views/field-group-options.php:110
395
+ msgid "Custom Fields"
 
 
 
396
  msgstr ""
397
 
398
  #: includes/admin/settings-addons.php:51
520
  msgstr ""
521
 
522
  #: includes/admin/views/field-group-field-conditional-logic.php:138
523
+ #: includes/admin/views/html-location-rule.php:86
524
  msgid "and"
525
  msgstr ""
526
 
629
  #: includes/fields/class-acf-field-button-group.php:198
630
  #: includes/fields/class-acf-field-checkbox.php:420
631
  #: includes/fields/class-acf-field-radio.php:311
632
+ #: includes/fields/class-acf-field-select.php:428
633
  #: pro/fields/class-acf-field-flexible-content.php:596
634
  msgid "Label"
635
  msgstr ""
636
 
637
  #: includes/admin/views/field-group-fields.php:6
638
+ #: includes/fields/class-acf-field-taxonomy.php:939
639
  #: pro/fields/class-acf-field-flexible-content.php:610
640
  msgid "Name"
641
  msgstr ""
805
  "options will be used (the one with the lowest order number)"
806
  msgstr ""
807
 
808
+ #: includes/admin/views/html-admin-page-upgrade-network.php:26
 
 
 
 
 
 
 
 
 
 
 
 
 
809
  #, php-format
810
  msgid ""
811
  "The following sites require a DB upgrade. Check the ones you want to update "
812
  "and then click %s."
813
  msgstr ""
814
 
815
+ #: includes/admin/views/html-admin-page-upgrade-network.php:26
816
+ #: includes/admin/views/html-admin-page-upgrade-network.php:27
817
+ #: includes/admin/views/html-admin-page-upgrade-network.php:92
818
+ msgid "Upgrade Sites"
819
+ msgstr ""
820
+
821
+ #: includes/admin/views/html-admin-page-upgrade-network.php:36
822
+ #: includes/admin/views/html-admin-page-upgrade-network.php:47
823
  msgid "Site"
824
  msgstr ""
825
 
826
+ #: includes/admin/views/html-admin-page-upgrade-network.php:74
827
  #, php-format
828
  msgid "Site requires database upgrade from %s to %s"
829
  msgstr ""
830
 
831
+ #: includes/admin/views/html-admin-page-upgrade-network.php:76
832
  msgid "Site is up to date"
833
  msgstr ""
834
 
835
+ #: includes/admin/views/html-admin-page-upgrade-network.php:93
836
  #, php-format
837
  msgid ""
838
  "Database Upgrade complete. <a href=\"%s\">Return to network dashboard</a>"
839
  msgstr ""
840
 
841
+ #: includes/admin/views/html-admin-page-upgrade-network.php:112
842
+ #: includes/admin/views/html-notice-upgrade.php:38
843
  msgid ""
844
  "It is strongly recommended that you backup your database before proceeding. "
845
  "Are you sure you wish to run the updater now?"
846
  msgstr ""
847
 
848
+ #: includes/admin/views/html-admin-page-upgrade-network.php:139
849
+ #: includes/admin/views/html-admin-page-upgrade.php:31
850
+ #, php-format
851
+ msgid "Upgrading data to version %s"
852
+ msgstr ""
853
+
854
+ #: includes/admin/views/html-admin-page-upgrade-network.php:162
855
+ msgid "Upgrade complete."
856
+ msgstr ""
857
+
858
+ #: includes/admin/views/html-admin-page-upgrade-network.php:171
859
+ #: includes/admin/views/html-admin-page-upgrade-network.php:180
860
+ #: includes/admin/views/html-admin-page-upgrade.php:78
861
+ #: includes/admin/views/html-admin-page-upgrade.php:87
862
+ msgid "Upgrade failed."
863
+ msgstr ""
864
+
865
+ #: includes/admin/views/html-admin-page-upgrade.php:30
866
+ msgid "Reading upgrade tasks..."
867
  msgstr ""
868
 
869
+ #: includes/admin/views/html-admin-page-upgrade.php:33
 
870
  #, php-format
871
+ msgid "Database upgrade complete. <a href=\"%s\">See what's new</a>"
872
  msgstr ""
873
 
874
+ #: includes/admin/views/html-admin-page-upgrade.php:116
875
+ #: includes/ajax/class-acf-ajax-upgrade.php:33
876
+ msgid "No updates available."
877
+ msgstr ""
878
+
879
+ #: includes/admin/views/html-location-group.php:3
880
+ msgid "Show this field group if"
881
+ msgstr ""
882
+
883
+ #: includes/admin/views/html-notice-upgrade.php:8
884
  #: pro/fields/class-acf-field-repeater.php:25
885
  msgid "Repeater"
886
  msgstr ""
887
 
888
+ #: includes/admin/views/html-notice-upgrade.php:9
889
  #: pro/fields/class-acf-field-flexible-content.php:25
890
  msgid "Flexible Content"
891
  msgstr ""
892
 
893
+ #: includes/admin/views/html-notice-upgrade.php:10
894
  #: pro/fields/class-acf-field-gallery.php:25
895
  msgid "Gallery"
896
  msgstr ""
897
 
898
+ #: includes/admin/views/html-notice-upgrade.php:11
899
  #: pro/locations/class-acf-location-options-page.php:26
900
  msgid "Options Page"
901
  msgstr ""
902
 
903
+ #: includes/admin/views/html-notice-upgrade.php:21
904
  msgid "Database Upgrade Required"
905
  msgstr ""
906
 
907
+ #: includes/admin/views/html-notice-upgrade.php:22
908
  #, php-format
909
  msgid "Thank you for updating to %s v%s!"
910
  msgstr ""
911
 
912
+ #: includes/admin/views/html-notice-upgrade.php:22
913
  msgid ""
914
+ "This version contains improvements to your database and requires an upgrade."
 
915
  msgstr ""
916
 
917
+ #: includes/admin/views/html-notice-upgrade.php:24
918
  #, php-format
919
  msgid ""
920
  "Please also ensure any premium add-ons (%s) have first been updated to the "
921
  "latest version."
922
  msgstr ""
923
 
 
 
 
 
 
 
 
 
 
924
  #: includes/admin/views/settings-addons.php:17
925
  msgid "Download & Install"
926
  msgstr ""
940
  "hope you like it."
941
  msgstr ""
942
 
943
+ #: includes/admin/views/settings-info.php:15
944
+ msgid "A Smoother Experience"
945
  msgstr ""
946
 
947
+ #: includes/admin/views/settings-info.php:19
948
  msgid "Improved Usability"
949
  msgstr ""
950
 
951
+ #: includes/admin/views/settings-info.php:20
952
  msgid ""
953
  "Including the popular Select2 library has improved both usability and speed "
954
  "across a number of field types including post object, page link, taxonomy "
955
  "and select."
956
  msgstr ""
957
 
958
+ #: includes/admin/views/settings-info.php:24
959
  msgid "Improved Design"
960
  msgstr ""
961
 
962
+ #: includes/admin/views/settings-info.php:25
963
  msgid ""
964
  "Many fields have undergone a visual refresh to make ACF look better than "
965
  "ever! Noticeable changes are seen on the gallery, relationship and oEmbed "
966
  "(new) fields!"
967
  msgstr ""
968
 
969
+ #: includes/admin/views/settings-info.php:29
970
  msgid "Improved Data"
971
  msgstr ""
972
 
973
+ #: includes/admin/views/settings-info.php:30
974
  msgid ""
975
  "Redesigning the data architecture has allowed sub fields to live "
976
  "independently from their parents. This allows you to drag and drop fields in "
977
  "and out of parent fields!"
978
  msgstr ""
979
 
980
+ #: includes/admin/views/settings-info.php:38
981
  msgid "Goodbye Add-ons. Hello PRO"
982
  msgstr ""
983
 
984
+ #: includes/admin/views/settings-info.php:41
985
  msgid "Introducing ACF PRO"
986
  msgstr ""
987
 
988
+ #: includes/admin/views/settings-info.php:42
989
  msgid ""
990
  "We're changing the way premium functionality is delivered in an exciting way!"
991
  msgstr ""
992
 
993
+ #: includes/admin/views/settings-info.php:43
994
  #, php-format
995
  msgid ""
996
  "All 4 premium add-ons have been combined into a new <a href=\"%s\">Pro "
998
  "premium functionality is more affordable and accessible than ever before!"
999
  msgstr ""
1000
 
1001
+ #: includes/admin/views/settings-info.php:47
1002
  msgid "Powerful Features"
1003
  msgstr ""
1004
 
1005
+ #: includes/admin/views/settings-info.php:48
1006
  msgid ""
1007
  "ACF PRO contains powerful features such as repeatable data, flexible content "
1008
  "layouts, a beautiful gallery field and the ability to create extra admin "
1009
  "options pages!"
1010
  msgstr ""
1011
 
1012
+ #: includes/admin/views/settings-info.php:49
1013
  #, php-format
1014
  msgid "Read more about <a href=\"%s\">ACF PRO features</a>."
1015
  msgstr ""
1016
 
1017
+ #: includes/admin/views/settings-info.php:53
1018
  msgid "Easy Upgrading"
1019
  msgstr ""
1020
 
1021
+ #: includes/admin/views/settings-info.php:54
 
1022
  msgid ""
1023
+ "Upgrading to ACF PRO is easy. Simply purchase a license online and download "
1024
+ "the plugin!"
1025
  msgstr ""
1026
 
1027
+ #: includes/admin/views/settings-info.php:55
1028
  #, php-format
1029
  msgid ""
1030
  "We also wrote an <a href=\"%s\">upgrade guide</a> to answer any questions, "
1031
  "but if you do have one, please contact our support team via the <a href=\"%s"
1032
+ "\">help desk</a>."
1033
  msgstr ""
1034
 
1035
+ #: includes/admin/views/settings-info.php:64
1036
+ msgid "New Features"
1037
  msgstr ""
1038
 
1039
+ #: includes/admin/views/settings-info.php:69
1040
+ msgid "Link Field"
1041
  msgstr ""
1042
 
1043
+ #: includes/admin/views/settings-info.php:70
1044
+ msgid ""
1045
+ "The Link field provides a simple way to select or define a link (url, title, "
1046
+ "target)."
1047
  msgstr ""
1048
 
1049
+ #: includes/admin/views/settings-info.php:74
1050
+ msgid "Group Field"
1051
  msgstr ""
1052
 
1053
+ #: includes/admin/views/settings-info.php:75
1054
+ msgid "The Group field provides a simple way to create a group of fields."
1055
  msgstr ""
1056
 
1057
+ #: includes/admin/views/settings-info.php:79
1058
+ msgid "oEmbed Field"
1059
+ msgstr ""
1060
+
1061
+ #: includes/admin/views/settings-info.php:80
1062
+ msgid ""
1063
+ "The oEmbed field allows an easy way to embed videos, images, tweets, audio, "
1064
+ "and other content."
1065
  msgstr ""
1066
 
1067
+ #: includes/admin/views/settings-info.php:84
1068
+ msgid "Clone Field"
1069
  msgstr ""
1070
 
1071
+ #: includes/admin/views/settings-info.php:85
1072
+ msgid "The clone field allows