diff --git a/acf.php b/acf.php index 990d0d4..c03d557 100644 --- a/acf.php +++ b/acf.php @@ -3,7 +3,7 @@ Plugin Name: Advanced Custom Fields Pro Plugin URI: http://www.advancedcustomfields.com/ Description: Customise WordPress with powerful, professional and intuitive fields -Version: 5.3.5 +Version: 5.3.6.1 Author: elliot condon Author URI: http://www.elliotcondon.com/ Copyright: Elliot Condon @@ -17,9 +17,6 @@ if( ! class_exists('acf') ) : class acf { - // vars - var $settings; - /* * __construct @@ -61,7 +58,7 @@ class acf { // basic 'name' => __('Advanced Custom Fields', 'acf'), - 'version' => '5.3.5', + 'version' => '5.3.6.1', // urls 'basename' => plugin_basename( __FILE__ ), @@ -82,9 +79,7 @@ class acf { 'uploader' => 'wp', 'autoload' => false, 'l10n' => true, - 'l10n_textdomain' => '', - 'l10n_field' => array('label', 'instructions'), - 'l10n_field_group' => array('title'), + 'l10n_textdomain' => '' ); @@ -103,9 +98,11 @@ class acf { acf_include('core/ajax.php'); acf_include('core/field.php'); acf_include('core/input.php'); + acf_include('core/validation.php'); acf_include('core/json.php'); acf_include('core/local.php'); acf_include('core/location.php'); + acf_include('core/loop.php'); acf_include('core/media.php'); acf_include('core/revisions.php'); acf_include('core/compatibility.php'); diff --git a/admin/field-group.php b/admin/field-group.php index e2d04ca..1b3ef7a 100644 --- a/admin/field-group.php +++ b/admin/field-group.php @@ -638,14 +638,18 @@ if( typeof acf !== 'undefined' ) { */ case "post_type" : + + // get post types + $choices = acf_get_pretty_post_types(); - // all post types except attachment - $exclude = array('attachment'); - $choices = acf_get_post_types( $exclude ); - $choices = acf_get_pretty_post_types( $choices ); - + + // remove attachments + unset( $choices['attachment'] ); + + + // end break; - + case "post" : @@ -802,9 +806,10 @@ if( typeof acf !== 'undefined' ) { case "page_template" : $choices = array( - 'default' => __("Default Template",'acf'), + 'default' => apply_filters( 'default_page_template_title', __('Default Template', 'acf') ), ); + $templates = get_page_templates(); foreach( $templates as $k => $v ) { @@ -900,8 +905,17 @@ if( typeof acf !== 'undefined' ) { case "comment" : - $choices = array('all' => __('All', 'acf')); - + // vars + $choices = array( + 'all' => __('All', 'acf') + ); + + + // append post types + $choices = array_merge( $choices, acf_get_pretty_post_types() ); + + + // end break; diff --git a/admin/field-groups.php b/admin/field-groups.php index 82ffc08..fbc52db 100644 --- a/admin/field-groups.php +++ b/admin/field-groups.php @@ -619,7 +619,7 @@ class acf_admin_field_groups {
-

+

diff --git a/api/api-field-group.php b/api/api-field-group.php index 240e474..d531dcf 100644 --- a/api/api-field-group.php +++ b/api/api-field-group.php @@ -70,14 +70,53 @@ function acf_get_valid_field_group( $field_group = false ) { )); - // translate - $field_group = acf_translate_keys( $field_group, acf_get_setting('l10n_field_group') ); - - // filter $field_group = apply_filters('acf/get_valid_field_group', $field_group); + // translate + $field_group = acf_translate_field_group( $field_group ); + + + // return + return $field_group; + +} + + +/* +* acf_translate_field_group +* +* This function will translate field group's settings +* +* @type function +* @date 8/03/2016 +* @since 5.3.2 +* +* @param $field_group (array) +* @return $field_group +*/ + +function acf_translate_field_group( $field_group ) { + + // vars + $l10n = acf_get_setting('l10n'); + $l10n_textdomain = acf_get_setting('l10n_textdomain'); + + + // if + if( $l10n && $l10n_textdomain ) { + + // translate + $field_group['title'] = acf_translate( $field_group['title'] ); + + + // filters + $field_group = apply_filters( "acf/translate_field_group", $field_group ); + + } + + // return return $field_group; diff --git a/api/api-field.php b/api/api-field.php index 0795860..060ace1 100644 --- a/api/api-field.php +++ b/api/api-field.php @@ -177,10 +177,6 @@ function acf_get_valid_field( $field = false ) { $field['_name'] = $field['name']; - // translate - $field = acf_translate_keys( $field, acf_get_setting('l10n_field') ); - - // field specific defaults $field = apply_filters( "acf/get_valid_field", $field ); $field = apply_filters( "acf/get_valid_field/type={$field['type']}", $field ); @@ -190,11 +186,58 @@ function acf_get_valid_field( $field = false ) { $field['_valid'] = 1; + // translate + $field = acf_translate_field( $field ); + + // return return $field; } + + +/* +* acf_translate_field +* +* This function will translate field's settings +* +* @type function +* @date 8/03/2016 +* @since 5.3.2 +* +* @param $field (array) +* @return $field +*/ + +function acf_translate_field( $field ) { + + // vars + $l10n = acf_get_setting('l10n'); + $l10n_textdomain = acf_get_setting('l10n_textdomain'); + + + // if + if( $l10n && $l10n_textdomain ) { + + // translate + $field['label'] = acf_translate( $field['label'] ); + $field['instructions'] = acf_translate( $field['instructions'] ); + + + // filters + $field = apply_filters( "acf/translate_field", $field ); + $field = apply_filters( "acf/translate_field/type={$field['type']}", $field ); + + } + + + // return + return $field; + +} + + /* * acf_prepare_field * @@ -1855,4 +1898,5 @@ function acf_get_sub_field( $selector, $field ) { } + ?> diff --git a/api/api-helpers.php b/api/api-helpers.php index 59e2d02..9a64a2e 100644 --- a/api/api-helpers.php +++ b/api/api-helpers.php @@ -574,6 +574,34 @@ function acf_extract_vars( &$array, $keys ) { } +/* +* acf_get_sub_array +* +* This function will return a sub array of data +* +* @type function +* @date 15/03/2016 +* @since 5.3.2 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_get_sub_array( $array, $keys ) { + + $r = array(); + + foreach( $keys as $key ) { + + $r[ $key ] = $array[ $key ]; + + } + + return $r; + +} + + /* * acf_get_post_types * @@ -2325,7 +2353,7 @@ function acf_encode_choices( $array = array(), $show_keys = true ) { } -function acf_decode_choices( $string = '' ) { +function acf_decode_choices( $string = '', $array_keys = false ) { // bail early if already array if( is_array($string) ) { @@ -2383,6 +2411,14 @@ function acf_decode_choices( $string = '' ) { } + // return only array keys? (good for checkbox default_value) + if( $array_keys ) { + + return array_keys($array); + + } + + // return return $array; @@ -2649,18 +2685,19 @@ function acf_in_array( $value, $array ) { function acf_get_valid_post_id( $post_id = 0 ) { - // set post_id to global + // if not $post_id, load queried object if( !$post_id ) { - + + // try for global post (needed for setup_postdata) $post_id = (int) get_the_ID(); - } - - - // allow for option == options - if( $post_id == 'option' ) { - - $post_id = 'options'; + + // try for current screen + if( !$post_id ) { + + $post_id = get_queried_object(); + + } } @@ -2668,27 +2705,44 @@ function acf_get_valid_post_id( $post_id = 0 ) { // $post_id may be an object if( is_object($post_id) ) { + // user if( isset($post_id->roles, $post_id->ID) ) { $post_id = 'user_' . $post_id->ID; - + + // term } elseif( isset($post_id->taxonomy, $post_id->term_id) ) { $post_id = $post_id->taxonomy . '_' . $post_id->term_id; - + + // comment } elseif( isset($post_id->comment_ID) ) { $post_id = 'comment_' . $post_id->comment_ID; - + + // post } elseif( isset($post_id->ID) ) { $post_id = $post_id->ID; + + // default + } else { + + $post_id = 0; } } + // allow for option == options + if( $post_id === 'option' ) { + + $post_id = 'options'; + + } + + // append language code if( $post_id == 'options' ) { @@ -3658,6 +3712,7 @@ function _acf_settings_uploader( $uploader ) { * @return $post_id (int) */ +/* function acf_translate_keys( $array, $keys ) { // bail early if no keys @@ -3681,6 +3736,7 @@ function acf_translate_keys( $array, $keys ) { return $array; } +*/ /* @@ -3767,6 +3823,49 @@ function acf_maybe_add_action( $tag, $function_to_add, $priority = 10, $accepted } +/* +* acf_is_row_collapsed +* +* This function will return true if the field's row is collapsed +* +* @type function +* @date 2/03/2016 +* @since 5.3.2 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_is_row_collapsed( $field_key = '', $row_index = 0 ) { + + // collapsed + $collapsed = acf_get_user_setting('collapsed_' . $field_key, ''); + + + // cookie fallback ( version < 5.3.2 ) + if( $collapsed === '' ) { + + $collapsed = acf_extract_var($_COOKIE, "acf_collapsed_{$field_key}", ''); + $collapsed = str_replace('|', ',', $collapsed); + + + // update + acf_update_user_setting( 'collapsed_' . $field_key, $collapsed ); + + } + + + // explode + $collapsed = explode(',', $collapsed); + $collapsed = array_filter($collapsed, 'is_numeric'); + + + // collapsed class + return in_array($row_index, $collapsed); + +} + + /* * Hacks * diff --git a/api/api-template.php b/api/api-template.php index b1c5e9b..613b567 100644 --- a/api/api-template.php +++ b/api/api-template.php @@ -22,35 +22,6 @@ function acf_get_field_reference( $field_name, $post_id ) { } -/* -* the_field() -* -* This function is the same as echo get_field(). -* -* @type function -* @since 1.0.3 -* @date 29/01/13 -* -* @param $selector (string) the field name or key -* @param $post_id (mixed) the post_id of which the value is saved against -* @return n/a -*/ - -function the_field( $selector, $post_id = false, $format_value = true ) { - - $value = get_field($selector, $post_id, $format_value); - - if( is_array($value) ) { - - $value = @implode( ', ', $value ); - - } - - echo $value; - -} - - /* * get_field() * @@ -113,6 +84,35 @@ function get_field( $selector, $post_id = false, $format_value = true ) { } +/* +* the_field() +* +* This function is the same as echo get_field(). +* +* @type function +* @since 1.0.3 +* @date 29/01/13 +* +* @param $selector (string) the field name or key +* @param $post_id (mixed) the post_id of which the value is saved against +* @return n/a +*/ + +function the_field( $selector, $post_id = false, $format_value = true ) { + + $value = get_field($selector, $post_id, $format_value); + + if( is_array($value) ) { + + $value = @implode( ', ', $value ); + + } + + echo $value; + +} + + /* * get_field_object() * @@ -132,11 +132,7 @@ function get_field( $selector, $post_id = false, $format_value = true ) { function get_field_object( $selector, $post_id = false, $format_value = true, $load_value = true ) { // compatibilty - if( is_array($format_value) ) { - - extract( $format_value ); - - } + if( is_array($format_value) ) extract( $format_value ); // get valid post_id @@ -148,11 +144,7 @@ function get_field_object( $selector, $post_id = false, $format_value = true, $l // bail early if no field found - if( !$field ) { - - return false; - - } + if( !$field ) return false; // load value @@ -197,23 +189,24 @@ function get_fields( $post_id = false, $format_value = true ) { // vars $fields = get_field_objects( $post_id, $format_value ); - $return = array(); + $meta = array(); + + + // bail early + if( !$fields ) return false; // populate - if( is_array($fields) ) { + foreach( $fields as $k => $field ) { - foreach( $fields as $k => $field ) { - - $return[ $k ] = $field['value']; - - } + $meta[ $k ] = $field['value']; } // return - return $return; + return $meta; + } @@ -287,30 +280,18 @@ function get_field_objects( $post_id = false, $format_value = true, $load_value // bail early if no meta - if( empty($meta) ) { - - return false; - - } + if( empty($meta) ) return false; // populate vars foreach( $meta as $k => $v ) { // Hopefuly improve efficiency: bail early if $k does start with an '_' - if( $k[0] === '_' ) { - - continue; - - } + if( $k[0] === '_' ) continue; // does a field key exist for this value? - if( !array_key_exists("_{$k}", $meta) ) { - - continue; - - } + if( !array_key_exists("_{$k}", $meta) ) continue; // get field @@ -319,11 +300,7 @@ function get_field_objects( $post_id = false, $format_value = true, $load_value // bail early if not a parent field - if( !$field || acf_is_sub_field($field) ) { - - continue; - - } + if( !$field || acf_is_sub_field($field) ) continue; // load value @@ -350,11 +327,7 @@ function get_field_objects( $post_id = false, $format_value = true, $load_value // no value - if( empty($fields) ) { - - return false; - - } + if( empty($fields) ) return false; // return @@ -380,11 +353,13 @@ function get_field_objects( $post_id = false, $format_value = true, $load_value function have_rows( $selector, $post_id = false ) { // vars - $row = array(); + $active_loop = acf_get_loop('active'); + $previous_loop = acf_get_loop('previous'); $new_parent_loop = false; $new_child_loop = false; $sub_field = false; $sub_exists = false; + $change = false; // reference @@ -396,29 +371,19 @@ function have_rows( $selector, $post_id = false ) { // empty? - if( empty($GLOBALS['acf_field']) ) { - - // reset - reset_rows( true ); - + if( !$active_loop ) { // create a new loop $new_parent_loop = true; } else { - // vars - $row = end( $GLOBALS['acf_field'] ); - $prev = prev( $GLOBALS['acf_field'] ); - $change = false; - - // detect change - if( $post_id != $row['post_id'] ) { + if( $post_id != $active_loop['post_id'] ) { $change = 'post_id'; - } elseif( $selector != $row['selector'] ) { + } elseif( $selector != $active_loop['selector'] ) { $change = 'selector'; @@ -428,11 +393,11 @@ function have_rows( $selector, $post_id = false ) { // attempt to find sub field if( $change ) { - $sub_field = acf_get_sub_field($selector, $row['field']); + $sub_field = acf_get_sub_field($selector, $active_loop['field']); if( $sub_field ) { - $sub_exists = isset($row['value'][ $row['i'] ][ $sub_field['key'] ]); + $sub_exists = isset( $active_loop['value'][ $active_loop['i'] ][ $sub_field['key'] ] ); } @@ -448,11 +413,11 @@ function have_rows( $selector, $post_id = false ) { // action: move down one level into a new loop $new_child_loop = true; - } elseif( $prev && $prev['post_id'] == $post_id ) { + } elseif( $previous_loop && $previous_loop['post_id'] == $post_id ) { // case: Change in $post_id was due to a nested loop ending // action: move up one level through the loops - reset_rows(); + acf_remove_loop('active'); } else { @@ -464,11 +429,11 @@ function have_rows( $selector, $post_id = false ) { } elseif( $change == 'selector' ) { - if( $prev && $prev['selector'] == $selector && $prev['post_id'] == $post_id ) { + if( $previous_loop && $previous_loop['selector'] == $selector && $previous_loop['post_id'] == $post_id ) { // case: Change in $field_name was due to a nested loop ending // action: move up one level through the loops - reset_rows(); + acf_remove_loop('active'); } elseif( $sub_exists ) { @@ -489,6 +454,7 @@ function have_rows( $selector, $post_id = false ) { } + // add parent loop if( $new_parent_loop ) { // vars @@ -496,40 +462,42 @@ function have_rows( $selector, $post_id = false ) { $value = acf_extract_var( $field, 'value' ); - // add row - $GLOBALS['acf_field'][] = array( + // add loop + acf_add_loop(array( 'selector' => $selector, 'name' => $field['name'], // used by update_sub_field 'value' => $value, 'field' => $field, 'i' => -1, 'post_id' => $post_id, - ); - + )); + + // add child loop } elseif( $new_child_loop ) { // vars - $value = $row['value'][ $row['i'] ][ $sub_field['key'] ]; + $value = $active_loop['value'][ $active_loop['i'] ][ $sub_field['key'] ]; - $GLOBALS['acf_field'][] = array( + + // add loop + acf_add_loop(array( 'selector' => $selector, - 'name' => $row['name'] . '_' . $row['i'], // used by update_sub_field + 'name' => $active_loop['name'] . '_' . $active_loop['i'], // used by update_sub_field 'value' => $value, 'field' => $sub_field, 'i' => -1, 'post_id' => $post_id, - ); + )); } // update vars - $row = end( $GLOBALS['acf_field'] ); - + $active_loop = acf_get_loop('active'); // return true if next row exists - if( is_array($row['value']) && array_key_exists($row['i']+1, $row['value']) ) { + if( $active_loop && is_array($active_loop['value']) && isset($active_loop['value'][ $active_loop['i']+1 ]) ) { return true; @@ -537,7 +505,7 @@ function have_rows( $selector, $post_id = false ) { // no next row! - reset_rows(); + acf_remove_loop('active'); // return @@ -562,11 +530,15 @@ function have_rows( $selector, $post_id = false ) { function the_row( $format = false ) { // vars - $depth = count($GLOBALS['acf_field']) - 1; - + $i = acf_get_loop('active', 'i'); - // increase i of current row - $GLOBALS['acf_field'][ $depth ]['i']++; + + // increase + $i++; + + + // update + acf_update_loop('active', 'i', $i); // return @@ -577,19 +549,15 @@ function the_row( $format = false ) { function get_row( $format = false ) { // vars - $row = acf_get_row(); + $loop = acf_get_loop('active'); - // bail early if no row - if( !$row ) { - - return false; - - } + // bail early if no loop + if( !$loop ) return false; // get value - $value = $row['value'][ $row['i'] ]; + $value = $loop['value'][ $loop['i'] ]; // format @@ -598,8 +566,10 @@ function get_row( $format = false ) { // temp wrap value in array $value = array( $value ); + // format the value (1 row of data) - $value = acf_format_value( $value, $row['post_id'], $row['field'] ); + $value = acf_format_value( $value, $loop['post_id'], $loop['field'] ); + // extract value from array $value = $value[0]; @@ -612,33 +582,14 @@ function get_row( $format = false ) { } -function acf_get_row() { - - // check and return row - if( !empty($GLOBALS['acf_field']) ) { - - return end( $GLOBALS['acf_field'] ); - - } - - - // return - return false; - -} - function get_row_index() { // vars - $row = acf_get_row(); - - - // bail early if no row - if( !$row ) return 0; + $i = acf_get_loop('active', 'i'); // return - return $row['i'] + 1; + return $i + 1; } @@ -657,34 +608,15 @@ function get_row_index() { * @return (boolean) */ -function reset_rows( $hard_reset = false ) { +function reset_rows() { - // completely destroy? - if( $hard_reset ) { - - $GLOBALS['acf_field'] = array(); - - - // reset current row - } else { - - // vars - $depth = count( $GLOBALS['acf_field'] ) - 1; - - - // remove - unset( $GLOBALS['acf_field'][$depth] ); - - - // refresh index - $GLOBALS['acf_field'] = array_values($GLOBALS['acf_field']); - } + // remove last loop + acf_remove_loop('active'); // return return true; - } @@ -746,7 +678,7 @@ function has_sub_fields( $field_name, $post_id = false ) { function get_sub_field( $selector, $format_value = true ) { // vars - $row = acf_get_row(); + $row = acf_get_loop('active'); // bail early if no row @@ -842,7 +774,7 @@ function the_sub_field( $field_name, $format_value = true ) { function get_sub_field_object( $selector, $format_value = true, $load_value = true ) { // vars - $row = acf_get_row(); + $row = acf_get_loop('active'); // bail early if no row @@ -975,6 +907,11 @@ function acf_form_head() { // verify nonce if( acf_verify_nonce('acf_form') ) { + // add actions + add_action('acf/validate_save_post', '_validate_save_post'); + add_filter('acf/pre_save_post', '_acf_pre_save_post', 5, 2); + + // validate data if( acf_validate_save_post(true) ) { @@ -1041,8 +978,6 @@ function acf_form_head() { * @return $post_id (int) */ -add_action('acf/validate_save_post', '_validate_save_post'); - function _validate_save_post() { // save post_title @@ -1086,8 +1021,6 @@ function _validate_save_post() { * @return $post_id (int) */ -add_filter('acf/pre_save_post', '_acf_pre_save_post', 5, 2); - function _acf_pre_save_post( $post_id, $form ) { // vars @@ -1491,7 +1424,7 @@ function update_sub_field( $selector, $value, $post_id = false ) { if( is_string($selector) ) { // get current row - $row = acf_get_row(); + $row = acf_get_loop('active'); // override $post_id @@ -1828,139 +1761,6 @@ function delete_row( $selector, $row = 1, $post_id = false ) { } -/* -* create_field() -* -* This function will creat the HTML for a field -* -* @type function -* @since 4.0.0 -* @date 17/03/13 -* -* @param array $field - an array containing all the field attributes -* -* @return N/A -*/ - -function create_field( $field ) { - - acf_render_field( $field ); -} - -function render_field( $field ) { - - acf_render_field( $field ); -} - - -/* -* acf_convert_field_names_to_keys() -* -* Helper for the update_field function -* -* @type function -* @since 4.0.0 -* @date 17/03/13 -* -* @param array $value: the value returned via get_field -* @param array $field: the field or layout to find sub fields from -* -* @return N/A -*/ - -function acf_convert_field_names_to_keys( $value, $field ) { - - // only if $field has sub fields - if( !isset($field['sub_fields']) ) { - - return $value; - - } - - - // define sub field keys - $sub_fields = array(); - if( $field['sub_fields'] ) { - - foreach( $field['sub_fields'] as $sub_field ) { - - $sub_fields[ $sub_field['name'] ] = $sub_field; - - } - - } - - - // loop through the values and format the array to use sub field keys - if( is_array($value) ) { - - foreach( $value as $row_i => $row) { - - if( $row ) { - - foreach( $row as $sub_field_name => $sub_field_value ) { - - // sub field must exist! - if( !isset($sub_fields[ $sub_field_name ]) ) { - - continue; - - } - - - // vars - $sub_field = $sub_fields[ $sub_field_name ]; - $sub_field_value = acf_convert_field_names_to_keys( $sub_field_value, $sub_field ); - - - // set new value - $value[$row_i][ $sub_field['key'] ] = $sub_field_value; - - - // unset old value - unset( $value[$row_i][$sub_field_name] ); - - - } - // foreach( $row as $sub_field_name => $sub_field_value ) - - } - // if( $row ) - - } - // foreach( $value as $row_i => $row) - - } - // if( $value ) - - - // return - return $value; - -} - - -/* -* register_field_group -* -* description -* -* @type function -* @date 11/03/2014 -* @since 5.0.0 -* -* @param $post_id (int) -* @return $post_id (int) -*/ - -function register_field_group( $field_group ) { - - // add local - acf_add_local_field_group( $field_group ); - -} - - /* * Depreceated Functions * @@ -1974,6 +1774,24 @@ function register_field_group( $field_group ) { * @return n/a */ +function register_field_group( $field_group ) { + + acf_add_local_field_group( $field_group ); + +} + +function create_field( $field ) { + + acf_render_field( $field ); + +} + +function render_field( $field ) { + + acf_render_field( $field ); + +} + function reset_the_repeater_field() { return reset_rows(); diff --git a/assets/css/acf-global.css b/assets/css/acf-global.css index 33981ef..f7fd849 100644 --- a/assets/css/acf-global.css +++ b/assets/css/acf-global.css @@ -575,32 +575,44 @@ a.acf-icon.-cancel.grey:hover { position: relative; display: block; background: #F55E4F; - border-radius: 3px; margin: 5px 0 15px; - padding: 1px 10px; + padding: 1px 12px; min-height: 0px; + border-left: #dd4232 solid 4px; } .acf-error-message p { font-size: 13px !important; - line-height: 1.4; - margin: 8px 0; - padding: 0; + line-height: 1.5; + margin: 0.5em 0; + padding: 2px; text-shadow: none; color: #fff; - text-shadow: 0 1px 0 #DD4232; } .acf-error-message .acf-icon { position: absolute; - top: 8px; - right: 10px; + top: 9px; + right: 12px; background-color: #dd4232; border-color: transparent; color: #fff; } -.acf-error-message .acf-icon:hover { - background-color: #F1F1F1; +/* important to include .-cancel to override .acf-icon.-cancel class */ +.acf-error-message .acf-icon.-cancel:hover { + background-color: #191e23; color: #F55E4F; } +/* success */ +.acf-error-message.-success { + background-color: #46b450; + border-color: #32973b; +} +.acf-error-message.-success .acf-icon { + background-color: #32973b; +} +.acf-error-message.-success .acf-icon.-cancel:hover { + background-color: #191e23; + color: #46b450; +} /*-------------------------------------------------------------------------------------------- * * acf-table diff --git a/assets/css/acf-input.css b/assets/css/acf-input.css index cfb37a5..4993915 100644 --- a/assets/css/acf-input.css +++ b/assets/css/acf-input.css @@ -47,6 +47,8 @@ color: #fff; margin: 0 0 10px; display: inline-block; + border-radius: 3px; + border-left: none; } .acf-field .acf-error-message:after { content: ""; @@ -1347,6 +1349,7 @@ html[dir="rtl"] .acf-image-uploader .view { display: block; padding: 0; margin: 0; + max-width: 48px; } .acf-file-uploader .file-info { padding: 10px; @@ -1361,21 +1364,19 @@ html[dir="rtl"] .acf-image-uploader .view { .acf-file-uploader .file-info a { text-decoration: none; } -/* -* Hover -*/ -.acf-file-uploader .acf-soh-target { +.acf-file-uploader .file-info ul { position: absolute; top: 5px; right: 5px; + /* rtl */ } -html[dir="rtl"] .acf-file-uploader .acf-soh-target { +.acf-file-uploader .file-info ul li { + margin: 0 0 0 4px; +} +html[dir="rtl"] .acf-file-uploader .file-info ul { right: auto; left: 5px; } -.acf-file-uploader .acf-soh-target li { - margin: 0 0 0 4px; -} /*--------------------------------------------------------------------------------------------- * * Date Picker diff --git a/assets/js/acf-input.js b/assets/js/acf-input.js index 82bbc95..7b66f3a 100644 --- a/assets/js/acf-input.js +++ b/assets/js/acf-input.js @@ -15,7 +15,8 @@ addFilter : addFilter, removeAction : removeAction, doAction : doAction, - addAction : addAction + addAction : addAction, + storage : getStorage }; /** @@ -26,7 +27,13 @@ actions : {}, filters : {} }; - + + function getStorage() { + + return STORAGE; + + }; + /** * Adds an action to the event manager. * @@ -397,17 +404,38 @@ var acf; add_action: function() { - // allow multiple action parameters such as 'ready append' - var actions = arguments[0].split(' '); + // vars + var a = arguments[0].split(' '), + l = a.length; - for( k in actions ) { - // prefix action - arguments[0] = 'acf.' + actions[ k ]; + // loop + for( var i = 0; i < l; i++) { +/* + // allow for special actions + if( a[i].indexOf('initialize') !== -1 ) { + + a.push( a[i].replace('initialize', 'ready') ); + a.push( a[i].replace('initialize', 'append') ); + l = a.length; + + continue; + } +*/ + + + // prefix action + arguments[0] = 'acf/' + a[i]; + + + // add wp.hooks.addAction.apply(this, arguments); + } + + // return return this; }, @@ -429,7 +457,7 @@ var acf; remove_action: function() { // prefix action - arguments[0] = 'acf.' + arguments[0]; + arguments[0] = 'acf/' + arguments[0]; wp.hooks.removeAction.apply(this, arguments); @@ -451,10 +479,10 @@ var acf; * @return */ - do_action: function() { + do_action: function() { //console.log('acf.do_action(%o)', arguments); // prefix action - arguments[0] = 'acf.' + arguments[0]; + arguments[0] = 'acf/' + arguments[0]; wp.hooks.doAction.apply(this, arguments); @@ -479,7 +507,7 @@ var acf; add_filter: function() { // prefix action - arguments[0] = 'acf.' + arguments[0]; + arguments[0] = 'acf/' + arguments[0]; wp.hooks.addFilter.apply(this, arguments); @@ -504,7 +532,7 @@ var acf; remove_filter: function() { // prefix action - arguments[0] = 'acf.' + arguments[0]; + arguments[0] = 'acf/' + arguments[0]; wp.hooks.removeFilter.apply(this, arguments); @@ -526,10 +554,10 @@ var acf; * @return */ - apply_filters: function() { + apply_filters: function() { //console.log('acf.apply_filters(%o)', arguments); // prefix action - arguments[0] = 'acf.' + arguments[0]; + arguments[0] = 'acf/' + arguments[0]; return wp.hooks.applyFilters.apply(this, arguments); @@ -770,7 +798,7 @@ var acf; get_field_key: function( $field ){ - return this.get_data( $field, 'key' ); + return $field.data('key'); }, @@ -790,7 +818,7 @@ var acf; get_field_type: function( $field ){ - return this.get_data( $field, 'type' ); + return $field.data('type'); }, @@ -902,22 +930,14 @@ var acf; * @since 5.0.0 * * @param $el (jQuery selection) - * @param prefix (string) * @return $post_id (int) */ - serialize_form : function( $el, prefix ){ - - // defaults - prefix = prefix || ''; - + serialize_form : function( $el ){ // vars var data = {}, - names = {}, - prelen = prefix.length, - _prefix = '_' + prefix, - _prelen = _prefix.length; + names = {}; // selector @@ -927,14 +947,6 @@ var acf; // populate data $.each( $selector.serializeArray(), function( i, pair ) { - // bail early if name does not start with acf or _acf - if( prefix && pair.name.substring(0, prelen) != prefix && pair.name.substring(0, _prelen) != _prefix ) { - - return; - - } - - // initiate name if( pair.name.slice(-2) === '[]' ) { @@ -966,6 +978,13 @@ var acf; // return return data; + + }, + + serialize: function( $el ){ + + return this.serialize_form( $el ); + }, @@ -1510,40 +1529,6 @@ var acf; }, - update_cookie : function( name, value, days ) { - - // defaults - days = days || 31; - - if (days) { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - } - else var expires = ""; - document.cookie = name+"="+value+expires+"; path=/"; - - }, - - get_cookie : function( name ) { - - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - for(var i=0;i < ca.length;i++) { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - return null; - - }, - - delete_cookie : function( name ) { - - this.update_cookie(name,"",-1); - - }, - /* * is_in_view @@ -2243,8 +2228,8 @@ var acf; }, _prepare_field: function( $el ){ - - acf.do_action('prepare_field/type=' + acf.get_field_type($el), $el); + + acf.do_action('prepare_field/type=' + $el.data('type'), $el); }, @@ -2260,8 +2245,8 @@ var acf; }, _ready_field: function( $el ){ - - acf.do_action('ready_field/type=' + acf.get_field_type($el), $el); + + acf.do_action('ready_field/type=' + $el.data('type'), $el); }, @@ -2278,7 +2263,7 @@ var acf; _append_field: function( $el ){ - acf.do_action('append_field/type=' + acf.get_field_type($el), $el); + acf.do_action('append_field/type=' + $el.data('type'), $el); }, @@ -2295,7 +2280,7 @@ var acf; _load_field: function( $el ){ - acf.do_action('load_field/type=' + acf.get_field_type($el), $el); + acf.do_action('load_field/type=' + $el.data('type'), $el); }, @@ -2312,7 +2297,7 @@ var acf; _remove_field: function( $el ){ - acf.do_action('remove_field/type=' + acf.get_field_type($el), $el); + acf.do_action('remove_field/type=' + $el.data('type'), $el); }, @@ -2329,7 +2314,7 @@ var acf; _sortstart_field: function( $el, $placeholder ){ - acf.do_action('sortstart_field/type=' + acf.get_field_type($el), $el, $placeholder); + acf.do_action('sortstart_field/type=' + $el.data('type'), $el, $placeholder); }, @@ -2346,7 +2331,7 @@ var acf; _sortstop_field: function( $el, $placeholder ){ - acf.do_action('sortstop_field/type=' + acf.get_field_type($el), $el, $placeholder); + acf.do_action('sortstop_field/type=' + $el.data('type'), $el, $placeholder); }, @@ -2364,7 +2349,7 @@ var acf; _hide_field: function( $el, context ){ - acf.do_action('hide_field/type=' + acf.get_field_type($el), $el, context); + acf.do_action('hide_field/type=' + $el.data('type'), $el, context); }, @@ -2381,7 +2366,7 @@ var acf; _show_field: function( $el, context ){ - acf.do_action('show_field/type=' + acf.get_field_type($el), $el, context); + acf.do_action('show_field/type=' + $el.data('type'), $el, context); } @@ -2986,25 +2971,25 @@ var acf; }); +/* - /* - //console.time("acf_test_ready"); - //console.time("acf_test_load"); + + console.time("acf_test_ready"); + console.time("acf_test_load"); acf.add_action('ready', function(){ - //console.timeEnd("acf_test_ready"); + console.timeEnd("acf_test_ready"); }, 999); acf.add_action('load', function(){ - //console.timeEnd("acf_test_load"); + console.timeEnd("acf_test_load"); }, 999); */ - })(jQuery); (function($){ @@ -3429,7 +3414,8 @@ var acf; acf.fields.color_picker = acf.field.extend({ type: 'color_picker', - timeout: null, + $input: null, + $hidden: null, actions: { 'ready': 'initialize', @@ -3439,59 +3425,53 @@ var acf; focus: function(){ this.$input = this.$field.find('input[type="text"]'); + this.$hidden = this.$field.find('input[type="hidden"]'); }, initialize: function(){ // reference - var self = this; + var $input = this.$input, + $hidden = this.$hidden; - // vars - var $hidden = this.$input.clone(); + // trigger change function + var change_hidden = function(){ + + // timeout is required to ensure the $input val is correct + setTimeout(function(){ + + acf.val( $hidden, $input.val() ); + + }, 1); + + } - // modify hidden - $hidden.attr({ - 'type' : 'hidden', - 'class' : '', - 'id' : '', - 'value' : '' - }); - - - // append hidden - this.$input.before( $hidden ); + // args + var args = { + + defaultColor: false, + palettes: true, + hide: true, + change: change_hidden, + clear: change_hidden + + } + // filter + var args = acf.apply_filters('color_picker_args', args, this.$field); + + // iris - this.$input.wpColorPicker({ - - change: function( event, ui ){ - - if( self.timeout ) { - - clearTimeout( self.timeout ); - - } - - - self.timeout = setTimeout(function(){ - - $hidden.trigger('change'); - - }, 1000); - - } - - }); + this.$input.wpColorPicker(args); } }); - })(jQuery); (function($){ @@ -4198,7 +4178,7 @@ var acf; title: acf._e('file', 'select'), mode: 'select', type: '', - field: acf.get_field_key($field), + field: $field.data('key'), multiple: $repeater.exists(), library: this.o.library, mime_types: this.o.mime_types, @@ -4210,7 +4190,7 @@ var acf; if( i > 0 ) { // vars - var key = acf.get_field_key( $field ), + var key = $field.data('key'), $tr = $field.closest('.acf-row'); @@ -5198,7 +5178,7 @@ var acf; title: acf._e('image', 'select'), mode: 'select', type: 'image', - field: acf.get_field_key($field), + field: $field.data('key'), multiple: $repeater.exists(), library: this.o.library, mime_types: this.o.mime_types, @@ -5209,7 +5189,7 @@ var acf; if( i > 0 ) { // vars - var key = acf.get_field_key( $field ), + var key = $field.data('key'), $tr = $field.closest('.acf-row'); @@ -5580,7 +5560,9 @@ var acf; // populate above vars making sure to allow for failure try { - var filters = frame.content.get().toolbar.get('filters'); + var toolbar = frame.content.get().toolbar, + filters = toolbar.get('filters'), + search = toolbar.get('search'); } catch(e) { @@ -5692,6 +5674,10 @@ var acf; }); + // add _acfuplaoder to search + search.model.attributes._acfuploader = args.field; + + // render if( typeof filters.refresh === 'function' ) { @@ -8763,7 +8749,7 @@ var acf; events: { 'click #save-post': 'click_ignore', - 'click input[type="submit"]': 'click_publish', + 'click [type="submit"]': 'click_publish', 'submit form': 'submit_form', 'click .acf-error-message a': 'click_message' }, @@ -9093,11 +9079,7 @@ var acf; fetch: function( $form ){ // bail aelry if already busy - if( this.busy ) { - - return false; - - } + if( this.busy ) return false; // reference @@ -9105,7 +9087,7 @@ var acf; // vars - var data = acf.serialize_form( $form, 'acf' ); + var data = acf.serialize_form($form); // append AJAX action @@ -9189,7 +9171,7 @@ var acf; if( $message.exists() ) { - $message.removeClass('error'); + $message.addClass('-success'); $message.children('p').html( acf._e('validation_successful') ); } @@ -9650,7 +9632,7 @@ var acf; toolbars: {}, actions: { - 'ready': 'initialize', + 'load': 'initialize', 'append': 'initialize', 'remove': 'disable', 'sortstart': 'disable', diff --git a/assets/js/acf-input.min.js b/assets/js/acf-input.min.js index 85bacba..460907a 100644 --- a/assets/js/acf-input.min.js +++ b/assets/js/acf-input.min.js @@ -1,3 +1,3 @@ -!function(e,t){"use strict";var i=function(){function e(e,t,i,a){return"string"==typeof e&&"function"==typeof t&&(i=parseInt(i||10,10),r("actions",e,t,i,a)),d}function t(){var e=Array.prototype.slice.call(arguments),t=e.shift();return"string"==typeof t&&c("actions",t,e),d}function i(e,t){return"string"==typeof e&&o("actions",e,t),d}function a(e,t,i,a){return"string"==typeof e&&"function"==typeof t&&(i=parseInt(i||10,10),r("filters",e,t,i,a)),d}function n(){var e=Array.prototype.slice.call(arguments),t=e.shift();return"string"==typeof t?c("filters",t,e):d}function s(e,t){return"string"==typeof e&&o("filters",e,t),d}function o(e,t,i,a){if(f[e][t])if(i){var n=f[e][t],s;if(a)for(s=n.length;s--;){var o=n[s];o.callback===i&&o.context===a&&n.splice(s,1)}else for(s=n.length;s--;)n[s].callback===i&&n.splice(s,1)}else f[e][t]=[]}function r(e,t,i,a,n){var s={callback:i,priority:a,context:n},o=f[e][t];o?(o.push(s),o=l(o)):o=[s],f[e][t]=o}function l(e){for(var t,i,a,n=1,s=e.length;s>n;n++){for(t=e[n],i=n;(a=e[i-1])&&a.priority>t.priority;)e[i]=e[i-1],--i;e[i]=t}return e}function c(e,t,i){var a=f[e][t];if(!a)return"filters"===e?i[0]:!1;var n=0,s=a.length;if("filters"===e)for(;s>n;n++)i[0]=a[n].callback.apply(a[n].context,i);else for(;s>n;n++)a[n].callback.apply(a[n].context,i);return"filters"===e?i[0]:!0}var d={removeFilter:s,applyFilters:n,addFilter:a,removeAction:i,doAction:t,addAction:e},f={actions:{},filters:{}};return d};e.wp=e.wp||{},e.wp.hooks=new i}(window);var acf;!function($){$.fn.exists=function(){return $(this).length>0},$.fn.outerHTML=function(){return $(this).get(0).outerHTML},acf={l10n:{},o:{},update:function(e,t){this.o[e]=t},get:function(e){return"undefined"!=typeof this.o[e]?this.o[e]:null},_e:function(e,t){t=t||!1;var i=this.l10n[e]||"";return t&&(i=i[t]||""),i},add_action:function(){var e=arguments[0].split(" ");for(k in e)arguments[0]="acf."+e[k],wp.hooks.addAction.apply(this,arguments);return this},remove_action:function(){return arguments[0]="acf."+arguments[0],wp.hooks.removeAction.apply(this,arguments),this},do_action:function(){return arguments[0]="acf."+arguments[0],wp.hooks.doAction.apply(this,arguments),this},add_filter:function(){return arguments[0]="acf."+arguments[0],wp.hooks.addFilter.apply(this,arguments),this},remove_filter:function(){return arguments[0]="acf."+arguments[0],wp.hooks.removeFilter.apply(this,arguments),this},apply_filters:function(){return arguments[0]="acf."+arguments[0],wp.hooks.applyFilters.apply(this,arguments)},get_selector:function(e){e=e||"";var t=".acf-field";if($.isPlainObject(e))if($.isEmptyObject(e))e="";else for(k in e){e=e[k];break}return e&&(t+="-"+e,t=t.split("_").join("-"),t=t.split("field-field-").join("field-")),t},get_fields:function(e,t,i){e=e||"",t=t||!1,i=i||!1;var a=this.get_selector(e),n=$(a,t);return t!==!1&&t.each(function(){$(this).is(a)&&(n=n.add($(this)))}),i||(n=acf.apply_filters("get_fields",n)),n},get_field:function(e,t){e=e||"",t=t||!1;var i=this.get_fields(e,t,!0);return i.exists()?i.first():!1},get_closest_field:function(e,t){return t=t||"",e.closest(this.get_selector(t))},get_field_wrap:function(e){return e.closest(this.get_selector())},get_field_key:function(e){return this.get_data(e,"key")},get_field_type:function(e){return this.get_data(e,"type")},get_data:function(e,t){return"undefined"==typeof t?e.data():e.data(t)},get_uniqid:function(e,t){"undefined"==typeof e&&(e="");var i,a=function(e,t){return e=parseInt(e,10).toString(16),te.length?Array(1+(t-e.length)).join("0")+e:e};return this.php_js||(this.php_js={}),this.php_js.uniqidSeed||(this.php_js.uniqidSeed=Math.floor(123456789*Math.random())),this.php_js.uniqidSeed++,i=e,i+=a(parseInt((new Date).getTime()/1e3,10),8),i+=a(this.php_js.uniqidSeed,5),t&&(i+=(10*Math.random()).toFixed(8).toString()),i},serialize_form:function(e,t){t=t||"";var i={},a={},n=t.length,s="_"+t,o=s.length;return $selector=e.find("select, textarea, input"),$.each($selector.serializeArray(),function(e,r){t&&r.name.substring(0,n)!=t&&r.name.substring(0,o)!=s||("[]"===r.name.slice(-2)&&(r.name=r.name.replace("[]",""),"undefined"==typeof a[r.name]&&(a[r.name]=-1),a[r.name]++,r.name+="["+a[r.name]+"]"),i[r.name]=r.value)}),i},remove_tr:function(e,t){var i=e.height(),a=e.children().length;e.addClass("acf-remove-element"),setTimeout(function(){e.removeClass("acf-remove-element"),e.html(''),e.children("td").animate({height:0},250,function(){e.remove(),"function"==typeof t&&t()})},250)},remove_el:function(e,t,i){i=i||0,e.css({height:e.height(),width:e.width(),position:"absolute"}),e.wrap('

'),e.animate({opacity:0},250),e.parent(".acf-temp-wrap").animate({height:i},250,function(){$(this).remove(),"function"==typeof t&&t()})},isset:function(){var e=arguments,t=e.length,a=null,n;if(0===t)throw new Error("Empty isset");for(a=e[0],i=1;i #acf-popup"),$popup.exists())return update_popup(e);var t=['
','
','

','
','
',"
",'
',"
"].join("");return $("body").append(t),$("#acf-popup").on("click",".bg, .acf-close-popup",function(e){e.preventDefault(),acf.close_popup()}),this.update_popup(e)},update_popup:function(e){return $popup=$("#acf-popup"),$popup.exists()?(e=$.extend({},{title:"",content:"",width:0,height:0,loading:!1},e),e.title&&$popup.find(".title h3").html(e.title),e.content&&($inner=$popup.find(".inner:first"),$inner.html(e.content),acf.do_action("append",$inner),$inner.attr("style","position: relative;"),e.height=$inner.outerHeight(),$inner.removeAttr("style")),e.width&&$popup.find(".acf-popup-box").css({width:e.width,"margin-left":0-e.width/2}),e.height&&(e.height+=44,$popup.find(".acf-popup-box").css({height:e.height,"margin-top":0-e.height/2})),e.loading?$popup.find(".loading").show():$popup.find(".loading").hide(),$popup):!1},close_popup:function(){$popup=$("#acf-popup"),$popup.exists()&&$popup.remove()},update_user_setting:function(e,t){$.ajax({url:acf.get("ajaxurl"),dataType:"html",type:"post",data:acf.prepare_for_ajax({action:"acf/update_user_setting",name:e,value:t})})},prepare_for_ajax:function(e){return e.nonce=acf.get("nonce"),e=acf.apply_filters("prepare_for_ajax",e)},is_ajax_success:function(e){return e&&e.success?!0:!1},get_ajax_message:function(e){var t={text:"",type:"error"};return e?(e.success&&(t.type="success"),e.data&&e.data.message&&(t.text=e.data.message),e.data&&e.data.error&&(t.text=e.data.error),t):t},update_cookie:function(e,t,i){if(i=i||31){var a=new Date;a.setTime(a.getTime()+24*i*60*60*1e3);var n="; expires="+a.toGMTString()}else var n="";document.cookie=e+"="+t+n+"; path=/"},get_cookie:function(e){for(var t=e+"=",i=document.cookie.split(";"),a=0;a=i&&t>=a},val:function(e,t){var i=e.val();e.val(t),t!=i&&e.trigger("change")},str_replace:function(e,t,i){return i.split(e).join(t)},str_sanitize:function(e){var t="",a={"æ":"a","å":"a","á":"a","ä":"a","č":"c","ď":"d","è":"e","é":"e","ě":"e","ë":"e","í":"i","ĺ":"l","ľ":"l","ň":"n","ø":"o","ó":"o","ô":"o","ő":"o","ö":"o","ŕ":"r","š":"s","ť":"t","ú":"u","ů":"u","ű":"u","ü":"u","ý":"y","ř":"r","ž":"z"," ":"_","'":"","?":"","/":"","\\":"",".":"",",":"",">":"","<":"",'"':"","[":"","]":"","|":"","{":"","}":"","(":"",")":""};for(e=e.toLowerCase(),i=0;i'),e.append(n))),n.append('"),i==a.value&&e.prop("selectedIndex",t)})},duplicate:function(e,t){t=t||"data-id",find=e.attr(t),replace=acf.get_uniqid(),acf.do_action("before_duplicate",e);var i=e.clone();return i.removeClass("acf-clone"),acf.do_action("remove",i),"undefined"!=typeof find&&(i.attr(t,replace),i.find('[id*="'+find+'"]').each(function(){$(this).attr("id",$(this).attr("id").replace(find,replace))}),i.find('[name*="'+find+'"]').each(function(){$(this).attr("name",$(this).attr("name").replace(find,replace))})),i.find(".ui-sortable").removeClass("ui-sortable"),acf.do_action("after_duplicate",e,i),e.after(i),setTimeout(function(){acf.do_action("append",i)},1),i},decode:function(e){return $("
").html(e).text()}},acf.model={actions:{},filters:{},events:{},extend:function(e){var t=$.extend({},this,e);return $.each(t.actions,function(e,i){t._add_action(e,i)}),$.each(t.filters,function(e,i){t._add_filter(e,i)}),$.each(t.events,function(e,i){t._add_event(e,i)}),t},_add_action:function(e,t){var i=this,a=e.split(" "),e=a[0]||"",n=a[1]||10;acf.add_action(e,i[t],n,i)},_add_filter:function(e,t){var i=this,a=e.split(" "),e=a[0]||"",n=a[1]||10;acf.add_filter(e,i[t],n,i)},_add_event:function(e,t){var i=this,a=e.substr(0,e.indexOf(" ")),n=e.substr(e.indexOf(" ")+1);$(document).on(a,n,function(e){e.$el=$(this),"function"==typeof i.event&&(e=i.event(e)),i[t].apply(i,[e])})},get:function(e,t){return t=t||null,"undefined"!=typeof this[e]&&(t=this[e]),t},set:function(e,t){return this[e]=t,"function"==typeof this["_set_"+e]&&this["_set_"+e].apply(this),this}},acf.field=acf.model.extend({type:"",o:{},$field:null,_add_action:function(e,t){var i=this;e=e+"_field/type="+i.type,acf.add_action(e,function(e){i.set("$field",e),i[t].apply(i,arguments)})},_add_filter:function(e,t){var i=this;e=e+"_field/type="+i.type,acf.add_filter(e,function(e){i.set("$field",e),i[t].apply(i,arguments)})},_add_event:function(e,t){var i=this,a=e.substr(0,e.indexOf(" ")),n=e.substr(e.indexOf(" ")+1),s=acf.get_selector(i.type);$(document).on(a,s+" "+n,function(e){e.$el=$(this),e.$field=acf.get_closest_field(e.$el,i.type),i.set("$field",e.$field),i[t].apply(i,[e])})},_set_$field:function(){"function"==typeof this.focus&&this.focus()},doFocus:function(e){return this.set("$field",e)}}),acf.fields=acf.model.extend({actions:{prepare:"_prepare",prepare_field:"_prepare_field",ready:"_ready",ready_field:"_ready_field",append:"_append",append_field:"_append_field",load:"_load",load_field:"_load_field",remove:"_remove",remove_field:"_remove_field",sortstart:"_sortstart",sortstart_field:"_sortstart_field",sortstop:"_sortstop",sortstop_field:"_sortstop_field",show:"_show",show_field:"_show_field",hide:"_hide",hide_field:"_hide_field"},_prepare:function(e){acf.get_fields("",e).each(function(){acf.do_action("prepare_field",$(this))})},_prepare_field:function(e){acf.do_action("prepare_field/type="+acf.get_field_type(e),e)},_ready:function(e){acf.get_fields("",e).each(function(){acf.do_action("ready_field",$(this))})},_ready_field:function(e){acf.do_action("ready_field/type="+acf.get_field_type(e),e)},_append:function(e){acf.get_fields("",e).each(function(){acf.do_action("append_field",$(this))})},_append_field:function(e){acf.do_action("append_field/type="+acf.get_field_type(e),e)},_load:function(e){acf.get_fields("",e).each(function(){acf.do_action("load_field",$(this))})},_load_field:function(e){acf.do_action("load_field/type="+acf.get_field_type(e),e)},_remove:function(e){acf.get_fields("",e).each(function(){acf.do_action("remove_field",$(this))})},_remove_field:function(e){acf.do_action("remove_field/type="+acf.get_field_type(e),e)},_sortstart:function(e,t){acf.get_fields("",e).each(function(){acf.do_action("sortstart_field",$(this),t)})},_sortstart_field:function(e,t){acf.do_action("sortstart_field/type="+acf.get_field_type(e),e,t)},_sortstop:function(e,t){acf.get_fields("",e).each(function(){acf.do_action("sortstop_field",$(this),t)})},_sortstop_field:function(e,t){acf.do_action("sortstop_field/type="+acf.get_field_type(e),e,t)},_hide:function(e,t){acf.get_fields("",e).each(function(){acf.do_action("hide_field",$(this),t)})},_hide_field:function(e,t){acf.do_action("hide_field/type="+acf.get_field_type(e),e,t)},_show:function(e,t){acf.get_fields("",e).each(function(){acf.do_action("show_field",$(this),t)})},_show_field:function(e,t){acf.do_action("show_field/type="+acf.get_field_type(e),e,t)}}),$(document).ready(function(){acf.do_action("ready",$("body"))}),$(window).load(function(){acf.do_action("load",$("body"))}),acf.layout=acf.model.extend({active:0,actions:{refresh:"refresh"},refresh:function(e){e=e||!1,$(".acf-fields:visible",e).each(function(){var e=$(),t=0,i=0,a=-1,n=$(this).children(".acf-field[data-width]:visible");n.exists()&&(n.removeClass("acf-r0 acf-c0").css({"min-height":0}),n.each(function(n){var s=$(this),o=s.position().top;0==n&&(t=o),o!=t&&(e.css({"min-height":i+1+"px"}),e=$(),t=s.position().top,i=0,a=-1),a++,i=s.outerHeight()>i?s.outerHeight():i,e=e.add(s),0==o?s.addClass("acf-r0"):0==a&&s.addClass("acf-c0")}),e.exists()&&e.css({"min-height":i+1+"px"}))})}}),$(document).on("change",".acf-field input, .acf-field textarea, .acf-field select",function(){$('#acf-form-data input[name="_acfchanged"]').exists()&&$('#acf-form-data input[name="_acfchanged"]').val(1),acf.do_action("change",$(this))}),$(document).on("click",'.acf-field a[href="#"]',function(e){e.preventDefault()}),acf.unload=acf.model.extend({active:1,changed:0,filters:{validation_complete:"validation_complete"},actions:{change:"on",submit:"off"},events:{"submit form":"off"},validation_complete:function(e,t){return e&&e.errors&&this.on(),e},on:function(){!this.changed&&this.active&&(this.changed=1,$(window).on("beforeunload",this.unload))},off:function(){this.changed=0,$(window).off("beforeunload",this.unload)},unload:function(){return acf._e("unload")}}),acf.tooltip=acf.model.extend({$el:null,events:{"mouseenter .acf-js-tooltip":"on","mouseleave .acf-js-tooltip":"off"},on:function(e){var t=e.$el.attr("title");if(t){this.$el=$('
'+t+"
"),$("body").append(this.$el);var i=10;target_w=e.$el.outerWidth(),target_h=e.$el.outerHeight(),target_t=e.$el.offset().top,target_l=e.$el.offset().left,tooltip_w=this.$el.outerWidth(),tooltip_h=this.$el.outerHeight();var a=target_t-tooltip_h,n=target_l+target_w/2-tooltip_w/2;i>n?(this.$el.addClass("right"),n=target_l+target_w,a=target_t+target_h/2-tooltip_h/2):n+tooltip_w+i>$(window).width()?(this.$el.addClass("left"),n=target_l-tooltip_w,a=target_t+target_h/2-tooltip_h/2):a-$(window).scrollTop()')}}),acf.add_action("sortstart",function(e,t){e.is("tr")&&(e.css("position","relative"),e.children().each(function(){$(this).width($(this).width())}),e.css("position","absolute"),t.html(''))}),acf.add_action("before_duplicate",function(e){e.find("select option:selected").addClass("selected")}),acf.add_action("after_duplicate",function(e,t){e.find("select option.selected").removeClass("selected"),t.find("select").each(function(){var e=[];$(this).find("option.selected").each(function(){e.push($(this).val()),$(this).removeClass("selected")}),$(this).val(e)})})}(jQuery),function($){acf.ajax=acf.model.extend({actions:{ready:"ready"},events:{"change #page_template":"_change_template","change #parent_id":"_change_parent","change #post-formats-select input":"_change_format","change .categorychecklist input":"_change_term",'change .acf-taxonomy-field[data-save="1"] input':"_change_term",'change .acf-taxonomy-field[data-save="1"] select':"_change_term"},o:{},xhr:null,update:function(e,t){return this.o[e]=t,this},get:function(e){return this.o[e]||null},ready:function(){this.update("post_id",acf.get("post_id"))},fetch:function(){if(acf.get("ajax")){this.xhr&&this.xhr.abort();var e=this,t=this.o;t.action="acf/post/get_field_groups",t.exists=[],$(".acf-postbox").not(".acf-hidden").each(function(){t.exists.push($(this).attr("id").substr(4))}),this.xhr=$.ajax({url:acf.get("ajaxurl"),data:acf.prepare_for_ajax(t),type:"post",dataType:"json",success:function(t){acf.is_ajax_success(t)&&e.render(t.data)}})}},render:function(e){$(".acf-postbox").addClass("acf-hidden"),$(".acf-postbox-toggle").addClass("acf-hidden"),$.each(e,function(e,t){var i=$("#acf-"+t.key),a=$("#acf-"+t.key+"-hide"),n=a.parent();i.removeClass("acf-hidden hide-if-js").show(),n.removeClass("acf-hidden hide-if-js").show(),a.prop("checked",!0);var s=i.find(".acf-replace-with-fields");s.exists()&&(s.replaceWith(t.html),acf.do_action("append",i)),0===e&&$("#acf-style").html(t.style),i.find(".acf-hidden-by-postbox").prop("disabled",!1)}),$(".acf-postbox.acf-hidden").find("select, textarea, input").not(":disabled").each(function(){$(this).addClass("acf-hidden-by-postbox").prop("disabled",!0)})},sync_taxonomy_terms:function(){var e=[""];$(".categorychecklist, .acf-taxonomy-field").each(function(){var t=$(this),i=t.find('input[type="checkbox"]').not(":disabled"),a=t.find('input[type="radio"]').not(":disabled"),n=t.find("select").not(":disabled"),s=t.find('input[type="hidden"]').not(":disabled");t.is(".acf-taxonomy-field")&&"1"!=t.attr("data-save")||t.closest(".media-frame").exists()||(i.exists()?i.filter(":checked").each(function(){e.push($(this).val())}):a.exists()?a.filter(":checked").each(function(){e.push($(this).val())}):n.exists()?n.find("option:selected").each(function(){e.push($(this).val())}):s.exists()&&s.each(function(){$(this).val()&&e.push($(this).val())}))}),e=e.filter(function(e,t,i){return i.indexOf(e)==t}),this.update("post_taxonomy",e).fetch()},_change_template:function(e){var t=e.$el.val();this.update("page_template",t).fetch()},_change_parent:function(e){var t="parent",i=0;""!=e.$el.val()&&(t="child",i=e.$el.val()),this.update("page_type",t).update("page_parent",i).fetch()},_change_format:function(e){var t=e.$el.val();"0"==t&&(t="standard"),this.update("post_format",t).fetch()},_change_term:function(e){var t=this;e.$el.closest(".media-frame").exists()||setTimeout(function(){t.sync_taxonomy_terms()},1)}})}(jQuery),function($){acf.fields.checkbox=acf.field.extend({type:"checkbox",events:{"change input":"change"},change:function(e){var t=e.$el.closest("ul"),i=t.find("input[name]"),a=e.$el.is(":checked");if(e.$el.hasClass("acf-checkbox-toggle"))return void i.prop("checked",a);if(t.find(".acf-checkbox-toggle").exists()){var a=0==i.not(":checked").length;t.find(".acf-checkbox-toggle").prop("checked",a)}}})}(jQuery),function($){acf.fields.color_picker=acf.field.extend({type:"color_picker",timeout:null,actions:{ready:"initialize",append:"initialize"},focus:function(){this.$input=this.$field.find('input[type="text"]')},initialize:function(){var e=this,t=this.$input.clone();t.attr({type:"hidden","class":"",id:"",value:""}),this.$input.before(t),this.$input.wpColorPicker({change:function(i,a){e.timeout&&clearTimeout(e.timeout),e.timeout=setTimeout(function(){t.trigger("change")},1e3)}})}})}(jQuery),function($){acf.conditional_logic=acf.model.extend({actions:{"prepare 20":"render","append 20":"render"},events:{"change .acf-field input":"change","change .acf-field textarea":"change","change .acf-field select":"change"},items:{},triggers:{},add:function(e,t){for(var i in t){var a=t[i];for(var n in a){var s=a[n],o=s.field,r=this.triggers[o]||{};r[e]=e,this.triggers[o]=r}}this.items[e]=t},render:function(e){e=e||!1;var t=acf.get_fields("",e,!0);this.render_fields(t),acf.do_action("refresh",e)},change:function(e){var t=e.$el,i=acf.get_field_wrap(t),a=i.data("key");if("undefined"==typeof this.triggers[a])return!1;$parent=i.parent();for(var n in this.triggers[a]){var s=this.triggers[a][n],o=acf.get_fields(s,$parent,!0);this.render_fields(o)}acf.do_action("refresh",$parent)},render_fields:function(e){var t=this;e.each(function(){t.render_field($(this))})},render_field:function(e){var t=e.data("key");if("undefined"==typeof this.items[t])return!1;var i=!1,a=this.items[t];for(var n in a){var s=a[n],o=!0;for(var r in s){var l=s[r],c=this.get_trigger(e,l.field);if(!this.calculate(l,c,e)){o=!1;break}}if(o){i=!0;break}}i?this.show_field(e):this.hide_field(e)},show_field:function(e){e.removeClass("hidden-by-conditional-logic"),e.find(".acf-clhi").not(".hidden-by-conditional-logic .acf-clhi").removeClass("acf-clhi").prop("disabled",!1),acf.do_action("show_field",e,"conditional_logic")},hide_field:function(e){e.addClass("hidden-by-conditional-logic"),e.find("input, textarea, select").not(".acf-disabled").addClass("acf-clhi").prop("disabled",!0),acf.do_action("hide_field",e,"conditional_logic")},get_trigger:function(e,t){var i=acf.get_selector(t),a=e.siblings(i);if(!a.exists()){var n=acf.get_selector();e.parents(n).each(function(){return a=$(this).siblings(i),a.exists()?!1:void 0})}return a.exists()?a:!1},calculate:function(e,t,i){if(!t||!i)return!1;var a=t.data("type");if("true_false"==a||"checkbox"==a||"radio"==a){var n=t.find('input[value="'+e.value+'"]:checked').exists();if("=="==e.operator&&n)return!0;if("!="==e.operator&&!n)return!0}else if("select"==a){var s=t.find("select"),o=acf.get_data(s),r=[];if(o.multiple&&o.ui){r=s.val();var l=s.siblings(".select2-container");l.exists()&&(r=[],l.find(".select2-search-choice-hidden").each(function(){r.push($(this).val())}))}else o.multiple?r=s.val():o.ui?r.push(s.siblings("input").val()):r.push(s.val());if("=="==e.operator){if($.inArray(e.value,r)>-1)return!0}else if($.inArray(e.value,r)<0)return!0}return!1}})}(jQuery),function($){acf.fields.date_picker=acf.field.extend({type:"date_picker",$el:null,$input:null,$hidden:null,o:{},actions:{ready:"initialize",append:"initialize"},events:{'blur input[type="text"]':"blur"},focus:function(){this.$el=this.$field.find(".acf-date_picker"),this.$input=this.$el.find('input[type="text"]'),this.$hidden=this.$el.find('input[type="hidden"]'),this.o=acf.get_data(this.$el)},initialize:function(){this.$input.val(this.$hidden.val());var e=$.extend({},acf.l10n.date_picker,{dateFormat:"yymmdd",altField:this.$hidden,altFormat:"yymmdd",changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.o.first_day});e=acf.apply_filters("date_picker_args",e,this.$field),this.$input.addClass("active").datepicker(e),this.$input.datepicker("option","dateFormat",this.o.display_format),$("body > #ui-datepicker-div").exists()&&$("body > #ui-datepicker-div").wrap('
')},blur:function(){this.$input.val()||this.$hidden.val("")}})}(jQuery),function($){acf.fields.file=acf.field.extend({type:"file",$el:null,actions:{ready:"initialize",append:"initialize"},events:{'click a[data-name="add"]':"add",'click a[data-name="edit"]':"edit",'click a[data-name="remove"]':"remove",'change input[type="file"]':"change"},focus:function(){this.$el=this.$field.find(".acf-file-uploader"),this.o=acf.get_data(this.$el)},initialize:function(){"basic"==this.o.uploader&&this.$el.closest("form").attr("enctype","multipart/form-data")},add:function(){var e=this,t=this.$field,i=acf.get_closest_field(t,"repeater"),a=acf.media.popup({title:acf._e("file","select"),mode:"select",type:"",field:acf.get_field_key(t),multiple:i.exists(),library:this.o.library,mime_types:this.o.mime_types,select:function(a,n){if(n>0){var s=acf.get_field_key(t),o=t.closest(".acf-row");if(t=!1,o.nextAll(".acf-row:visible").each(function(){return(t=acf.get_field(s,$(this)))?t.find(".acf-file-uploader.has-value").exists()?void(t=!1):!1:void 0}),!t){if(o=acf.fields.repeater.doFocus(i).add(),!o)return!1;t=acf.get_field(s,o)}}e.doFocus(t),e.render(e.prepare(a))}})},prepare:function(e){var t={id:e.id,title:e.attributes.title,name:e.attributes.filename,url:e.attributes.url,icon:e.attributes.icon,size:e.attributes.filesize};return t},render:function(e){this.$el.find('[data-name="icon"]').attr("src",e.icon),this.$el.find('[data-name="title"]').text(e.title),this.$el.find('[data-name="name"]').text(e.name).attr("href",e.url),this.$el.find('[data-name="size"]').text(e.size),this.$el.find('[data-name="id"]').val(e.id).trigger("change"),this.$el.addClass("has-value")},edit:function(){var e=this,t=this.$field,i=this.$el.find('[data-name="id"]').val(),a=acf.media.popup({title:acf._e("file","edit"),button:acf._e("file","update"),mode:"edit",id:i,select:function(i,a){e.doFocus(t),e.render(e.prepare(i))}})},remove:function(){var e={id:"",title:"",name:"",url:"",icon:"",size:""};this.render(e),this.$el.removeClass("has-value")},change:function(e){this.$el.find('[data-name="id"]').val(e.$el.val())}})}(jQuery),function($){acf.fields.google_map=acf.field.extend({type:"google_map",$el:null,$search:null,timeout:null,status:"",geocoder:!1,map:!1,maps:{},pending:$(),actions:{ready:"initialize",append:"initialize",show:"show"},events:{'click a[data-name="clear"]':"_clear",'click a[data-name="locate"]':"_locate",'click a[data-name="search"]':"_search","keydown .search":"_keydown","keyup .search":"_keyup","focus .search":"_focus","blur .search":"_blur","mousedown .acf-google-map":"_mousedown"},focus:function(){this.$el=this.$field.find(".acf-google-map"),this.$search=this.$el.find(".search"),this.o=acf.get_data(this.$el),this.maps[this.o.id]&&(this.map=this.maps[this.o.id])},is_ready:function(){var e=this;return"ready"==this.status?!0:"loading"==this.status?!1:acf.isset(window,"google","load")?acf.isset(window,"google","maps","places")?(this.status="ready",!0):(e.status="loading",google.load("maps","3",{other_params:"sensor=false&libraries=places",callback:function(){e.status="ready",e.initialize_pending()}}),!1):(e.status="loading",$.getScript("https://www.google.com/jsapi",function(){google.load("maps","3",{other_params:"sensor=false&libraries=places",callback:function(){e.status="ready",e.initialize_pending()}})}),!1)},initialize_pending:function(){var e=this;this.pending.each(function(){e.doFocus($(this)).initialize()}),this.pending=$()},initialize:function(){if(!this.is_ready())return this.pending=this.pending.add(this.$field),!1;this.geocoder||(this.geocoder=new google.maps.Geocoder);var e=this,t=this.$field,i=this.$el,a=this.$search;a.val(this.$el.find(".input-address").val());var n=acf.apply_filters("google_map_args",{zoom:parseInt(this.o.zoom),center:new google.maps.LatLng(this.o.lat,this.o.lng),mapTypeId:google.maps.MapTypeId.ROADMAP},this.$field);this.map=new google.maps.Map(this.$el.find(".canvas")[0],n);var s=new google.maps.places.Autocomplete(this.$search[0]);s.bindTo("bounds",this.map),this.map.autocomplete=s;var o=acf.apply_filters("google_map_marker_args",{draggable:!0,raiseOnDrag:!0,map:this.map},this.$field);this.map.marker=new google.maps.Marker(o),this.map.$el=i,this.map.$field=t;var r=i.find(".input-lat").val(),l=i.find(".input-lng").val();r&&l&&this.update(r,l).center(),google.maps.event.addListener(s,"place_changed",function(t){var i=this.getPlace();e.search(i)}),google.maps.event.addListener(this.map.marker,"dragend",function(){var t=this.map.marker.getPosition(),i=t.lat(),a=t.lng();e.update(i,a).sync()}),google.maps.event.addListener(this.map,"click",function(t){var i=t.latLng.lat(),a=t.latLng.lng();e.update(i,a).sync()}),this.maps[this.o.id]=this.map},search:function(e){var t=this,i=this.$search.val();if(!i)return!1;this.$el.find(".input-address").val(i);var a=i.split(",");if(2==a.length){var n=a[0],s=a[1];if($.isNumeric(n)&&$.isNumeric(s))return n=parseFloat(n),s=parseFloat(s),void t.update(n,s).center()}if(e&&e.geometry){var n=e.geometry.location.lat(),s=e.geometry.location.lng();return void t.update(n,s).center()}this.$el.addClass("-loading"),t.geocoder.geocode({address:i},function(i,a){if(t.$el.removeClass("-loading"),a!=google.maps.GeocoderStatus.OK)return void console.log("Geocoder failed due to: "+a);if(!i[0])return void console.log("No results found");e=i[0];var n=e.geometry.location.lat(),s=e.geometry.location.lng();t.update(n,s).center()})},update:function(e,t){var i=new google.maps.LatLng(e,t);return acf.val(this.$el.find(".input-lat"),e),acf.val(this.$el.find(".input-lng"),t),this.map.marker.setPosition(i),this.map.marker.setVisible(!0),this.$el.addClass("-value"),this.$field.removeClass("error"),acf.do_action("google_map_change",i,this.map,this.$field),this.$search.blur(),this},center:function(){var e=this.map.marker.getPosition(),t=this.o.lat,i=this.o.lng;e&&(t=e.lat(),i=e.lng());var a=new google.maps.LatLng(t,i);this.map.setCenter(a)},sync:function(){var e=this,t=this.map.marker.getPosition(),i=new google.maps.LatLng(t.lat(),t.lng());return this.$el.addClass("-loading"),this.geocoder.geocode({latLng:i},function(t,i){if(e.$el.removeClass("-loading"),i!=google.maps.GeocoderStatus.OK)return void console.log("Geocoder failed due to: "+i);if(!t[0])return void console.log("No results found");var a=t[0];e.$search.val(a.formatted_address),acf.val(e.$el.find(".input-address"),a.formatted_address)}),this},refresh:function(){return this.is_ready()?(google.maps.event.trigger(this.map,"resize"),void this.center()):!1},show:function(){var e=this,t=this.$field;setTimeout(function(){e.set("$field",t).refresh()},10)},_clear:function(e){this.$el.removeClass("-value -loading -search"),this.$search.val(""),acf.val(this.$el.find(".input-address"),""),acf.val(this.$el.find(".input-lat"),""),acf.val(this.$el.find(".input-lng"),""),this.map.marker.setVisible(!1)},_locate:function(e){var t=this;return navigator.geolocation?(this.$el.addClass("-loading"),void navigator.geolocation.getCurrentPosition(function(e){t.$el.removeClass("-loading");var i=e.coords.latitude,a=e.coords.longitude;t.update(i,a).sync().center()})):(alert(acf._e("google_map","browser_support")),this)},_search:function(e){this.search()},_focus:function(e){this.$el.removeClass("-value"),this._keyup()},_blur:function(e){var t=this,i=this.$el.find(".input-address").val();i&&(this.timeout=setTimeout(function(){t.$el.addClass("-value"),t.$search.val(i)},100))},_keydown:function(e){13==e.which&&e.preventDefault()},_keyup:function(e){var t=this.$search.val();t?this.$el.addClass("-search"):this.$el.removeClass("-search")},_mousedown:function(e){var t=this;setTimeout(function(){clearTimeout(t.timeout)},1)}})}(jQuery),function($){acf.fields.image=acf.field.extend({type:"image",$el:null,$input:null,$img:null,actions:{ready:"initialize",append:"initialize"},events:{'click a[data-name="add"]':"add",'click a[data-name="edit"]':"edit",'click a[data-name="remove"]':"remove", -'change input[type="file"]':"change"},focus:function(){this.$el=this.$field.find(".acf-image-uploader"),this.$input=this.$field.find('[data-name="id"]'),this.$img=this.$field.find('[data-name="image"]'),this.o=acf.get_data(this.$el)},initialize:function(){"basic"==this.o.uploader&&this.$el.closest("form").attr("enctype","multipart/form-data")},add:function(){var e=this,t=this.$field,i=acf.get_closest_field(this.$field,"repeater"),a=acf.media.popup({title:acf._e("image","select"),mode:"select",type:"image",field:acf.get_field_key(t),multiple:i.exists(),library:this.o.library,mime_types:this.o.mime_types,select:function(a,n){if(n>0){var s=acf.get_field_key(t),o=t.closest(".acf-row");if(t=!1,o.nextAll(".acf-row:visible").each(function(){return(t=acf.get_field(s,$(this)))?t.find(".acf-image-uploader.has-value").exists()?void(t=!1):!1:void 0}),!t){if(o=acf.fields.repeater.doFocus(i).add(),!o)return!1;t=acf.get_field(s,o)}}e.doFocus(t),e.render(e.prepare(a))}})},prepare:function(e){var t={id:e.id,alt:e.attributes.alt,url:e.attributes.url};return acf.isset(e.attributes,"sizes",this.o.preview_size,"url")&&(t.url=e.attributes.sizes[this.o.preview_size].url),t},render:function(e){this.$img.attr("src",e.url),this.$img.attr("alt",e.alt),this.$input.val(e.id).trigger("change"),this.$el.addClass("has-value")},edit:function(){var e=this,t=this.$field,i=this.$input.val(),a=acf.media.popup({title:acf._e("image","edit"),button:acf._e("image","update"),mode:"edit",id:i,select:function(i,a){e.doFocus(t),e.render(e.prepare(i))}})},remove:function(){var e={id:"",alt:"",url:""};this.render(e),this.$el.removeClass("has-value")},change:function(e){this.$input.val(e.$el.val())}})}(jQuery),function($){acf.media=acf.model.extend({frames:[],mime_types:{},actions:{ready:"ready"},frame:function(){var e=this.frames.length-1;return 0>e?!1:this.frames[e]},popup:function(e){var t=this,i=acf.get("post_id");$.isNumeric(i)||(i=0);var a={mode:"select",title:"",button:"",type:"",field:"",mime_types:"",library:"all",multiple:!1};e=$.extend({},a,e);var n={title:e.title,multiple:e.multiple,library:{},states:[]};e.type&&(n.library.type=e.type),"edit"==e.mode&&(n.library.post__in=[e.id]),"uploadedTo"==e.library&&(n.library.uploadedTo=i),e.button&&(n.button={text:e.button});var s=wp.media.query(n.library);acf.isset(s,"mirroring","args")&&(s.mirroring.args._acfuploader=e.field),n.states=[new wp.media.controller.Library({library:s,multiple:n.multiple,title:n.title,priority:20,filterable:"all",editable:!0,allowLocalEdits:!0})],acf.isset(wp,"media","controller","EditImage")&&n.states.push(new wp.media.controller.EditImage);var o=wp.media(n);return acf.isset(_wpPluploadSettings,"defaults","multipart_params")&&(_wpPluploadSettings.defaults.multipart_params._acfuploader=e.field,o.on("open",function(){delete _wpPluploadSettings.defaults.multipart_params._acfuploader})),o.on("content:render:edit-image",function(){var e=this.state().get("image"),t=new wp.media.view.EditImage({model:e,controller:this}).render();this.content.set(t),t.loadEditor()},o),o.on("content:activate:browse",function(){try{var a=o.content.get().toolbar.get("filters")}catch(n){return}if("image"==e.type&&(a.filters.all.text=acf._e("image","all"),delete a.filters.audio,delete a.filters.video,$.each(a.filters,function(e,t){null===t.props.type&&(t.props.type="image")})),e.mime_types){var s=e.mime_types.split(" ").join("").split(".").join("").split(",");$.each(s,function(e,i){$.each(t.mime_types,function(e,t){if(-1!==e.indexOf(i)){var n={text:i,props:{status:null,type:t,uploadedTo:null,orderby:"date",order:"DESC"},priority:20};a.filters[t]=n}})})}"uploadedTo"==e.library&&(delete a.filters.unattached,delete a.filters.uploaded,a.$el.parent().append(''+acf._e("image","uploadedTo")+""),$.each(a.filters,function(e,t){t.props.uploadedTo=i})),$.each(a.filters,function(t,i){i.props._acfuploader=e.field}),"function"==typeof a.refresh&&a.refresh()}),"function"==typeof e.select&&o.on("select",function(){var t=this,i=-1,a=o.state().get("selection");a&&a.each(function(a){i++,e.select.apply(t,[a,i])})}),o.on("close",function(){setTimeout(function(){o.detach(),o.dispose(),o=null,t.frames.pop()},500)}),"edit"==e.mode&&(o.on("open",function(){"browse"!=this.content.mode()&&this.content.mode("browse"),this.$el.closest(".media-modal").addClass("acf-media-modal acf-expanded");var t=this.state(),i=t.get("selection"),a=wp.media.attachment(e.id);i.add(a)},o),o.on("close",function(){o.$el.closest(".media-modal").removeClass("acf-media-modal")})),e.button&&o.on("toolbar:create:select",function(t){n={text:e.button,controller:this},t.view=new wp.media.view.Toolbar.Select(n)},o),setTimeout(function(){o.open()},1),o.acf=e,this.frames.push(o),o},ready:function(){var e=acf.get("wp_version"),t=acf.get("post_id");acf.isset(window,"wp","media","view","settings","post")&&$.isNumeric(t)&&(wp.media.view.settings.post.id=t),e&&("string"==typeof e&&(e=e.substr(0,1)),$("body").addClass("acf-wp-"+e)),acf.isset(window,"wp","media","view")&&(this.customize_Attachment(),this.customize_AttachmentFiltersAll(),this.customize_AttachmentCompat())},customize_Attachment:function(){var e=wp.media.view.Attachment.Library;wp.media.view.Attachment.Library=e.extend({render:function(){var t=acf.media.frame(),i=acf.maybe_get(this,"model.attributes.acf_errors");return t&&i&&this.$el.addClass("acf-disabled"),e.prototype.render.apply(this,arguments)},toggleSelection:function(t){var i=acf.media.frame(),a=acf.maybe_get(this,"model.attributes.acf_errors"),n=this.controller.$el.find(".media-frame-content .media-sidebar");if(n.children(".acf-selection-error").remove(),n.children().removeClass("acf-hidden"),i&&a){var s=acf.maybe_get(this,"model.attributes.filename","");n.children().addClass("acf-hidden"),n.prepend(['
',''+acf._e("restricted")+"",''+s+"",''+a+"","
"].join(""))}e.prototype.toggleSelection.apply(this,arguments)},select:function(t,i){var a=acf.media.frame(),n=this.controller.state(),s=n.get("selection"),o=acf.maybe_get(this,"model.attributes.acf_errors");return a&&o?s.remove(t):e.prototype.select.apply(this,arguments)}})},customize_AttachmentFiltersAll:function(){wp.media.view.AttachmentFilters.All.prototype.refresh=function(){this.$el.html(_.chain(this.filters).map(function(e,t){return{el:$("").val(t).html(e.text)[0],priority:e.priority||50}},this).sortBy("priority").pluck("el").value())}},customize_AttachmentCompat:function(){var e=wp.media.view.AttachmentCompat.prototype;e.render2=e.render,e.dispose2=e.dispose,e.render=function(){var e=this;return this.ignore_render?this:(this.render2(),setTimeout(function(){var t=e.$el.closest(".media-modal");if(!t.hasClass("acf-media-modal")&&!t.find(".media-frame-router .acf-expand-details").exists()){var i=$(['',''+acf._e("expand_details")+"",''+acf._e("collapse_details")+"",""].join(""));i.on("click",function(e){e.preventDefault(),t.hasClass("acf-expanded")?t.removeClass("acf-expanded"):t.addClass("acf-expanded")}),t.find(".media-frame-router").append(i)}},0),clearTimeout(acf.media.render_timout),acf.media.render_timout=setTimeout(function(){acf.do_action("append",e.$el)},50),this)},e.dispose=function(){acf.do_action("remove",this.$el),this.dispose2()},e.save=function(e){e&&e.preventDefault();var t=acf.serialize_form(this.$el);this.ignore_render=!0,this.model.saveCompat(t)}}})}(jQuery),function($){acf.fields.oembed={search:function(e){var t=e.find('[data-name="search-input"]').val();"http"!=t.substr(0,4)&&(t="http://"+t,e.find('[data-name="search-input"]').val(t)),e.addClass("is-loading");var i={action:"acf/fields/oembed/search",nonce:acf.get("nonce"),s:t,width:acf.get_data(e,"width"),height:acf.get_data(e,"height")};e.data("xhr")&&e.data("xhr").abort();var a=$.ajax({url:acf.get("ajaxurl"),data:i,type:"post",dataType:"html",success:function(i){e.removeClass("is-loading"),acf.fields.oembed.search_success(e,t,i),i||acf.fields.oembed.search_error(e)}});e.data("xhr",a)},search_success:function(e,t,i){e.removeClass("has-error").addClass("has-value"),e.find('[data-name="value-input"]').val(t),e.find('[data-name="value-title"]').html(t),e.find('[data-name="value-embed"]').html(i)},search_error:function(e){e.removeClass("has-value").addClass("has-error")},clear:function(e){e.removeClass("has-error has-value"),e.find('[data-name="search-input"]').val(""),e.find('[data-name="value-input"]').val(""),e.find('[data-name="value-title"]').html(""),e.find('[data-name="value-embed"]').html("")},edit:function(e){e.addClass("is-editing");var t=e.find('[data-name="value-title"]').text();e.find('[data-name="search-input"]').val(t).focus()},blur:function(e){e.removeClass("is-editing");var t=e.find('[data-name="value-title"]').text(),i=e.find('[data-name="search-input"]').val(),a=e.find('[data-name="value-embed"]').html();return i?void(i!=t&&this.search(e)):void this.clear(e)}},$(document).on("click",'.acf-oembed [data-name="search-button"]',function(e){e.preventDefault(),acf.fields.oembed.search($(this).closest(".acf-oembed")),$(this).blur()}),$(document).on("click",'.acf-oembed [data-name="clear-button"]',function(e){e.preventDefault(),acf.fields.oembed.clear($(this).closest(".acf-oembed")),$(this).blur()}),$(document).on("click",'.acf-oembed [data-name="value-title"]',function(e){e.preventDefault(),acf.fields.oembed.edit($(this).closest(".acf-oembed"))}),$(document).on("keypress",'.acf-oembed [data-name="search-input"]',function(e){13==e.which&&e.preventDefault()}),$(document).on("keyup",'.acf-oembed [data-name="search-input"]',function(e){$(this).val()&&e.which&&acf.fields.oembed.search($(this).closest(".acf-oembed"))}),$(document).on("blur",'.acf-oembed [data-name="search-input"]',function(e){acf.fields.oembed.blur($(this).closest(".acf-oembed"))})}(jQuery),function($){acf.fields.radio=acf.field.extend({type:"radio",$selected:null,$other:null,actions:{ready:"render",append:"render"},events:{'change input[type="radio"]':"render"},focus:function(){this.$selected=this.$field.find('input[type="radio"]:checked'),this.$other=this.$field.find('input[type="text"]')},render:function(){"other"===this.$selected.val()?this.$other.removeAttr("disabled").attr("name",this.$selected.attr("name")):this.$other.attr("disabled","disabled").attr("name","")}})}(jQuery),function($){acf.fields.relationship=acf.field.extend({type:"relationship",$el:null,$input:null,$filters:null,$choices:null,$values:null,actions:{ready:"initialize",append:"initialize"},events:{"keypress [data-filter]":"submit_filter","change [data-filter]":"change_filter","keyup [data-filter]":"change_filter","click .choices .acf-rel-item":"add_item",'click [data-name="remove_item"]':"remove_item"},focus:function(){this.$el=this.$field.find(".acf-relationship"),this.$input=this.$el.find(".acf-hidden input"),this.$choices=this.$el.find(".choices"),this.$values=this.$el.find(".values"),this.o=acf.get_data(this.$el)},initialize:function(){var e=this,t=this.$field,i=this.$el,a=this.$input;this.$values.children(".list").sortable({items:"li",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,update:function(){a.trigger("change")}}),this.$choices.children(".list").scrollTop(0).on("scroll",function(a){if(!i.hasClass("is-loading")&&!i.hasClass("is-empty")&&Math.ceil($(this).scrollTop())+$(this).innerHeight()>=$(this).get(0).scrollHeight){var n=i.data("paged")||1;i.data("paged",n+1),e.doFocus(t),e.fetch()}}),this.fetch()},maybe_fetch:function(){var e=this,t=this.$field;this.o.timeout&&clearTimeout(this.o.timeout);var i=setTimeout(function(){e.doFocus(t),e.fetch()},400);this.$el.data("timeout",i)},fetch:function(){var e=this,t=this.$field;this.$el.addClass("is-loading"),this.o.xhr&&(this.o.xhr.abort(),this.o.xhr=!1),this.o.action="acf/fields/relationship/query",this.o.field_key=t.data("key"),this.o.post_id=acf.get("post_id");var i=acf.prepare_for_ajax(this.o);1==i.paged&&this.$choices.children(".list").html(""),this.$choices.find("ul:last").append('

'+acf._e("relationship","loading")+"

");var a=$.ajax({url:acf.get("ajaxurl"),dataType:"json",type:"post",data:i,success:function(i){e.doFocus(t),e.render(i)}});this.$el.data("xhr",a)},render:function(e){if(this.$el.removeClass("is-loading is-empty"),this.$choices.find("p").remove(),!e||!e.length)return this.$el.addClass("is-empty"),void(1==this.o.paged&&this.$choices.children(".list").append("

"+acf._e("relationship","empty")+"

"));var t=$(this.walker(e));if(this.$values.find(".acf-rel-item").each(function(){t.find('.acf-rel-item[data-id="'+$(this).data("id")+'"]').addClass("disabled")}),this.o.s){var i=this.o.s;t.find(".acf-rel-item").each(function(){var e=$(this).text(),t=e.replace(new RegExp("("+i+")","gi"),"$1");$(this).html($(this).html().replace(e,t))})}this.$choices.children(".list").append(t);var a="",n=null;this.$choices.find(".acf-rel-label").each(function(){return $(this).text()==a?(n.append($(this).siblings("ul").html()),void $(this).parent().remove()):(a=$(this).text(),void(n=$(this).siblings("ul")))})},walker:function(e){var t="";if($.isArray(e))for(var i in e)t+=this.walker(e[i]);else $.isPlainObject(e)&&(void 0!==e.children?(t+='
  • '+e.text+'
      ',t+=this.walker(e.children),t+="
  • "):t+='
  • '+e.text+"
  • ");return t},submit_filter:function(e){13==e.which&&e.preventDefault()},change_filter:function(e){var t=e.$el.val(),i=e.$el.data("filter");this.$el.data(i)!=t&&(this.$el.data(i,t),this.$el.data("paged",1),e.$el.is("select")?this.fetch():this.maybe_fetch())},add_item:function(e){if(this.o.max>0&&this.$values.find(".acf-rel-item").length>=this.o.max)return void alert(acf._e("relationship","max").replace("{max}",this.o.max));if(e.$el.hasClass("disabled"))return!1;e.$el.addClass("disabled");var t=["
  • ",'',''+e.$el.html(),'',"","
  • "].join("");this.$values.children(".list").append(t),this.$input.trigger("change"),acf.validation.remove_error(this.$field)},remove_item:function(e){var t=e.$el.parent(),i=t.data("id");t.parent("li").remove(),this.$choices.find('.acf-rel-item[data-id="'+i+'"]').removeClass("disabled"),this.$input.trigger("change")}})}(jQuery),function($){acf.select2=acf.model.extend({init:function(e,t){var i=this.version();if(i)return t=$.extend({allow_null:!1,placeholder:"",multiple:!1,ajax:!1,action:"",pagination:!1},t),3==i?this.init_v3(e,t):this.init_v4(e,t)},version:function(){return acf.maybe_get(window,"Select2")?3:acf.maybe_get(window,"jQuery.fn.select2.amd")?4:0},get_data:function(e,t){var i=this;return t=t||[],e.children().each(function(){var e=$(this);e.is("optgroup")?t.push({text:e.attr("label"),children:i.get_data(e)}):t.push({id:e.attr("value"),text:e.text()})}),t},decode_data:function(e){return e?($.each(e,function(t,i){e[t].text=acf.decode(i.text),"undefined"!=typeof i.children&&(e[t].children=acf.select2.decode_data(i.children))}),e):[]},count_data:function(e){var t=0;return e?($.each(e,function(e,i){t++,"undefined"!=typeof i.children&&(t+=i.children.length)}),t):t},get_value:function(e){var t=[],i=e.find("option:selected");return i.exists()?(i=i.sort(function(e,t){return+e.getAttribute("data-i")-+t.getAttribute("data-i")}),i.each(function(){var e=$(this);t.push({id:e.attr("value"),text:e.text()})}),t):t},init_v3:function(e,t){var i=e.siblings("input");if(i.exists()){var a={width:"100%",containerCssClass:"-acf",allowClear:t.allow_null,placeholder:t.placeholder,multiple:t.multiple,separator:"||",data:[],escapeMarkup:function(e){return e}},n=this.get_value(e);if(t.multiple){var s=e.attr("name");a.formatSelection=function(e,t){return t.parent().append(''),e.text}}else n=acf.maybe_get(n,0,"");t.allow_null&&e.find('option[value=""]').remove(),a.data=this.get_data(e),a.initSelection=function(e,t){t(n)},t.ajax&&(a.ajax={url:acf.get("ajaxurl"),dataType:"json",type:"post",cache:!1,data:function(e,i){var a=acf.prepare_for_ajax({action:t.action,field_key:t.key,post_id:acf.get("post_id"),s:e,paged:i});return a},results:function(e,t){return{results:acf.select2.decode_data(e)}}},t.pagination&&(a.ajax.results=function(e,t){return{results:acf.select2.decode_data(e),more:acf.select2.count_data(e)>=20}},i.on("select2-loaded",function(e){var t="",i=null;$("#select2-drop .select2-result-with-children").each(function(){var e=$(this).children(".select2-result-label"),a=$(this).children(".select2-result-sub");return e.text()==t?(i.append(a.children()),void $(this).remove()):(t=e.text(),void(i=a))})}))),a.dropdownCss={"z-index":"999999999"},a=acf.apply_filters("select2_args",a,e,t),i.select2(a);var o=i.select2("container");o.before(e),o.before(i),t.multiple&&o.find("ul.select2-choices").sortable({start:function(){i.select2("onSortStart")},stop:function(){i.select2("onSortEnd")}}),e.prop("disabled",!0).addClass("acf-disabled acf-hidden")}},init_v4:function(e,t){var i=e.siblings("input");if(i.exists()){var a={width:"100%",containerCssClass:"-acf",allowClear:t.allow_null,placeholder:t.placeholder,multiple:t.multiple,separator:"||",data:[],escapeMarkup:function(e){return e}},n=this.get_value(e);t.multiple||(n=acf.maybe_get(n,0,"")),t.allow_null&&e.find('option[value=""]').remove(),a.data=this.get_data(e),a.initSelection=function(e,t){t(n)},t.ajax?(a.ajax={url:acf.get("ajaxurl"),delay:250,dataType:"json",type:"post",cache:!1,data:function(e){var i=acf.prepare_for_ajax({action:t.action,field_key:t.key,post_id:acf.get("post_id"),s:e.term,paged:e.page});return i},processResults:function(e,t){return{results:acf.select2.decode_data(e)}}},t.pagination&&(a.ajax.processResults=function(e,t){return setTimeout(function(){var e=null,t=null;$('.select2-results__option[role="group"]').each(function(){var i=$(this).children("ul"),a=$(this).children("strong");return null!==t&&a.text()==t.text()?(e.append(i.children()),void $(this).remove()):(e=i,void(t=a))})},1),{results:acf.select2.decode_data(e),pagination:{more:acf.select2.count_data(e)>=20}}})):(e.removeData("ajax"),e.removeAttr("data-ajax")),a.dropdownCss={"z-index":"999999999"},a=acf.apply_filters("select2_args",a,e,t);var s=e.select2(a)}},destroy:function(e){e.siblings(".select2-container").remove(),e.siblings("input").show(),e.prop("disabled",!1).removeClass("acf-disabled acf-hidden")}}),acf.add_select2=function(e,t){acf.select2.init(e,t)},acf.remove_select2=function(e){acf.select2.destroy(e)},acf.fields.select=acf.field.extend({type:"select",pagination:!1,$select:null,actions:{ready:"render",append:"render",remove:"remove"},focus:function(){this.$select=this.$field.find("select"),this.$select.exists()&&(this.o=acf.get_data(this.$select),this.o.pagination=this.pagination,this.o.key=this.$field.data("key"),this.o.action="acf/fields/"+this.type+"/query")},render:function(){return this.$select.exists()&&this.o.ui?void acf.select2.init(this.$select,this.o):!1},remove:function(){return this.$select.exists()&&this.o.ui?void acf.select2.destroy(this.$select):!1}}),acf.fields.user=acf.fields.select.extend({type:"user",pagination:!0}),acf.fields.post_object=acf.fields.select.extend({type:"post_object",pagination:!0}),acf.fields.page_link=acf.fields.select.extend({type:"page_link",pagination:!0})}(jQuery),function($){acf.fields.tab=acf.field.extend({type:"tab",$el:null,$wrap:null,actions:{prepare:"initialize",append:"initialize",hide:"hide",show:"show"},focus:function(){this.$el=this.$field.find(".acf-tab"),this.o=this.$el.data(),this.o.key=this.$field.data("key"),this.o.text=this.$el.text()},initialize:function(){this.$field.is("td")||e.add_tab(this.$field,this.o)},hide:function(e,t){if("conditional_logic"==t){var i=e.data("key"),a=e.prevAll(".acf-tab-wrap"),n=a.find('a[data-key="'+i+'"]'),s=n.parent();a.exists()&&(s.addClass("hidden-by-conditional-logic"),setTimeout(function(){e.nextUntil(".acf-field-tab",".acf-field").each(function(){$(this).hasClass("hidden-by-conditional-logic")||(acf.conditional_logic.hide_field($(this)),$(this).addClass("-hbcl-"+i))}),s.hasClass("active")&&a.find("li:not(.hidden-by-conditional-logic):first a").trigger("click")},0))}},show:function(e,t){if("conditional_logic"==t){var i=e.data("key"),a=e.prevAll(".acf-tab-wrap"),n=a.find('a[data-key="'+i+'"]'),s=n.parent();a.exists()&&(s.removeClass("hidden-by-conditional-logic"),setTimeout(function(){e.siblings(".acf-field.-hbcl-"+i).each(function(){acf.conditional_logic.show_field($(this)),$(this).removeClass("-hbcl-"+i)});var t=s.siblings(".active");(!t.exists()||t.hasClass("hidden-by-conditional-logic"))&&n.trigger("click")},0))}}});var e=acf.model.extend({actions:{"prepare 15":"render","append 15":"render","refresh 15":"render"},events:{"click .acf-tab-button":"_click"},render:function(e){$(".acf-tab-wrap",e).each(function(){var e=$(this),t=e.parent();if(e.find("li.active").exists()||e.find("li:not(.hidden-by-conditional-logic):first a").trigger("click"),t.hasClass("-sidebar")){var i=t.is("td")?"height":"min-height",a=e.position().top+e.children("ul").outerHeight(!0)-1;t.css(i,a)}})},add_group:function(e,t){var i=e.parent(),a="";return i.hasClass("acf-fields")&&"left"==t.placement?i.addClass("-sidebar"):t.placement="top",a=i.is("tbody")?'
      ':'
        ',$group=$(a),e.before($group),$group},add_tab:function(e,t){var i=e.siblings(".acf-tab-wrap").last();i.exists()?t.endpoint&&(i=this.add_group(e,t)):i=this.add_group(e,t);var a=$('
      • '+t.text+"
      • ");""===t.text&&a.hide(),i.find("ul").append(a),e.hasClass("hidden-by-conditional-logic")&&a.addClass("hidden-by-conditional-logic")},_click:function(e){e.preventDefault();var t=this,i=e.$el,a=i.closest(".acf-tab-wrap"),n=i.data("key"),s="";i.parent().addClass("active").siblings().removeClass("active"),a.nextUntil(".acf-tab-wrap",".acf-field").each(function(){var e=$(this);return"tab"==e.data("type")&&(s=e.data("key"),e.hasClass("endpoint"))?!1:void(s===n?e.hasClass("hidden-by-tab")&&(e.removeClass("hidden-by-tab"),acf.do_action("show_field",$(this),"tab")):e.hasClass("hidden-by-tab")||(e.addClass("hidden-by-tab"),acf.do_action("hide_field",$(this),"tab")))}),acf.do_action("refresh",a.parent()),i.trigger("blur")}}),t=acf.model.extend({active:1,actions:{add_field_error:"add_field_error"},add_field_error:function(e){if(this.active&&e.hasClass("hidden-by-tab")){var t=this,i=e.prevAll(".acf-field-tab:first"),a=e.prevAll(".acf-tab-wrap:first");a.find('a[data-key="'+i.data("key")+'"]').trigger("click"),this.active=0,setTimeout(function(){t.active=1},1e3)}}})}(jQuery),function($){acf.fields.taxonomy=acf.field.extend({type:"taxonomy",$el:null,actions:{ready:"render",append:"render",remove:"remove"},events:{'click a[data-name="add"]':"add_term"},focus:function(){this.$el=this.$field.find(".acf-taxonomy-field"),this.o=acf.get_data(this.$el),this.o.key=this.$field.data("key")},render:function(){var e=this.$field.find("select");if(!e.exists())return!1;var t=acf.get_data(e);t.pagination=!0,t.key=this.o.key,t.action="acf/fields/taxonomy/query",acf.select2.init(e,t)},remove:function(){var e=this.$field.find("select");return e.exists()?void acf.select2.destroy(e):!1},add_term:function(e){var t=this;acf.open_popup({title:e.$el.attr("title")||e.$el.data("title"),loading:!0,height:220});var i=acf.prepare_for_ajax({action:"acf/fields/taxonomy/add_term",field_key:this.o.key});$.ajax({url:acf.get("ajaxurl"),data:i,type:"post",dataType:"html",success:function(e){t.add_term_confirm(e)}})},add_term_confirm:function(e){var t=this;acf.update_popup({content:e}),$('#acf-popup input[name="term_name"]').focus(),$("#acf-popup form").on("submit",function(e){e.preventDefault(),t.add_term_submit($(this))})},add_term_submit:function(e){var t=this,i=e.find(".acf-submit"),a=e.find('input[name="term_name"]'),n=e.find('select[name="term_parent"]');if(""===a.val())return a.focus(),!1;i.find("button").attr("disabled","disabled"),i.find(".acf-spinner").addClass("is-active");var s=acf.prepare_for_ajax({action:"acf/fields/taxonomy/add_term",field_key:this.o.key,term_name:a.val(),term_parent:n.exists()?n.val():0});$.ajax({url:acf.get("ajaxurl"),data:s,type:"post",dataType:"json",success:function(e){var n=acf.get_ajax_message(e);acf.is_ajax_success(e)&&(a.val(""),t.append_new_term(e.data)),n.text&&i.find("span").html(n.text)},complete:function(){i.find("button").removeAttr("disabled"),i.find(".acf-spinner").removeClass("is-active"),i.find("span").delay(1500).fadeOut(250,function(){$(this).html(""),$(this).show()}),a.focus()}})},append_new_term:function(e){var t={id:e.term_id,text:e.term_label};switch($('.acf-taxonomy-field[data-taxonomy="'+this.o.taxonomy+'"]').each(function(){var t=$(this).data("type");if("radio"==t||"checkbox"==t){var i=$(this).children('input[type="hidden"]'),a=$(this).find("ul:first"),n=i.attr("name");"checkbox"==t&&(n+="[]");var s=$(['
      • ',"","
      • "].join(""));if(e.term_parent){var o=a.find('li[data-id="'+e.term_parent+'"]');a=o.children("ul"),a.exists()||(a=$('
          '),o.append(a))}a.append(s)}}),$("#acf-popup #term_parent").each(function(){var t=$('");e.term_parent?$(this).children('option[value="'+e.term_parent+'"]').after(t):$(this).append(t)}),this.o.type){case"select":this.$el.children("input").select2("data",t);break;case"multi_select":var i=this.$el.children("input"),a=i.select2("data")||[];a.push(t),i.select2("data",a);break;case"checkbox":case"radio":var n=this.$el.find(".categorychecklist-holder"),s=n.find('li[data-id="'+e.term_id+'"]'),o=n.get(0).scrollTop+(s.offset().top-n.offset().top);s.find("input").prop("checked",!0),n.animate({scrollTop:o},"250")}}})}(jQuery),function($){acf.fields.url=acf.field.extend({type:"url",$input:null,actions:{ready:"render",append:"render"},events:{'keyup input[type="url"]':"render"},focus:function(){this.$input=this.$field.find('input[type="url"]')},is_valid:function(){var e=this.$input.val();if(-1!==e.indexOf("://"));else if(0!==e.indexOf("//"))return!1;return!0},render:function(){this.is_valid()?this.$input.parent().addClass("valid"):this.$input.parent().removeClass("valid")}})}(jQuery),function($){acf.validation=acf.model.extend({actions:{ready:"ready",append:"ready"},filters:{validation_complete:"validation_complete"},events:{"click #save-post":"click_ignore",'click input[type="submit"]':"click_publish","submit form":"submit_form","click .acf-error-message a":"click_message"},active:1,ignore:0,busy:0,valid:!0,errors:[],error_class:"acf-error",message_class:"acf-error-message",$trigger:null,ready:function(e){e.find(".acf-field input").filter('[type="number"], [type="email"], [type="url"]').on("invalid",function(e){e.preventDefault(),acf.validation.errors.push({input:$(this).attr("name"),message:e.target.validationMessage}),acf.validation.fetch($(this).closest("form"))})},validation_complete:function(e,t){return this.errors&&this.errors.length>0&&(e.valid=0,e.errors=e.errors||[],e.errors=e.errors.concat(this.errors)),this.errors=[],e},click_message:function(e){e.preventDefault(),acf.remove_el(e.$el.parent())},click_ignore:function(e){this.ignore=1,this.$trigger=e.$el},click_publish:function(e){this.$trigger=e.$el},submit_form:function(e){if(!this.active)return!0;if(this.ignore)return this.ignore=0,!0;if(!e.$el.find("#acf-form-data").exists())return!0;var t=e.$el.find("#wp-preview");return t.exists()&&t.val()?(this.toggle(e.$el,"unlock"),!0):(e.preventDefault(),void this.fetch(e.$el))},toggle:function(e,t){t=t||"unlock";var i=null,a=null,n=$("#submitdiv");n.exists()||(n=$("#submitpost")),n.exists()||(n=e.find("p.submit").last()),n.exists()||(n=e.find(".acf-form-submit")),n.exists()||(n=e),i=n.find('input[type="submit"], .button'),a=n.find(".spinner, .acf-spinner"),this.hide_spinner(a),"unlock"==t?this.enable_submit(i):"lock"==t&&(this.disable_submit(i),this.show_spinner(a.last()))},fetch:function(e){if(this.busy)return!1;var t=this,i=acf.serialize_form(e,"acf");i.action="acf/validate_save_post",this.busy=1,this.toggle(e,"lock"),$.ajax({url:acf.get("ajaxurl"),data:i,type:"post",dataType:"json",success:function(i){acf.is_ajax_success(i)&&t.fetch_success(e,i.data)},complete:function(){t.fetch_complete(e)}})},fetch_complete:function(e){if(this.busy=0,this.toggle(e,"unlock"),this.valid){this.ignore=1;var t=e.children(".acf-error-message");t.exists()&&(t.removeClass("error"),t.children("p").html(acf._e("validation_successful"))),e.find(".acf-postbox.acf-hidden").remove(),acf.do_action("submit",e),this.$trigger?this.$trigger.click():e.submit(),this.toggle(e,"lock")}},fetch_success:function(e,t){if(t=acf.apply_filters("validation_complete",t,e),!t||t.valid||!t.errors)return void(this.valid=!0);this.valid=!1,this.$trigger=null;var i=null,a=0,n=acf._e("validation_failed");if(t.errors&&t.errors.length>0){for(var s in t.errors){var o=t.errors[s];if(o.input){var r=e.find('[name="'+o.input+'"]').first();if(r.exists()||(r=e.find('[name^="'+o.input+'"]').first()),r.exists()){a++;var l=acf.get_field_wrap(r);this.add_error(l,o.message),null===i&&(i=l)}}else n+=". "+o.message}1==a?n+=". "+acf._e("validation_failed_1"):a>1&&(n+=". "+acf._e("validation_failed_2").replace("%d",a))}var c=e.children(".acf-error-message");c.exists()||(c=$('

          '),e.prepend(c)),c.children("p").html(n),null===i&&(i=c),setTimeout(function(){$("html, body").animate({scrollTop:i.offset().top-$(window).height()/2},500)},1)},add_error:function(e,t){var i=this;e.addClass(this.error_class),void 0!==t&&(e.children(".acf-input").children("."+this.message_class).remove(),e.children(".acf-input").prepend('

          '+t+"

          "));var a=function(){i.remove_error(e),e.off("focus change","input, textarea, select",a)};e.on("focus change","input, textarea, select",a),acf.do_action("add_field_error",e)},remove_error:function(e){$message=e.children(".acf-input").children("."+this.message_class),e.removeClass(this.error_class),setTimeout(function(){acf.remove_el($message)},250),acf.do_action("remove_field_error",e)},add_warning:function(e,t){this.add_error(e,t),setTimeout(function(){acf.validation.remove_error(e)},1e3)},show_spinner:function(e){if(e.exists()){var t=acf.get("wp_version");parseFloat(t)>=4.2?e.addClass("is-active"):e.css("display","inline-block")}},hide_spinner:function(e){if(e.exists()){var t=acf.get("wp_version");parseFloat(t)>=4.2?e.removeClass("is-active"):e.css("display","none")}},disable_submit:function(e){e.exists()&&e.addClass("disabled button-disabled button-primary-disabled")},enable_submit:function(e){e.exists()&&e.removeClass("disabled button-disabled button-primary-disabled")}})}(jQuery),function($){acf.fields.wysiwyg=acf.field.extend({type:"wysiwyg",$el:null,$textarea:null,toolbars:{},actions:{ready:"initialize",append:"initialize",remove:"disable",sortstart:"disable",sortstop:"enable"},focus:function(){this.$el=this.$field.find(".wp-editor-wrap").last(),this.$textarea=this.$el.find("textarea"),this.o=acf.get_data(this.$el),this.o.id=this.$textarea.attr("id"); -},initialize:function(){if("undefined"==typeof tinyMCEPreInit||"undefined"==typeof tinymce)return!1;var e=this.o.id,t=acf.get_uniqid("acf-editor-"),i=this.$el.outerHTML();i=acf.str_replace(e,t,i),this.$el.replaceWith(i),this.o.id=t;var a=this.get_mceInit(),n=this.get_qtInit();if(tinyMCEPreInit.mceInit[a.id]=a,tinyMCEPreInit.qtInit[n.id]=n,this.$el.hasClass("tmce-active"))try{tinymce.init(a)}catch(s){}try{var o=quicktags(n);this._buttonsInit(o)}catch(s){}},get_mceInit:function(){var e=this.$field,t=this.get_toolbar(this.o.toolbar),i=$.extend({},tinyMCEPreInit.mceInit.acf_content);if(i.selector="#"+this.o.id,i.id=this.o.id,i.elements=this.o.id,t)for(var a=tinymce.majorVersion<4?"theme_advanced_buttons":"toolbar",n=1;5>n;n++)i[a+n]=acf.isset(t,n)?t[n]:"";return tinymce.majorVersion<4?i.setup=function(t){t.onInit.add(function(t,i){$(t.getBody()).on("focus",function(){acf.validation.remove_error(e)}),$(t.getBody()).on("blur",function(){t.save(),e.find("textarea").trigger("change")})})}:i.setup=function(t){t.on("focus",function(t){acf.validation.remove_error(e)}),t.on("blur",function(i){t.save(),e.find("textarea").trigger("change")})},i.wp_autoresize_on=!1,i=acf.apply_filters("wysiwyg_tinymce_settings",i,i.id)},get_qtInit:function(){var e=$.extend({},tinyMCEPreInit.qtInit.acf_content);return e.id=this.o.id,e=acf.apply_filters("wysiwyg_quicktags_settings",e,e.id)},disable:function(){try{var e=tinyMCE.get(this.o.id);e.save(),e.destroy()}catch(t){}},enable:function(){this.$el.hasClass("tmce-active")&&acf.isset(window,"switchEditors")&&switchEditors.go(this.o.id,"tmce")},get_toolbar:function(e){return"undefined"!=typeof this.toolbars[e]?this.toolbars[e]:!1},_buttonsInit:function(e){var t=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,";canvas=e.canvas,name=e.name,settings=e.settings,html="",theButtons={},use="",settings.buttons&&(use=","+settings.buttons+",");for(i in edButtons)edButtons[i]&&(id=edButtons[i].id,use&&-1!==t.indexOf(","+id+",")&&-1===use.indexOf(","+id+",")||edButtons[i].instance&&edButtons[i].instance!==inst||(theButtons[id]=edButtons[i],edButtons[i].html&&(html+=edButtons[i].html(name+"_"))));use&&-1!==use.indexOf(",fullscreen,")&&(theButtons.fullscreen=new qt.FullscreenButton,html+=theButtons.fullscreen.html(name+"_")),"rtl"===document.getElementsByTagName("html")[0].dir&&(theButtons.textdirection=new qt.TextDirectionButton,html+=theButtons.textdirection.html(name+"_")),e.toolbar.innerHTML=html,e.theButtons=theButtons}}),$(document).ready(function(){$("#wp-acf_content-wrap").exists()&&$("#wp-acf_content-wrap").parent().appendTo("body")})}(jQuery); +!function(e,t){"use strict";var i=function(){function e(){return u}function t(e,t,i,a){return"string"==typeof e&&"function"==typeof t&&(i=parseInt(i||10,10),l("actions",e,t,i,a)),f}function i(){var e=Array.prototype.slice.call(arguments),t=e.shift();return"string"==typeof t&&d("actions",t,e),f}function a(e,t){return"string"==typeof e&&r("actions",e,t),f}function n(e,t,i,a){return"string"==typeof e&&"function"==typeof t&&(i=parseInt(i||10,10),l("filters",e,t,i,a)),f}function s(){var e=Array.prototype.slice.call(arguments),t=e.shift();return"string"==typeof t?d("filters",t,e):f}function o(e,t){return"string"==typeof e&&r("filters",e,t),f}function r(e,t,i,a){if(u[e][t])if(i){var n=u[e][t],s;if(a)for(s=n.length;s--;){var o=n[s];o.callback===i&&o.context===a&&n.splice(s,1)}else for(s=n.length;s--;)n[s].callback===i&&n.splice(s,1)}else u[e][t]=[]}function l(e,t,i,a,n){var s={callback:i,priority:a,context:n},o=u[e][t];o?(o.push(s),o=c(o)):o=[s],u[e][t]=o}function c(e){for(var t,i,a,n=1,s=e.length;s>n;n++){for(t=e[n],i=n;(a=e[i-1])&&a.priority>t.priority;)e[i]=e[i-1],--i;e[i]=t}return e}function d(e,t,i){var a=u[e][t];if(!a)return"filters"===e?i[0]:!1;var n=0,s=a.length;if("filters"===e)for(;s>n;n++)i[0]=a[n].callback.apply(a[n].context,i);else for(;s>n;n++)a[n].callback.apply(a[n].context,i);return"filters"===e?i[0]:!0}var f={removeFilter:o,applyFilters:s,addFilter:n,removeAction:a,doAction:i,addAction:t,storage:e},u={actions:{},filters:{}};return f};e.wp=e.wp||{},e.wp.hooks=new i}(window);var acf;!function($){$.fn.exists=function(){return $(this).length>0},$.fn.outerHTML=function(){return $(this).get(0).outerHTML},acf={l10n:{},o:{},update:function(e,t){this.o[e]=t},get:function(e){return"undefined"!=typeof this.o[e]?this.o[e]:null},_e:function(e,t){t=t||!1;var i=this.l10n[e]||"";return t&&(i=i[t]||""),i},add_action:function(){for(var e=arguments[0].split(" "),t=e.length,i=0;t>i;i++)arguments[0]="acf/"+e[i],wp.hooks.addAction.apply(this,arguments);return this},remove_action:function(){return arguments[0]="acf/"+arguments[0],wp.hooks.removeAction.apply(this,arguments),this},do_action:function(){return arguments[0]="acf/"+arguments[0],wp.hooks.doAction.apply(this,arguments),this},add_filter:function(){return arguments[0]="acf/"+arguments[0],wp.hooks.addFilter.apply(this,arguments),this},remove_filter:function(){return arguments[0]="acf/"+arguments[0],wp.hooks.removeFilter.apply(this,arguments),this},apply_filters:function(){return arguments[0]="acf/"+arguments[0],wp.hooks.applyFilters.apply(this,arguments)},get_selector:function(e){e=e||"";var t=".acf-field";if($.isPlainObject(e))if($.isEmptyObject(e))e="";else for(k in e){e=e[k];break}return e&&(t+="-"+e,t=t.split("_").join("-"),t=t.split("field-field-").join("field-")),t},get_fields:function(e,t,i){e=e||"",t=t||!1,i=i||!1;var a=this.get_selector(e),n=$(a,t);return t!==!1&&t.each(function(){$(this).is(a)&&(n=n.add($(this)))}),i||(n=acf.apply_filters("get_fields",n)),n},get_field:function(e,t){e=e||"",t=t||!1;var i=this.get_fields(e,t,!0);return i.exists()?i.first():!1},get_closest_field:function(e,t){return t=t||"",e.closest(this.get_selector(t))},get_field_wrap:function(e){return e.closest(this.get_selector())},get_field_key:function(e){return e.data("key")},get_field_type:function(e){return e.data("type")},get_data:function(e,t){return"undefined"==typeof t?e.data():e.data(t)},get_uniqid:function(e,t){"undefined"==typeof e&&(e="");var i,a=function(e,t){return e=parseInt(e,10).toString(16),te.length?Array(1+(t-e.length)).join("0")+e:e};return this.php_js||(this.php_js={}),this.php_js.uniqidSeed||(this.php_js.uniqidSeed=Math.floor(123456789*Math.random())),this.php_js.uniqidSeed++,i=e,i+=a(parseInt((new Date).getTime()/1e3,10),8),i+=a(this.php_js.uniqidSeed,5),t&&(i+=(10*Math.random()).toFixed(8).toString()),i},serialize_form:function(e){var t={},i={};return $selector=e.find("select, textarea, input"),$.each($selector.serializeArray(),function(e,a){"[]"===a.name.slice(-2)&&(a.name=a.name.replace("[]",""),"undefined"==typeof i[a.name]&&(i[a.name]=-1),i[a.name]++,a.name+="["+i[a.name]+"]"),t[a.name]=a.value}),t},serialize:function(e){return this.serialize_form(e)},remove_tr:function(e,t){var i=e.height(),a=e.children().length;e.addClass("acf-remove-element"),setTimeout(function(){e.removeClass("acf-remove-element"),e.html(''),e.children("td").animate({height:0},250,function(){e.remove(),"function"==typeof t&&t()})},250)},remove_el:function(e,t,i){i=i||0,e.css({height:e.height(),width:e.width(),position:"absolute"}),e.wrap('
          '),e.animate({opacity:0},250),e.parent(".acf-temp-wrap").animate({height:i},250,function(){$(this).remove(),"function"==typeof t&&t()})},isset:function(){var e=arguments,t=e.length,a=null,n;if(0===t)throw new Error("Empty isset");for(a=e[0],i=1;i #acf-popup"),$popup.exists())return update_popup(e);var t=['
          ','
          ','

          ','
          ','
          ',"
          ",'
          ',"
          "].join("");return $("body").append(t),$("#acf-popup").on("click",".bg, .acf-close-popup",function(e){e.preventDefault(),acf.close_popup()}),this.update_popup(e)},update_popup:function(e){return $popup=$("#acf-popup"),$popup.exists()?(e=$.extend({},{title:"",content:"",width:0,height:0,loading:!1},e),e.title&&$popup.find(".title h3").html(e.title),e.content&&($inner=$popup.find(".inner:first"),$inner.html(e.content),acf.do_action("append",$inner),$inner.attr("style","position: relative;"),e.height=$inner.outerHeight(),$inner.removeAttr("style")),e.width&&$popup.find(".acf-popup-box").css({width:e.width,"margin-left":0-e.width/2}),e.height&&(e.height+=44,$popup.find(".acf-popup-box").css({height:e.height,"margin-top":0-e.height/2})),e.loading?$popup.find(".loading").show():$popup.find(".loading").hide(),$popup):!1},close_popup:function(){$popup=$("#acf-popup"),$popup.exists()&&$popup.remove()},update_user_setting:function(e,t){$.ajax({url:acf.get("ajaxurl"),dataType:"html",type:"post",data:acf.prepare_for_ajax({action:"acf/update_user_setting",name:e,value:t})})},prepare_for_ajax:function(e){return e.nonce=acf.get("nonce"),e=acf.apply_filters("prepare_for_ajax",e)},is_ajax_success:function(e){return e&&e.success?!0:!1},get_ajax_message:function(e){var t={text:"",type:"error"};return e?(e.success&&(t.type="success"),e.data&&e.data.message&&(t.text=e.data.message),e.data&&e.data.error&&(t.text=e.data.error),t):t},is_in_view:function(e){var t=e.offset().top,i=t+e.height();if(t===i)return!1;var a=$(window).scrollTop(),n=a+$(window).height();return n>=i&&t>=a},val:function(e,t){var i=e.val();e.val(t),t!=i&&e.trigger("change")},str_replace:function(e,t,i){return i.split(e).join(t)},str_sanitize:function(e){var t="",a={"æ":"a","å":"a","á":"a","ä":"a","č":"c","ď":"d","è":"e","é":"e","ě":"e","ë":"e","í":"i","ĺ":"l","ľ":"l","ň":"n","ø":"o","ó":"o","ô":"o","ő":"o","ö":"o","ŕ":"r","š":"s","ť":"t","ú":"u","ů":"u","ű":"u","ü":"u","ý":"y","ř":"r","ž":"z"," ":"_","'":"","?":"","/":"","\\":"",".":"",",":"",">":"","<":"",'"':"","[":"","]":"","|":"","{":"","}":"","(":"",")":""};for(e=e.toLowerCase(),i=0;i'),e.append(n))),n.append('"),i==a.value&&e.prop("selectedIndex",t)})},duplicate:function(e,t){t=t||"data-id",find=e.attr(t),replace=acf.get_uniqid(),acf.do_action("before_duplicate",e);var i=e.clone();return i.removeClass("acf-clone"),acf.do_action("remove",i),"undefined"!=typeof find&&(i.attr(t,replace),i.find('[id*="'+find+'"]').each(function(){$(this).attr("id",$(this).attr("id").replace(find,replace))}),i.find('[name*="'+find+'"]').each(function(){$(this).attr("name",$(this).attr("name").replace(find,replace))})),i.find(".ui-sortable").removeClass("ui-sortable"),acf.do_action("after_duplicate",e,i),e.after(i),setTimeout(function(){acf.do_action("append",i)},1),i},decode:function(e){return $("
          ").html(e).text()}},acf.model={actions:{},filters:{},events:{},extend:function(e){var t=$.extend({},this,e);return $.each(t.actions,function(e,i){t._add_action(e,i)}),$.each(t.filters,function(e,i){t._add_filter(e,i)}),$.each(t.events,function(e,i){t._add_event(e,i)}),t},_add_action:function(e,t){var i=this,a=e.split(" "),e=a[0]||"",n=a[1]||10;acf.add_action(e,i[t],n,i)},_add_filter:function(e,t){var i=this,a=e.split(" "),e=a[0]||"",n=a[1]||10;acf.add_filter(e,i[t],n,i)},_add_event:function(e,t){var i=this,a=e.substr(0,e.indexOf(" ")),n=e.substr(e.indexOf(" ")+1);$(document).on(a,n,function(e){e.$el=$(this),"function"==typeof i.event&&(e=i.event(e)),i[t].apply(i,[e])})},get:function(e,t){return t=t||null,"undefined"!=typeof this[e]&&(t=this[e]),t},set:function(e,t){return this[e]=t,"function"==typeof this["_set_"+e]&&this["_set_"+e].apply(this),this}},acf.field=acf.model.extend({type:"",o:{},$field:null,_add_action:function(e,t){var i=this;e=e+"_field/type="+i.type,acf.add_action(e,function(e){i.set("$field",e),i[t].apply(i,arguments)})},_add_filter:function(e,t){var i=this;e=e+"_field/type="+i.type,acf.add_filter(e,function(e){i.set("$field",e),i[t].apply(i,arguments)})},_add_event:function(e,t){var i=this,a=e.substr(0,e.indexOf(" ")),n=e.substr(e.indexOf(" ")+1),s=acf.get_selector(i.type);$(document).on(a,s+" "+n,function(e){e.$el=$(this),e.$field=acf.get_closest_field(e.$el,i.type),i.set("$field",e.$field),i[t].apply(i,[e])})},_set_$field:function(){"function"==typeof this.focus&&this.focus()},doFocus:function(e){return this.set("$field",e)}}),acf.fields=acf.model.extend({actions:{prepare:"_prepare",prepare_field:"_prepare_field",ready:"_ready",ready_field:"_ready_field",append:"_append",append_field:"_append_field",load:"_load",load_field:"_load_field",remove:"_remove",remove_field:"_remove_field",sortstart:"_sortstart",sortstart_field:"_sortstart_field",sortstop:"_sortstop",sortstop_field:"_sortstop_field",show:"_show",show_field:"_show_field",hide:"_hide",hide_field:"_hide_field"},_prepare:function(e){acf.get_fields("",e).each(function(){acf.do_action("prepare_field",$(this))})},_prepare_field:function(e){acf.do_action("prepare_field/type="+e.data("type"),e)},_ready:function(e){acf.get_fields("",e).each(function(){acf.do_action("ready_field",$(this))})},_ready_field:function(e){acf.do_action("ready_field/type="+e.data("type"),e)},_append:function(e){acf.get_fields("",e).each(function(){acf.do_action("append_field",$(this))})},_append_field:function(e){acf.do_action("append_field/type="+e.data("type"),e)},_load:function(e){acf.get_fields("",e).each(function(){acf.do_action("load_field",$(this))})},_load_field:function(e){acf.do_action("load_field/type="+e.data("type"),e)},_remove:function(e){acf.get_fields("",e).each(function(){acf.do_action("remove_field",$(this))})},_remove_field:function(e){acf.do_action("remove_field/type="+e.data("type"),e)},_sortstart:function(e,t){acf.get_fields("",e).each(function(){acf.do_action("sortstart_field",$(this),t)})},_sortstart_field:function(e,t){acf.do_action("sortstart_field/type="+e.data("type"),e,t)},_sortstop:function(e,t){acf.get_fields("",e).each(function(){acf.do_action("sortstop_field",$(this),t)})},_sortstop_field:function(e,t){acf.do_action("sortstop_field/type="+e.data("type"),e,t)},_hide:function(e,t){acf.get_fields("",e).each(function(){acf.do_action("hide_field",$(this),t)})},_hide_field:function(e,t){acf.do_action("hide_field/type="+e.data("type"),e,t)},_show:function(e,t){acf.get_fields("",e).each(function(){acf.do_action("show_field",$(this),t)})},_show_field:function(e,t){acf.do_action("show_field/type="+e.data("type"),e,t)}}),$(document).ready(function(){acf.do_action("ready",$("body"))}),$(window).load(function(){acf.do_action("load",$("body"))}),acf.layout=acf.model.extend({active:0,actions:{refresh:"refresh"},refresh:function(e){e=e||!1,$(".acf-fields:visible",e).each(function(){var e=$(),t=0,i=0,a=-1,n=$(this).children(".acf-field[data-width]:visible");n.exists()&&(n.removeClass("acf-r0 acf-c0").css({"min-height":0}),n.each(function(n){var s=$(this),o=s.position().top;0==n&&(t=o),o!=t&&(e.css({"min-height":i+1+"px"}),e=$(),t=s.position().top,i=0,a=-1),a++,i=s.outerHeight()>i?s.outerHeight():i,e=e.add(s),0==o?s.addClass("acf-r0"):0==a&&s.addClass("acf-c0")}),e.exists()&&e.css({"min-height":i+1+"px"}))})}}),$(document).on("change",".acf-field input, .acf-field textarea, .acf-field select",function(){$('#acf-form-data input[name="_acfchanged"]').exists()&&$('#acf-form-data input[name="_acfchanged"]').val(1),acf.do_action("change",$(this))}),$(document).on("click",'.acf-field a[href="#"]',function(e){e.preventDefault()}),acf.unload=acf.model.extend({active:1,changed:0,filters:{validation_complete:"validation_complete"},actions:{change:"on",submit:"off"},events:{"submit form":"off"},validation_complete:function(e,t){return e&&e.errors&&this.on(),e},on:function(){!this.changed&&this.active&&(this.changed=1,$(window).on("beforeunload",this.unload))},off:function(){this.changed=0,$(window).off("beforeunload",this.unload)},unload:function(){return acf._e("unload")}}),acf.tooltip=acf.model.extend({$el:null,events:{"mouseenter .acf-js-tooltip":"on","mouseleave .acf-js-tooltip":"off"},on:function(e){var t=e.$el.attr("title");if(t){this.$el=$('
          '+t+"
          "),$("body").append(this.$el);var i=10;target_w=e.$el.outerWidth(),target_h=e.$el.outerHeight(),target_t=e.$el.offset().top,target_l=e.$el.offset().left,tooltip_w=this.$el.outerWidth(),tooltip_h=this.$el.outerHeight();var a=target_t-tooltip_h,n=target_l+target_w/2-tooltip_w/2;i>n?(this.$el.addClass("right"),n=target_l+target_w,a=target_t+target_h/2-tooltip_h/2):n+tooltip_w+i>$(window).width()?(this.$el.addClass("left"),n=target_l-tooltip_w,a=target_t+target_h/2-tooltip_h/2):a-$(window).scrollTop()')}}),acf.add_action("sortstart",function(e,t){e.is("tr")&&(e.css("position","relative"),e.children().each(function(){$(this).width($(this).width())}),e.css("position","absolute"),t.html(''))}),acf.add_action("before_duplicate",function(e){e.find("select option:selected").addClass("selected")}),acf.add_action("after_duplicate",function(e,t){e.find("select option.selected").removeClass("selected"),t.find("select").each(function(){var e=[];$(this).find("option.selected").each(function(){e.push($(this).val()),$(this).removeClass("selected")}),$(this).val(e)})})}(jQuery),function($){acf.ajax=acf.model.extend({actions:{ready:"ready"},events:{"change #page_template":"_change_template","change #parent_id":"_change_parent","change #post-formats-select input":"_change_format","change .categorychecklist input":"_change_term",'change .acf-taxonomy-field[data-save="1"] input':"_change_term",'change .acf-taxonomy-field[data-save="1"] select':"_change_term"},o:{},xhr:null,update:function(e,t){return this.o[e]=t,this},get:function(e){return this.o[e]||null},ready:function(){this.update("post_id",acf.get("post_id"))},fetch:function(){if(acf.get("ajax")){this.xhr&&this.xhr.abort();var e=this,t=this.o;t.action="acf/post/get_field_groups",t.exists=[],$(".acf-postbox").not(".acf-hidden").each(function(){t.exists.push($(this).attr("id").substr(4))}),this.xhr=$.ajax({url:acf.get("ajaxurl"),data:acf.prepare_for_ajax(t),type:"post",dataType:"json",success:function(t){acf.is_ajax_success(t)&&e.render(t.data)}})}},render:function(e){$(".acf-postbox").addClass("acf-hidden"),$(".acf-postbox-toggle").addClass("acf-hidden"),$.each(e,function(e,t){var i=$("#acf-"+t.key),a=$("#acf-"+t.key+"-hide"),n=a.parent();i.removeClass("acf-hidden hide-if-js").show(),n.removeClass("acf-hidden hide-if-js").show(),a.prop("checked",!0);var s=i.find(".acf-replace-with-fields");s.exists()&&(s.replaceWith(t.html),acf.do_action("append",i)),0===e&&$("#acf-style").html(t.style),i.find(".acf-hidden-by-postbox").prop("disabled",!1)}),$(".acf-postbox.acf-hidden").find("select, textarea, input").not(":disabled").each(function(){$(this).addClass("acf-hidden-by-postbox").prop("disabled",!0)})},sync_taxonomy_terms:function(){var e=[""];$(".categorychecklist, .acf-taxonomy-field").each(function(){var t=$(this),i=t.find('input[type="checkbox"]').not(":disabled"),a=t.find('input[type="radio"]').not(":disabled"),n=t.find("select").not(":disabled"),s=t.find('input[type="hidden"]').not(":disabled");t.is(".acf-taxonomy-field")&&"1"!=t.attr("data-save")||t.closest(".media-frame").exists()||(i.exists()?i.filter(":checked").each(function(){e.push($(this).val())}):a.exists()?a.filter(":checked").each(function(){e.push($(this).val())}):n.exists()?n.find("option:selected").each(function(){e.push($(this).val())}):s.exists()&&s.each(function(){$(this).val()&&e.push($(this).val())}))}),e=e.filter(function(e,t,i){return i.indexOf(e)==t}),this.update("post_taxonomy",e).fetch()},_change_template:function(e){var t=e.$el.val();this.update("page_template",t).fetch()},_change_parent:function(e){var t="parent",i=0;""!=e.$el.val()&&(t="child",i=e.$el.val()),this.update("page_type",t).update("page_parent",i).fetch()},_change_format:function(e){var t=e.$el.val();"0"==t&&(t="standard"),this.update("post_format",t).fetch()},_change_term:function(e){var t=this;e.$el.closest(".media-frame").exists()||setTimeout(function(){t.sync_taxonomy_terms()},1)}})}(jQuery),function($){acf.fields.checkbox=acf.field.extend({type:"checkbox",events:{"change input":"change"},change:function(e){var t=e.$el.closest("ul"),i=t.find("input[name]"),a=e.$el.is(":checked");if(e.$el.hasClass("acf-checkbox-toggle"))return void i.prop("checked",a);if(t.find(".acf-checkbox-toggle").exists()){var a=0==i.not(":checked").length;t.find(".acf-checkbox-toggle").prop("checked",a)}}})}(jQuery),function($){acf.fields.color_picker=acf.field.extend({type:"color_picker",$input:null,$hidden:null,actions:{ready:"initialize",append:"initialize"},focus:function(){this.$input=this.$field.find('input[type="text"]'),this.$hidden=this.$field.find('input[type="hidden"]')},initialize:function(){var e=this.$input,t=this.$hidden,i=function(){setTimeout(function(){acf.val(t,e.val())},1)},a={defaultColor:!1,palettes:!0,hide:!0,change:i,clear:i},a=acf.apply_filters("color_picker_args",a,this.$field);this.$input.wpColorPicker(a)}})}(jQuery),function($){acf.conditional_logic=acf.model.extend({actions:{"prepare 20":"render","append 20":"render"},events:{"change .acf-field input":"change","change .acf-field textarea":"change","change .acf-field select":"change"},items:{},triggers:{},add:function(e,t){for(var i in t){var a=t[i];for(var n in a){var s=a[n],o=s.field,r=this.triggers[o]||{};r[e]=e,this.triggers[o]=r}}this.items[e]=t},render:function(e){e=e||!1;var t=acf.get_fields("",e,!0);this.render_fields(t),acf.do_action("refresh",e)},change:function(e){var t=e.$el,i=acf.get_field_wrap(t),a=i.data("key");if("undefined"==typeof this.triggers[a])return!1;$parent=i.parent();for(var n in this.triggers[a]){var s=this.triggers[a][n],o=acf.get_fields(s,$parent,!0);this.render_fields(o)}acf.do_action("refresh",$parent)},render_fields:function(e){var t=this;e.each(function(){t.render_field($(this))})},render_field:function(e){var t=e.data("key");if("undefined"==typeof this.items[t])return!1;var i=!1,a=this.items[t];for(var n in a){var s=a[n],o=!0;for(var r in s){var l=s[r],c=this.get_trigger(e,l.field);if(!this.calculate(l,c,e)){o=!1;break}}if(o){i=!0;break}}i?this.show_field(e):this.hide_field(e)},show_field:function(e){e.removeClass("hidden-by-conditional-logic"),e.find(".acf-clhi").not(".hidden-by-conditional-logic .acf-clhi").removeClass("acf-clhi").prop("disabled",!1),acf.do_action("show_field",e,"conditional_logic")},hide_field:function(e){e.addClass("hidden-by-conditional-logic"),e.find("input, textarea, select").not(".acf-disabled").addClass("acf-clhi").prop("disabled",!0),acf.do_action("hide_field",e,"conditional_logic")},get_trigger:function(e,t){var i=acf.get_selector(t),a=e.siblings(i);if(!a.exists()){var n=acf.get_selector();e.parents(n).each(function(){return a=$(this).siblings(i),a.exists()?!1:void 0})}return a.exists()?a:!1},calculate:function(e,t,i){if(!t||!i)return!1;var a=t.data("type");if("true_false"==a||"checkbox"==a||"radio"==a){var n=t.find('input[value="'+e.value+'"]:checked').exists();if("=="==e.operator&&n)return!0;if("!="==e.operator&&!n)return!0}else if("select"==a){var s=t.find("select"),o=acf.get_data(s),r=[];if(o.multiple&&o.ui){r=s.val();var l=s.siblings(".select2-container");l.exists()&&(r=[],l.find(".select2-search-choice-hidden").each(function(){r.push($(this).val())}))}else o.multiple?r=s.val():o.ui?r.push(s.siblings("input").val()):r.push(s.val());if("=="==e.operator){if($.inArray(e.value,r)>-1)return!0}else if($.inArray(e.value,r)<0)return!0}return!1}})}(jQuery),function($){acf.fields.date_picker=acf.field.extend({type:"date_picker",$el:null,$input:null,$hidden:null,o:{},actions:{ready:"initialize",append:"initialize"},events:{'blur input[type="text"]':"blur"},focus:function(){this.$el=this.$field.find(".acf-date_picker"),this.$input=this.$el.find('input[type="text"]'),this.$hidden=this.$el.find('input[type="hidden"]'),this.o=acf.get_data(this.$el)},initialize:function(){this.$input.val(this.$hidden.val());var e=$.extend({},acf.l10n.date_picker,{dateFormat:"yymmdd",altField:this.$hidden,altFormat:"yymmdd",changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.o.first_day});e=acf.apply_filters("date_picker_args",e,this.$field),this.$input.addClass("active").datepicker(e),this.$input.datepicker("option","dateFormat",this.o.display_format),$("body > #ui-datepicker-div").exists()&&$("body > #ui-datepicker-div").wrap('
          ')},blur:function(){this.$input.val()||this.$hidden.val("")}})}(jQuery),function($){acf.fields.file=acf.field.extend({type:"file",$el:null,actions:{ready:"initialize",append:"initialize"},events:{'click a[data-name="add"]':"add",'click a[data-name="edit"]':"edit",'click a[data-name="remove"]':"remove",'change input[type="file"]':"change"},focus:function(){this.$el=this.$field.find(".acf-file-uploader"),this.o=acf.get_data(this.$el)},initialize:function(){"basic"==this.o.uploader&&this.$el.closest("form").attr("enctype","multipart/form-data")},add:function(){var e=this,t=this.$field,i=acf.get_closest_field(t,"repeater"),a=acf.media.popup({title:acf._e("file","select"),mode:"select",type:"",field:t.data("key"),multiple:i.exists(),library:this.o.library,mime_types:this.o.mime_types,select:function(a,n){if(n>0){var s=t.data("key"),o=t.closest(".acf-row");if(t=!1,o.nextAll(".acf-row:visible").each(function(){return(t=acf.get_field(s,$(this)))?t.find(".acf-file-uploader.has-value").exists()?void(t=!1):!1:void 0}),!t){if(o=acf.fields.repeater.doFocus(i).add(),!o)return!1;t=acf.get_field(s,o)}}e.doFocus(t),e.render(e.prepare(a))}})},prepare:function(e){var t={id:e.id,title:e.attributes.title,name:e.attributes.filename,url:e.attributes.url,icon:e.attributes.icon,size:e.attributes.filesize};return t},render:function(e){this.$el.find('[data-name="icon"]').attr("src",e.icon),this.$el.find('[data-name="title"]').text(e.title),this.$el.find('[data-name="name"]').text(e.name).attr("href",e.url),this.$el.find('[data-name="size"]').text(e.size),this.$el.find('[data-name="id"]').val(e.id).trigger("change"),this.$el.addClass("has-value")},edit:function(){var e=this,t=this.$field,i=this.$el.find('[data-name="id"]').val(),a=acf.media.popup({title:acf._e("file","edit"),button:acf._e("file","update"),mode:"edit",id:i,select:function(i,a){e.doFocus(t),e.render(e.prepare(i))}})},remove:function(){var e={id:"",title:"",name:"",url:"",icon:"",size:""};this.render(e),this.$el.removeClass("has-value")},change:function(e){this.$el.find('[data-name="id"]').val(e.$el.val())}})}(jQuery),function($){acf.fields.google_map=acf.field.extend({type:"google_map",$el:null,$search:null,timeout:null,status:"",geocoder:!1,map:!1,maps:{},pending:$(),actions:{ready:"initialize",append:"initialize",show:"show"},events:{'click a[data-name="clear"]':"_clear",'click a[data-name="locate"]':"_locate",'click a[data-name="search"]':"_search","keydown .search":"_keydown","keyup .search":"_keyup","focus .search":"_focus","blur .search":"_blur","mousedown .acf-google-map":"_mousedown"},focus:function(){this.$el=this.$field.find(".acf-google-map"),this.$search=this.$el.find(".search"),this.o=acf.get_data(this.$el),this.maps[this.o.id]&&(this.map=this.maps[this.o.id])},is_ready:function(){var e=this;return"ready"==this.status?!0:"loading"==this.status?!1:acf.isset(window,"google","load")?acf.isset(window,"google","maps","places")?(this.status="ready",!0):(e.status="loading",google.load("maps","3",{other_params:"sensor=false&libraries=places",callback:function(){e.status="ready",e.initialize_pending()}}),!1):(e.status="loading",$.getScript("https://www.google.com/jsapi",function(){google.load("maps","3",{other_params:"sensor=false&libraries=places",callback:function(){e.status="ready",e.initialize_pending()}})}),!1)},initialize_pending:function(){var e=this;this.pending.each(function(){e.doFocus($(this)).initialize()}),this.pending=$()},initialize:function(){if(!this.is_ready())return this.pending=this.pending.add(this.$field),!1;this.geocoder||(this.geocoder=new google.maps.Geocoder);var e=this,t=this.$field,i=this.$el,a=this.$search;a.val(this.$el.find(".input-address").val());var n=acf.apply_filters("google_map_args",{zoom:parseInt(this.o.zoom),center:new google.maps.LatLng(this.o.lat,this.o.lng),mapTypeId:google.maps.MapTypeId.ROADMAP},this.$field);this.map=new google.maps.Map(this.$el.find(".canvas")[0],n);var s=new google.maps.places.Autocomplete(this.$search[0]);s.bindTo("bounds",this.map),this.map.autocomplete=s;var o=acf.apply_filters("google_map_marker_args",{draggable:!0,raiseOnDrag:!0,map:this.map},this.$field);this.map.marker=new google.maps.Marker(o),this.map.$el=i,this.map.$field=t;var r=i.find(".input-lat").val(),l=i.find(".input-lng").val();r&&l&&this.update(r,l).center(),google.maps.event.addListener(s,"place_changed",function(t){var i=this.getPlace();e.search(i)}),google.maps.event.addListener(this.map.marker,"dragend",function(){var t=this.map.marker.getPosition(),i=t.lat(),a=t.lng();e.update(i,a).sync()}),google.maps.event.addListener(this.map,"click",function(t){var i=t.latLng.lat(),a=t.latLng.lng();e.update(i,a).sync()}),this.maps[this.o.id]=this.map},search:function(e){var t=this,i=this.$search.val();if(!i)return!1;this.$el.find(".input-address").val(i);var a=i.split(",");if(2==a.length){var n=a[0],s=a[1];if($.isNumeric(n)&&$.isNumeric(s))return n=parseFloat(n),s=parseFloat(s),void t.update(n,s).center()}if(e&&e.geometry){var n=e.geometry.location.lat(),s=e.geometry.location.lng();return void t.update(n,s).center()}this.$el.addClass("-loading"),t.geocoder.geocode({address:i},function(i,a){if(t.$el.removeClass("-loading"),a!=google.maps.GeocoderStatus.OK)return void console.log("Geocoder failed due to: "+a);if(!i[0])return void console.log("No results found");e=i[0];var n=e.geometry.location.lat(),s=e.geometry.location.lng();t.update(n,s).center()})},update:function(e,t){var i=new google.maps.LatLng(e,t);return acf.val(this.$el.find(".input-lat"),e),acf.val(this.$el.find(".input-lng"),t),this.map.marker.setPosition(i),this.map.marker.setVisible(!0),this.$el.addClass("-value"),this.$field.removeClass("error"),acf.do_action("google_map_change",i,this.map,this.$field),this.$search.blur(),this},center:function(){var e=this.map.marker.getPosition(),t=this.o.lat,i=this.o.lng;e&&(t=e.lat(),i=e.lng());var a=new google.maps.LatLng(t,i);this.map.setCenter(a)},sync:function(){var e=this,t=this.map.marker.getPosition(),i=new google.maps.LatLng(t.lat(),t.lng());return this.$el.addClass("-loading"),this.geocoder.geocode({latLng:i},function(t,i){if(e.$el.removeClass("-loading"),i!=google.maps.GeocoderStatus.OK)return void console.log("Geocoder failed due to: "+i);if(!t[0])return void console.log("No results found");var a=t[0];e.$search.val(a.formatted_address),acf.val(e.$el.find(".input-address"),a.formatted_address)}),this},refresh:function(){return this.is_ready()?(google.maps.event.trigger(this.map,"resize"),void this.center()):!1},show:function(){var e=this,t=this.$field;setTimeout(function(){e.set("$field",t).refresh()},10)},_clear:function(e){this.$el.removeClass("-value -loading -search"),this.$search.val(""),acf.val(this.$el.find(".input-address"),""),acf.val(this.$el.find(".input-lat"),""),acf.val(this.$el.find(".input-lng"),""),this.map.marker.setVisible(!1)},_locate:function(e){var t=this;return navigator.geolocation?(this.$el.addClass("-loading"),void navigator.geolocation.getCurrentPosition(function(e){t.$el.removeClass("-loading");var i=e.coords.latitude,a=e.coords.longitude;t.update(i,a).sync().center()})):(alert(acf._e("google_map","browser_support")),this)},_search:function(e){this.search()},_focus:function(e){this.$el.removeClass("-value"),this._keyup()},_blur:function(e){var t=this,i=this.$el.find(".input-address").val();i&&(this.timeout=setTimeout(function(){t.$el.addClass("-value"),t.$search.val(i)},100))},_keydown:function(e){13==e.which&&e.preventDefault()},_keyup:function(e){var t=this.$search.val();t?this.$el.addClass("-search"):this.$el.removeClass("-search")},_mousedown:function(e){var t=this;setTimeout(function(){clearTimeout(t.timeout)},1)}})}(jQuery),function($){acf.fields.image=acf.field.extend({type:"image",$el:null,$input:null,$img:null,actions:{ready:"initialize",append:"initialize"},events:{'click a[data-name="add"]':"add",'click a[data-name="edit"]':"edit",'click a[data-name="remove"]':"remove",'change input[type="file"]':"change"},focus:function(){this.$el=this.$field.find(".acf-image-uploader"),this.$input=this.$field.find('[data-name="id"]'),this.$img=this.$field.find('[data-name="image"]'),this.o=acf.get_data(this.$el)},initialize:function(){"basic"==this.o.uploader&&this.$el.closest("form").attr("enctype","multipart/form-data")},add:function(){var e=this,t=this.$field,i=acf.get_closest_field(this.$field,"repeater"),a=acf.media.popup({title:acf._e("image","select"), +mode:"select",type:"image",field:t.data("key"),multiple:i.exists(),library:this.o.library,mime_types:this.o.mime_types,select:function(a,n){if(n>0){var s=t.data("key"),o=t.closest(".acf-row");if(t=!1,o.nextAll(".acf-row:visible").each(function(){return(t=acf.get_field(s,$(this)))?t.find(".acf-image-uploader.has-value").exists()?void(t=!1):!1:void 0}),!t){if(o=acf.fields.repeater.doFocus(i).add(),!o)return!1;t=acf.get_field(s,o)}}e.doFocus(t),e.render(e.prepare(a))}})},prepare:function(e){var t={id:e.id,alt:e.attributes.alt,url:e.attributes.url};return acf.isset(e.attributes,"sizes",this.o.preview_size,"url")&&(t.url=e.attributes.sizes[this.o.preview_size].url),t},render:function(e){this.$img.attr("src",e.url),this.$img.attr("alt",e.alt),this.$input.val(e.id).trigger("change"),this.$el.addClass("has-value")},edit:function(){var e=this,t=this.$field,i=this.$input.val(),a=acf.media.popup({title:acf._e("image","edit"),button:acf._e("image","update"),mode:"edit",id:i,select:function(i,a){e.doFocus(t),e.render(e.prepare(i))}})},remove:function(){var e={id:"",alt:"",url:""};this.render(e),this.$el.removeClass("has-value")},change:function(e){this.$input.val(e.$el.val())}})}(jQuery),function($){acf.media=acf.model.extend({frames:[],mime_types:{},actions:{ready:"ready"},frame:function(){var e=this.frames.length-1;return 0>e?!1:this.frames[e]},popup:function(e){var t=this,i=acf.get("post_id");$.isNumeric(i)||(i=0);var a={mode:"select",title:"",button:"",type:"",field:"",mime_types:"",library:"all",multiple:!1};e=$.extend({},a,e);var n={title:e.title,multiple:e.multiple,library:{},states:[]};e.type&&(n.library.type=e.type),"edit"==e.mode&&(n.library.post__in=[e.id]),"uploadedTo"==e.library&&(n.library.uploadedTo=i),e.button&&(n.button={text:e.button});var s=wp.media.query(n.library);acf.isset(s,"mirroring","args")&&(s.mirroring.args._acfuploader=e.field),n.states=[new wp.media.controller.Library({library:s,multiple:n.multiple,title:n.title,priority:20,filterable:"all",editable:!0,allowLocalEdits:!0})],acf.isset(wp,"media","controller","EditImage")&&n.states.push(new wp.media.controller.EditImage);var o=wp.media(n);return acf.isset(_wpPluploadSettings,"defaults","multipart_params")&&(_wpPluploadSettings.defaults.multipart_params._acfuploader=e.field,o.on("open",function(){delete _wpPluploadSettings.defaults.multipart_params._acfuploader})),o.on("content:render:edit-image",function(){var e=this.state().get("image"),t=new wp.media.view.EditImage({model:e,controller:this}).render();this.content.set(t),t.loadEditor()},o),o.on("content:activate:browse",function(){try{var a=o.content.get().toolbar,n=a.get("filters"),s=a.get("search")}catch(r){return}if("image"==e.type&&(n.filters.all.text=acf._e("image","all"),delete n.filters.audio,delete n.filters.video,$.each(n.filters,function(e,t){null===t.props.type&&(t.props.type="image")})),e.mime_types){var l=e.mime_types.split(" ").join("").split(".").join("").split(",");$.each(l,function(e,i){$.each(t.mime_types,function(e,t){if(-1!==e.indexOf(i)){var a={text:i,props:{status:null,type:t,uploadedTo:null,orderby:"date",order:"DESC"},priority:20};n.filters[t]=a}})})}"uploadedTo"==e.library&&(delete n.filters.unattached,delete n.filters.uploaded,n.$el.parent().append(''+acf._e("image","uploadedTo")+""),$.each(n.filters,function(e,t){t.props.uploadedTo=i})),$.each(n.filters,function(t,i){i.props._acfuploader=e.field}),s.model.attributes._acfuploader=e.field,"function"==typeof n.refresh&&n.refresh()}),"function"==typeof e.select&&o.on("select",function(){var t=this,i=-1,a=o.state().get("selection");a&&a.each(function(a){i++,e.select.apply(t,[a,i])})}),o.on("close",function(){setTimeout(function(){o.detach(),o.dispose(),o=null,t.frames.pop()},500)}),"edit"==e.mode&&(o.on("open",function(){"browse"!=this.content.mode()&&this.content.mode("browse"),this.$el.closest(".media-modal").addClass("acf-media-modal acf-expanded");var t=this.state(),i=t.get("selection"),a=wp.media.attachment(e.id);i.add(a)},o),o.on("close",function(){o.$el.closest(".media-modal").removeClass("acf-media-modal")})),e.button&&o.on("toolbar:create:select",function(t){n={text:e.button,controller:this},t.view=new wp.media.view.Toolbar.Select(n)},o),setTimeout(function(){o.open()},1),o.acf=e,this.frames.push(o),o},ready:function(){var e=acf.get("wp_version"),t=acf.get("post_id");acf.isset(window,"wp","media","view","settings","post")&&$.isNumeric(t)&&(wp.media.view.settings.post.id=t),e&&("string"==typeof e&&(e=e.substr(0,1)),$("body").addClass("acf-wp-"+e)),acf.isset(window,"wp","media","view")&&(this.customize_Attachment(),this.customize_AttachmentFiltersAll(),this.customize_AttachmentCompat())},customize_Attachment:function(){var e=wp.media.view.Attachment.Library;wp.media.view.Attachment.Library=e.extend({render:function(){var t=acf.media.frame(),i=acf.maybe_get(this,"model.attributes.acf_errors");return t&&i&&this.$el.addClass("acf-disabled"),e.prototype.render.apply(this,arguments)},toggleSelection:function(t){var i=acf.media.frame(),a=acf.maybe_get(this,"model.attributes.acf_errors"),n=this.controller.$el.find(".media-frame-content .media-sidebar");if(n.children(".acf-selection-error").remove(),n.children().removeClass("acf-hidden"),i&&a){var s=acf.maybe_get(this,"model.attributes.filename","");n.children().addClass("acf-hidden"),n.prepend(['
          ',''+acf._e("restricted")+"",''+s+"",''+a+"","
          "].join(""))}e.prototype.toggleSelection.apply(this,arguments)},select:function(t,i){var a=acf.media.frame(),n=this.controller.state(),s=n.get("selection"),o=acf.maybe_get(this,"model.attributes.acf_errors");return a&&o?s.remove(t):e.prototype.select.apply(this,arguments)}})},customize_AttachmentFiltersAll:function(){wp.media.view.AttachmentFilters.All.prototype.refresh=function(){this.$el.html(_.chain(this.filters).map(function(e,t){return{el:$("").val(t).html(e.text)[0],priority:e.priority||50}},this).sortBy("priority").pluck("el").value())}},customize_AttachmentCompat:function(){var e=wp.media.view.AttachmentCompat.prototype;e.render2=e.render,e.dispose2=e.dispose,e.render=function(){var e=this;return this.ignore_render?this:(this.render2(),setTimeout(function(){var t=e.$el.closest(".media-modal");if(!t.hasClass("acf-media-modal")&&!t.find(".media-frame-router .acf-expand-details").exists()){var i=$(['',''+acf._e("expand_details")+"",''+acf._e("collapse_details")+"",""].join(""));i.on("click",function(e){e.preventDefault(),t.hasClass("acf-expanded")?t.removeClass("acf-expanded"):t.addClass("acf-expanded")}),t.find(".media-frame-router").append(i)}},0),clearTimeout(acf.media.render_timout),acf.media.render_timout=setTimeout(function(){acf.do_action("append",e.$el)},50),this)},e.dispose=function(){acf.do_action("remove",this.$el),this.dispose2()},e.save=function(e){e&&e.preventDefault();var t=acf.serialize_form(this.$el);this.ignore_render=!0,this.model.saveCompat(t)}}})}(jQuery),function($){acf.fields.oembed={search:function(e){var t=e.find('[data-name="search-input"]').val();"http"!=t.substr(0,4)&&(t="http://"+t,e.find('[data-name="search-input"]').val(t)),e.addClass("is-loading");var i={action:"acf/fields/oembed/search",nonce:acf.get("nonce"),s:t,width:acf.get_data(e,"width"),height:acf.get_data(e,"height")};e.data("xhr")&&e.data("xhr").abort();var a=$.ajax({url:acf.get("ajaxurl"),data:i,type:"post",dataType:"html",success:function(i){e.removeClass("is-loading"),acf.fields.oembed.search_success(e,t,i),i||acf.fields.oembed.search_error(e)}});e.data("xhr",a)},search_success:function(e,t,i){e.removeClass("has-error").addClass("has-value"),e.find('[data-name="value-input"]').val(t),e.find('[data-name="value-title"]').html(t),e.find('[data-name="value-embed"]').html(i)},search_error:function(e){e.removeClass("has-value").addClass("has-error")},clear:function(e){e.removeClass("has-error has-value"),e.find('[data-name="search-input"]').val(""),e.find('[data-name="value-input"]').val(""),e.find('[data-name="value-title"]').html(""),e.find('[data-name="value-embed"]').html("")},edit:function(e){e.addClass("is-editing");var t=e.find('[data-name="value-title"]').text();e.find('[data-name="search-input"]').val(t).focus()},blur:function(e){e.removeClass("is-editing");var t=e.find('[data-name="value-title"]').text(),i=e.find('[data-name="search-input"]').val(),a=e.find('[data-name="value-embed"]').html();return i?void(i!=t&&this.search(e)):void this.clear(e)}},$(document).on("click",'.acf-oembed [data-name="search-button"]',function(e){e.preventDefault(),acf.fields.oembed.search($(this).closest(".acf-oembed")),$(this).blur()}),$(document).on("click",'.acf-oembed [data-name="clear-button"]',function(e){e.preventDefault(),acf.fields.oembed.clear($(this).closest(".acf-oembed")),$(this).blur()}),$(document).on("click",'.acf-oembed [data-name="value-title"]',function(e){e.preventDefault(),acf.fields.oembed.edit($(this).closest(".acf-oembed"))}),$(document).on("keypress",'.acf-oembed [data-name="search-input"]',function(e){13==e.which&&e.preventDefault()}),$(document).on("keyup",'.acf-oembed [data-name="search-input"]',function(e){$(this).val()&&e.which&&acf.fields.oembed.search($(this).closest(".acf-oembed"))}),$(document).on("blur",'.acf-oembed [data-name="search-input"]',function(e){acf.fields.oembed.blur($(this).closest(".acf-oembed"))})}(jQuery),function($){acf.fields.radio=acf.field.extend({type:"radio",$selected:null,$other:null,actions:{ready:"render",append:"render"},events:{'change input[type="radio"]':"render"},focus:function(){this.$selected=this.$field.find('input[type="radio"]:checked'),this.$other=this.$field.find('input[type="text"]')},render:function(){"other"===this.$selected.val()?this.$other.removeAttr("disabled").attr("name",this.$selected.attr("name")):this.$other.attr("disabled","disabled").attr("name","")}})}(jQuery),function($){acf.fields.relationship=acf.field.extend({type:"relationship",$el:null,$input:null,$filters:null,$choices:null,$values:null,actions:{ready:"initialize",append:"initialize"},events:{"keypress [data-filter]":"submit_filter","change [data-filter]":"change_filter","keyup [data-filter]":"change_filter","click .choices .acf-rel-item":"add_item",'click [data-name="remove_item"]':"remove_item"},focus:function(){this.$el=this.$field.find(".acf-relationship"),this.$input=this.$el.find(".acf-hidden input"),this.$choices=this.$el.find(".choices"),this.$values=this.$el.find(".values"),this.o=acf.get_data(this.$el)},initialize:function(){var e=this,t=this.$field,i=this.$el,a=this.$input;this.$values.children(".list").sortable({items:"li",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,update:function(){a.trigger("change")}}),this.$choices.children(".list").scrollTop(0).on("scroll",function(a){if(!i.hasClass("is-loading")&&!i.hasClass("is-empty")&&Math.ceil($(this).scrollTop())+$(this).innerHeight()>=$(this).get(0).scrollHeight){var n=i.data("paged")||1;i.data("paged",n+1),e.doFocus(t),e.fetch()}}),this.fetch()},maybe_fetch:function(){var e=this,t=this.$field;this.o.timeout&&clearTimeout(this.o.timeout);var i=setTimeout(function(){e.doFocus(t),e.fetch()},400);this.$el.data("timeout",i)},fetch:function(){var e=this,t=this.$field;this.$el.addClass("is-loading"),this.o.xhr&&(this.o.xhr.abort(),this.o.xhr=!1),this.o.action="acf/fields/relationship/query",this.o.field_key=t.data("key"),this.o.post_id=acf.get("post_id");var i=acf.prepare_for_ajax(this.o);1==i.paged&&this.$choices.children(".list").html(""),this.$choices.find("ul:last").append('

          '+acf._e("relationship","loading")+"

          ");var a=$.ajax({url:acf.get("ajaxurl"),dataType:"json",type:"post",data:i,success:function(i){e.doFocus(t),e.render(i)}});this.$el.data("xhr",a)},render:function(e){if(this.$el.removeClass("is-loading is-empty"),this.$choices.find("p").remove(),!e||!e.length)return this.$el.addClass("is-empty"),void(1==this.o.paged&&this.$choices.children(".list").append("

          "+acf._e("relationship","empty")+"

          "));var t=$(this.walker(e));if(this.$values.find(".acf-rel-item").each(function(){t.find('.acf-rel-item[data-id="'+$(this).data("id")+'"]').addClass("disabled")}),this.o.s){var i=this.o.s;t.find(".acf-rel-item").each(function(){var e=$(this).text(),t=e.replace(new RegExp("("+i+")","gi"),"$1");$(this).html($(this).html().replace(e,t))})}this.$choices.children(".list").append(t);var a="",n=null;this.$choices.find(".acf-rel-label").each(function(){return $(this).text()==a?(n.append($(this).siblings("ul").html()),void $(this).parent().remove()):(a=$(this).text(),void(n=$(this).siblings("ul")))})},walker:function(e){var t="";if($.isArray(e))for(var i in e)t+=this.walker(e[i]);else $.isPlainObject(e)&&(void 0!==e.children?(t+='
        • '+e.text+'
            ',t+=this.walker(e.children),t+="
        • "):t+='
        • '+e.text+"
        • ");return t},submit_filter:function(e){13==e.which&&e.preventDefault()},change_filter:function(e){var t=e.$el.val(),i=e.$el.data("filter");this.$el.data(i)!=t&&(this.$el.data(i,t),this.$el.data("paged",1),e.$el.is("select")?this.fetch():this.maybe_fetch())},add_item:function(e){if(this.o.max>0&&this.$values.find(".acf-rel-item").length>=this.o.max)return void alert(acf._e("relationship","max").replace("{max}",this.o.max));if(e.$el.hasClass("disabled"))return!1;e.$el.addClass("disabled");var t=["
        • ",'',''+e.$el.html(),'',"","
        • "].join("");this.$values.children(".list").append(t),this.$input.trigger("change"),acf.validation.remove_error(this.$field)},remove_item:function(e){var t=e.$el.parent(),i=t.data("id");t.parent("li").remove(),this.$choices.find('.acf-rel-item[data-id="'+i+'"]').removeClass("disabled"),this.$input.trigger("change")}})}(jQuery),function($){acf.select2=acf.model.extend({init:function(e,t){var i=this.version();if(i)return t=$.extend({allow_null:!1,placeholder:"",multiple:!1,ajax:!1,action:"",pagination:!1},t),3==i?this.init_v3(e,t):this.init_v4(e,t)},version:function(){return acf.maybe_get(window,"Select2")?3:acf.maybe_get(window,"jQuery.fn.select2.amd")?4:0},get_data:function(e,t){var i=this;return t=t||[],e.children().each(function(){var e=$(this);e.is("optgroup")?t.push({text:e.attr("label"),children:i.get_data(e)}):t.push({id:e.attr("value"),text:e.text()})}),t},decode_data:function(e){return e?($.each(e,function(t,i){e[t].text=acf.decode(i.text),"undefined"!=typeof i.children&&(e[t].children=acf.select2.decode_data(i.children))}),e):[]},count_data:function(e){var t=0;return e?($.each(e,function(e,i){t++,"undefined"!=typeof i.children&&(t+=i.children.length)}),t):t},get_value:function(e){var t=[],i=e.find("option:selected");return i.exists()?(i=i.sort(function(e,t){return+e.getAttribute("data-i")-+t.getAttribute("data-i")}),i.each(function(){var e=$(this);t.push({id:e.attr("value"),text:e.text()})}),t):t},init_v3:function(e,t){var i=e.siblings("input");if(i.exists()){var a={width:"100%",containerCssClass:"-acf",allowClear:t.allow_null,placeholder:t.placeholder,multiple:t.multiple,separator:"||",data:[],escapeMarkup:function(e){return e}},n=this.get_value(e);if(t.multiple){var s=e.attr("name");a.formatSelection=function(e,t){return t.parent().append(''),e.text}}else n=acf.maybe_get(n,0,"");t.allow_null&&e.find('option[value=""]').remove(),a.data=this.get_data(e),a.initSelection=function(e,t){t(n)},t.ajax&&(a.ajax={url:acf.get("ajaxurl"),dataType:"json",type:"post",cache:!1,data:function(e,i){var a=acf.prepare_for_ajax({action:t.action,field_key:t.key,post_id:acf.get("post_id"),s:e,paged:i});return a},results:function(e,t){return{results:acf.select2.decode_data(e)}}},t.pagination&&(a.ajax.results=function(e,t){return{results:acf.select2.decode_data(e),more:acf.select2.count_data(e)>=20}},i.on("select2-loaded",function(e){var t="",i=null;$("#select2-drop .select2-result-with-children").each(function(){var e=$(this).children(".select2-result-label"),a=$(this).children(".select2-result-sub");return e.text()==t?(i.append(a.children()),void $(this).remove()):(t=e.text(),void(i=a))})}))),a.dropdownCss={"z-index":"999999999"},a=acf.apply_filters("select2_args",a,e,t),i.select2(a);var o=i.select2("container");o.before(e),o.before(i),t.multiple&&o.find("ul.select2-choices").sortable({start:function(){i.select2("onSortStart")},stop:function(){i.select2("onSortEnd")}}),e.prop("disabled",!0).addClass("acf-disabled acf-hidden")}},init_v4:function(e,t){var i=e.siblings("input");if(i.exists()){var a={width:"100%",containerCssClass:"-acf",allowClear:t.allow_null,placeholder:t.placeholder,multiple:t.multiple,separator:"||",data:[],escapeMarkup:function(e){return e}},n=this.get_value(e);t.multiple||(n=acf.maybe_get(n,0,"")),t.allow_null&&e.find('option[value=""]').remove(),a.data=this.get_data(e),a.initSelection=function(e,t){t(n)},t.ajax?(a.ajax={url:acf.get("ajaxurl"),delay:250,dataType:"json",type:"post",cache:!1,data:function(e){var i=acf.prepare_for_ajax({action:t.action,field_key:t.key,post_id:acf.get("post_id"),s:e.term,paged:e.page});return i},processResults:function(e,t){return{results:acf.select2.decode_data(e)}}},t.pagination&&(a.ajax.processResults=function(e,t){return setTimeout(function(){var e=null,t=null;$('.select2-results__option[role="group"]').each(function(){var i=$(this).children("ul"),a=$(this).children("strong");return null!==t&&a.text()==t.text()?(e.append(i.children()),void $(this).remove()):(e=i,void(t=a))})},1),{results:acf.select2.decode_data(e),pagination:{more:acf.select2.count_data(e)>=20}}})):(e.removeData("ajax"),e.removeAttr("data-ajax")),a.dropdownCss={"z-index":"999999999"},a=acf.apply_filters("select2_args",a,e,t);var s=e.select2(a)}},destroy:function(e){e.siblings(".select2-container").remove(),e.siblings("input").show(),e.prop("disabled",!1).removeClass("acf-disabled acf-hidden")}}),acf.add_select2=function(e,t){acf.select2.init(e,t)},acf.remove_select2=function(e){acf.select2.destroy(e)},acf.fields.select=acf.field.extend({type:"select",pagination:!1,$select:null,actions:{ready:"render",append:"render",remove:"remove"},focus:function(){this.$select=this.$field.find("select"),this.$select.exists()&&(this.o=acf.get_data(this.$select),this.o.pagination=this.pagination,this.o.key=this.$field.data("key"),this.o.action="acf/fields/"+this.type+"/query")},render:function(){return this.$select.exists()&&this.o.ui?void acf.select2.init(this.$select,this.o):!1},remove:function(){return this.$select.exists()&&this.o.ui?void acf.select2.destroy(this.$select):!1}}),acf.fields.user=acf.fields.select.extend({type:"user",pagination:!0}),acf.fields.post_object=acf.fields.select.extend({type:"post_object",pagination:!0}),acf.fields.page_link=acf.fields.select.extend({type:"page_link",pagination:!0})}(jQuery),function($){acf.fields.tab=acf.field.extend({type:"tab",$el:null,$wrap:null,actions:{prepare:"initialize",append:"initialize",hide:"hide",show:"show"},focus:function(){this.$el=this.$field.find(".acf-tab"),this.o=this.$el.data(),this.o.key=this.$field.data("key"),this.o.text=this.$el.text()},initialize:function(){this.$field.is("td")||e.add_tab(this.$field,this.o)},hide:function(e,t){if("conditional_logic"==t){var i=e.data("key"),a=e.prevAll(".acf-tab-wrap"),n=a.find('a[data-key="'+i+'"]'),s=n.parent();a.exists()&&(s.addClass("hidden-by-conditional-logic"),setTimeout(function(){e.nextUntil(".acf-field-tab",".acf-field").each(function(){$(this).hasClass("hidden-by-conditional-logic")||(acf.conditional_logic.hide_field($(this)),$(this).addClass("-hbcl-"+i))}),s.hasClass("active")&&a.find("li:not(.hidden-by-conditional-logic):first a").trigger("click")},0))}},show:function(e,t){if("conditional_logic"==t){var i=e.data("key"),a=e.prevAll(".acf-tab-wrap"),n=a.find('a[data-key="'+i+'"]'),s=n.parent();a.exists()&&(s.removeClass("hidden-by-conditional-logic"),setTimeout(function(){e.siblings(".acf-field.-hbcl-"+i).each(function(){acf.conditional_logic.show_field($(this)),$(this).removeClass("-hbcl-"+i)});var t=s.siblings(".active");(!t.exists()||t.hasClass("hidden-by-conditional-logic"))&&n.trigger("click")},0))}}});var e=acf.model.extend({actions:{"prepare 15":"render","append 15":"render","refresh 15":"render"},events:{"click .acf-tab-button":"_click"},render:function(e){$(".acf-tab-wrap",e).each(function(){var e=$(this),t=e.parent();if(e.find("li.active").exists()||e.find("li:not(.hidden-by-conditional-logic):first a").trigger("click"),t.hasClass("-sidebar")){var i=t.is("td")?"height":"min-height",a=e.position().top+e.children("ul").outerHeight(!0)-1;t.css(i,a)}})},add_group:function(e,t){var i=e.parent(),a="";return i.hasClass("acf-fields")&&"left"==t.placement?i.addClass("-sidebar"):t.placement="top",a=i.is("tbody")?'
            ':'
              ',$group=$(a),e.before($group),$group},add_tab:function(e,t){var i=e.siblings(".acf-tab-wrap").last();i.exists()?t.endpoint&&(i=this.add_group(e,t)):i=this.add_group(e,t);var a=$('
            • '+t.text+"
            • ");""===t.text&&a.hide(),i.find("ul").append(a),e.hasClass("hidden-by-conditional-logic")&&a.addClass("hidden-by-conditional-logic")},_click:function(e){e.preventDefault();var t=this,i=e.$el,a=i.closest(".acf-tab-wrap"),n=i.data("key"),s="";i.parent().addClass("active").siblings().removeClass("active"),a.nextUntil(".acf-tab-wrap",".acf-field").each(function(){var e=$(this);return"tab"==e.data("type")&&(s=e.data("key"),e.hasClass("endpoint"))?!1:void(s===n?e.hasClass("hidden-by-tab")&&(e.removeClass("hidden-by-tab"),acf.do_action("show_field",$(this),"tab")):e.hasClass("hidden-by-tab")||(e.addClass("hidden-by-tab"),acf.do_action("hide_field",$(this),"tab")))}),acf.do_action("refresh",a.parent()),i.trigger("blur")}}),t=acf.model.extend({active:1,actions:{add_field_error:"add_field_error"},add_field_error:function(e){if(this.active&&e.hasClass("hidden-by-tab")){var t=this,i=e.prevAll(".acf-field-tab:first"),a=e.prevAll(".acf-tab-wrap:first");a.find('a[data-key="'+i.data("key")+'"]').trigger("click"),this.active=0,setTimeout(function(){t.active=1},1e3)}}})}(jQuery),function($){acf.fields.taxonomy=acf.field.extend({type:"taxonomy",$el:null,actions:{ready:"render",append:"render",remove:"remove"},events:{'click a[data-name="add"]':"add_term"},focus:function(){this.$el=this.$field.find(".acf-taxonomy-field"),this.o=acf.get_data(this.$el),this.o.key=this.$field.data("key")},render:function(){var e=this.$field.find("select");if(!e.exists())return!1;var t=acf.get_data(e);t.pagination=!0,t.key=this.o.key,t.action="acf/fields/taxonomy/query",acf.select2.init(e,t)},remove:function(){var e=this.$field.find("select");return e.exists()?void acf.select2.destroy(e):!1},add_term:function(e){var t=this;acf.open_popup({title:e.$el.attr("title")||e.$el.data("title"),loading:!0,height:220});var i=acf.prepare_for_ajax({action:"acf/fields/taxonomy/add_term",field_key:this.o.key});$.ajax({url:acf.get("ajaxurl"),data:i,type:"post",dataType:"html",success:function(e){t.add_term_confirm(e)}})},add_term_confirm:function(e){var t=this;acf.update_popup({content:e}),$('#acf-popup input[name="term_name"]').focus(),$("#acf-popup form").on("submit",function(e){e.preventDefault(),t.add_term_submit($(this))})},add_term_submit:function(e){var t=this,i=e.find(".acf-submit"),a=e.find('input[name="term_name"]'),n=e.find('select[name="term_parent"]');if(""===a.val())return a.focus(),!1;i.find("button").attr("disabled","disabled"),i.find(".acf-spinner").addClass("is-active");var s=acf.prepare_for_ajax({action:"acf/fields/taxonomy/add_term",field_key:this.o.key,term_name:a.val(),term_parent:n.exists()?n.val():0});$.ajax({url:acf.get("ajaxurl"),data:s,type:"post",dataType:"json",success:function(e){var n=acf.get_ajax_message(e);acf.is_ajax_success(e)&&(a.val(""),t.append_new_term(e.data)),n.text&&i.find("span").html(n.text)},complete:function(){i.find("button").removeAttr("disabled"),i.find(".acf-spinner").removeClass("is-active"),i.find("span").delay(1500).fadeOut(250,function(){$(this).html(""),$(this).show()}),a.focus()}})},append_new_term:function(e){var t={id:e.term_id,text:e.term_label};switch($('.acf-taxonomy-field[data-taxonomy="'+this.o.taxonomy+'"]').each(function(){var t=$(this).data("type");if("radio"==t||"checkbox"==t){var i=$(this).children('input[type="hidden"]'),a=$(this).find("ul:first"),n=i.attr("name");"checkbox"==t&&(n+="[]");var s=$(['
            • ',"","
            • "].join(""));if(e.term_parent){var o=a.find('li[data-id="'+e.term_parent+'"]');a=o.children("ul"),a.exists()||(a=$('
                '),o.append(a))}a.append(s)}}),$("#acf-popup #term_parent").each(function(){var t=$('");e.term_parent?$(this).children('option[value="'+e.term_parent+'"]').after(t):$(this).append(t)}),this.o.type){case"select":this.$el.children("input").select2("data",t);break;case"multi_select":var i=this.$el.children("input"),a=i.select2("data")||[];a.push(t),i.select2("data",a);break;case"checkbox":case"radio":var n=this.$el.find(".categorychecklist-holder"),s=n.find('li[data-id="'+e.term_id+'"]'),o=n.get(0).scrollTop+(s.offset().top-n.offset().top);s.find("input").prop("checked",!0),n.animate({scrollTop:o},"250")}}})}(jQuery),function($){acf.fields.url=acf.field.extend({type:"url",$input:null,actions:{ready:"render",append:"render"},events:{'keyup input[type="url"]':"render"},focus:function(){this.$input=this.$field.find('input[type="url"]')},is_valid:function(){var e=this.$input.val();if(-1!==e.indexOf("://"));else if(0!==e.indexOf("//"))return!1;return!0},render:function(){this.is_valid()?this.$input.parent().addClass("valid"):this.$input.parent().removeClass("valid")}})}(jQuery),function($){acf.validation=acf.model.extend({actions:{ready:"ready",append:"ready"},filters:{validation_complete:"validation_complete"},events:{"click #save-post":"click_ignore",'click [type="submit"]':"click_publish","submit form":"submit_form","click .acf-error-message a":"click_message"},active:1,ignore:0,busy:0,valid:!0,errors:[],error_class:"acf-error",message_class:"acf-error-message",$trigger:null,ready:function(e){e.find(".acf-field input").filter('[type="number"], [type="email"], [type="url"]').on("invalid",function(e){e.preventDefault(),acf.validation.errors.push({input:$(this).attr("name"),message:e.target.validationMessage}),acf.validation.fetch($(this).closest("form"))})},validation_complete:function(e,t){return this.errors&&this.errors.length>0&&(e.valid=0,e.errors=e.errors||[],e.errors=e.errors.concat(this.errors)),this.errors=[],e},click_message:function(e){e.preventDefault(),acf.remove_el(e.$el.parent())},click_ignore:function(e){this.ignore=1,this.$trigger=e.$el},click_publish:function(e){this.$trigger=e.$el},submit_form:function(e){if(!this.active)return!0;if(this.ignore)return this.ignore=0,!0;if(!e.$el.find("#acf-form-data").exists())return!0;var t=e.$el.find("#wp-preview");return t.exists()&&t.val()?(this.toggle(e.$el,"unlock"),!0):(e.preventDefault(),void this.fetch(e.$el))},toggle:function(e,t){t=t||"unlock";var i=null,a=null,n=$("#submitdiv");n.exists()||(n=$("#submitpost")),n.exists()||(n=e.find("p.submit").last()),n.exists()||(n=e.find(".acf-form-submit")),n.exists()||(n=e),i=n.find('input[type="submit"], .button'),a=n.find(".spinner, .acf-spinner"),this.hide_spinner(a),"unlock"==t?this.enable_submit(i):"lock"==t&&(this.disable_submit(i),this.show_spinner(a.last()))},fetch:function(e){if(this.busy)return!1;var t=this,i=acf.serialize_form(e);i.action="acf/validate_save_post",this.busy=1,this.toggle(e,"lock"),$.ajax({url:acf.get("ajaxurl"),data:i,type:"post",dataType:"json",success:function(i){acf.is_ajax_success(i)&&t.fetch_success(e,i.data)},complete:function(){t.fetch_complete(e)}})},fetch_complete:function(e){if(this.busy=0,this.toggle(e,"unlock"),this.valid){this.ignore=1;var t=e.children(".acf-error-message");t.exists()&&(t.addClass("-success"),t.children("p").html(acf._e("validation_successful"))),e.find(".acf-postbox.acf-hidden").remove(),acf.do_action("submit",e),this.$trigger?this.$trigger.click():e.submit(),this.toggle(e,"lock")}},fetch_success:function(e,t){if(t=acf.apply_filters("validation_complete",t,e),!t||t.valid||!t.errors)return void(this.valid=!0);this.valid=!1,this.$trigger=null;var i=null,a=0,n=acf._e("validation_failed");if(t.errors&&t.errors.length>0){for(var s in t.errors){var o=t.errors[s];if(o.input){var r=e.find('[name="'+o.input+'"]').first();if(r.exists()||(r=e.find('[name^="'+o.input+'"]').first()),r.exists()){a++;var l=acf.get_field_wrap(r);this.add_error(l,o.message),null===i&&(i=l)}}else n+=". "+o.message}1==a?n+=". "+acf._e("validation_failed_1"):a>1&&(n+=". "+acf._e("validation_failed_2").replace("%d",a))}var c=e.children(".acf-error-message");c.exists()||(c=$('

                '),e.prepend(c)),c.children("p").html(n),null===i&&(i=c),setTimeout(function(){$("html, body").animate({scrollTop:i.offset().top-$(window).height()/2},500)},1)},add_error:function(e,t){var i=this;e.addClass(this.error_class),void 0!==t&&(e.children(".acf-input").children("."+this.message_class).remove(),e.children(".acf-input").prepend('

                '+t+"

                "));var a=function(){i.remove_error(e),e.off("focus change","input, textarea, select",a)};e.on("focus change","input, textarea, select",a),acf.do_action("add_field_error",e)},remove_error:function(e){$message=e.children(".acf-input").children("."+this.message_class),e.removeClass(this.error_class),setTimeout(function(){acf.remove_el($message)},250),acf.do_action("remove_field_error",e)},add_warning:function(e,t){this.add_error(e,t),setTimeout(function(){acf.validation.remove_error(e)},1e3)},show_spinner:function(e){if(e.exists()){var t=acf.get("wp_version");parseFloat(t)>=4.2?e.addClass("is-active"):e.css("display","inline-block")}},hide_spinner:function(e){if(e.exists()){var t=acf.get("wp_version");parseFloat(t)>=4.2?e.removeClass("is-active"):e.css("display","none")}},disable_submit:function(e){e.exists()&&e.addClass("disabled button-disabled button-primary-disabled")},enable_submit:function(e){e.exists()&&e.removeClass("disabled button-disabled button-primary-disabled")}})}(jQuery),function($){acf.fields.wysiwyg=acf.field.extend({type:"wysiwyg",$el:null,$textarea:null,toolbars:{},actions:{load:"initialize",append:"initialize",remove:"disable",sortstart:"disable",sortstop:"enable"},focus:function(){this.$el=this.$field.find(".wp-editor-wrap").last(),this.$textarea=this.$el.find("textarea"),this.o=acf.get_data(this.$el),this.o.id=this.$textarea.attr("id")},initialize:function(){if("undefined"==typeof tinyMCEPreInit||"undefined"==typeof tinymce)return!1;var e=this.o.id,t=acf.get_uniqid("acf-editor-"),i=this.$el.outerHTML();i=acf.str_replace(e,t,i),this.$el.replaceWith(i),this.o.id=t;var a=this.get_mceInit(),n=this.get_qtInit();if(tinyMCEPreInit.mceInit[a.id]=a,tinyMCEPreInit.qtInit[n.id]=n,this.$el.hasClass("tmce-active"))try{tinymce.init(a)}catch(s){}try{var o=quicktags(n); +this._buttonsInit(o)}catch(s){}},get_mceInit:function(){var e=this.$field,t=this.get_toolbar(this.o.toolbar),i=$.extend({},tinyMCEPreInit.mceInit.acf_content);if(i.selector="#"+this.o.id,i.id=this.o.id,i.elements=this.o.id,t)for(var a=tinymce.majorVersion<4?"theme_advanced_buttons":"toolbar",n=1;5>n;n++)i[a+n]=acf.isset(t,n)?t[n]:"";return tinymce.majorVersion<4?i.setup=function(t){t.onInit.add(function(t,i){$(t.getBody()).on("focus",function(){acf.validation.remove_error(e)}),$(t.getBody()).on("blur",function(){t.save(),e.find("textarea").trigger("change")})})}:i.setup=function(t){t.on("focus",function(t){acf.validation.remove_error(e)}),t.on("blur",function(i){t.save(),e.find("textarea").trigger("change")})},i.wp_autoresize_on=!1,i=acf.apply_filters("wysiwyg_tinymce_settings",i,i.id)},get_qtInit:function(){var e=$.extend({},tinyMCEPreInit.qtInit.acf_content);return e.id=this.o.id,e=acf.apply_filters("wysiwyg_quicktags_settings",e,e.id)},disable:function(){try{var e=tinyMCE.get(this.o.id);e.save(),e.destroy()}catch(t){}},enable:function(){this.$el.hasClass("tmce-active")&&acf.isset(window,"switchEditors")&&switchEditors.go(this.o.id,"tmce")},get_toolbar:function(e){return"undefined"!=typeof this.toolbars[e]?this.toolbars[e]:!1},_buttonsInit:function(e){var t=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,";canvas=e.canvas,name=e.name,settings=e.settings,html="",theButtons={},use="",settings.buttons&&(use=","+settings.buttons+",");for(i in edButtons)edButtons[i]&&(id=edButtons[i].id,use&&-1!==t.indexOf(","+id+",")&&-1===use.indexOf(","+id+",")||edButtons[i].instance&&edButtons[i].instance!==inst||(theButtons[id]=edButtons[i],edButtons[i].html&&(html+=edButtons[i].html(name+"_"))));use&&-1!==use.indexOf(",fullscreen,")&&(theButtons.fullscreen=new qt.FullscreenButton,html+=theButtons.fullscreen.html(name+"_")),"rtl"===document.getElementsByTagName("html")[0].dir&&(theButtons.textdirection=new qt.TextDirectionButton,html+=theButtons.textdirection.html(name+"_")),e.toolbar.innerHTML=html,e.theButtons=theButtons}}),$(document).ready(function(){$("#wp-acf_content-wrap").exists()&&$("#wp-acf_content-wrap").parent().appendTo("body")})}(jQuery); diff --git a/core/field.php b/core/field.php index 00ac25d..2b7fd17 100644 --- a/core/field.php +++ b/core/field.php @@ -45,6 +45,7 @@ class acf_field { $this->add_action("acf/render_field/type={$this->name}", array($this, 'render_field'), 10, 1); $this->add_action("acf/render_field_settings/type={$this->name}", array($this, 'render_field_settings'), 10, 1); $this->add_action("acf/prepare_field/type={$this->name}", array($this, 'prepare_field'), 10, 1); + $this->add_action("acf/translate_field/type={$this->name}", array($this, 'translate_field'), 10, 1); // input actions diff --git a/core/input.php b/core/input.php index d8bfb2f..07ff25c 100644 --- a/core/input.php +++ b/core/input.php @@ -1,30 +1,23 @@ admin_enqueue_scripts = 'admin_enqueue_scripts'; $this->admin_head = 'admin_head'; $this->admin_footer = 'admin_footer'; + $this->enqueued = false; + $this->data = array(); // actions - add_action('acf/save_post', array($this, 'save_post'), 10, 1); - add_action('acf/input/admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'), 10, 0); - add_action('acf/input/admin_footer', array($this, 'admin_footer'), 10, 0); - - - // ajax - add_action( 'wp_ajax_acf/validate_save_post', array($this, 'ajax_validate_save_post') ); - add_action( 'wp_ajax_nopriv_acf/validate_save_post', array($this, 'ajax_validate_save_post') ); + add_action('acf/save_post', array($this, 'save_post'), 10, 1); } /* - * init + * get_data + * + * This function will return form data + * + * @type function + * @date 4/03/2016 + * @since 5.3.2 + * + * @param $key (mixed) + * @return (mixed) + */ + + function get_data( $key = false ) { + + // vars + $data = $this->data; + + + // key + if( $key && isset($data[ $key ]) ) { + + $data = $data[ $key ]; + + } + + + // return + return $data; + + } + + + /* + * set_data + * + * This function will se the form data + * + * @type function + * @date 4/03/2016 + * @since 5.3.2 + * + * @param $data (array) + * @return (array) + */ + + function set_data( $data ) { + + // defaults + $data = acf_parse_args($data, array( + 'post_id' => 0, // ID of current post + 'nonce' => 'post', // nonce used for $_POST validation + 'validation' => 1, // runs AJAX validation + 'ajax' => 0, // fetches new field groups via AJAX + )); + + + // update + $this->data = $data; + + + // enqueue uploader if page allows AJAX fields to appear + if( $data['ajax'] ) { + + add_action($this->admin_footer, 'acf_enqueue_uploader', 1); + + } + + + // return + return $data; + + } + + + /* + * enqueue * * This function will determin the actions to use for different pages * @@ -61,7 +124,15 @@ class acf_input { * @return n/a */ - function init() { + function enqueue() { + + // bail ealry if already enqueued + if( $this->enqueued ) return; + + + // update setting + $this->enqueued = true; + // global global $pagenow; @@ -89,84 +160,28 @@ class acf_input { // actions - acf_maybe_add_action($this->admin_enqueue_scripts, array($this, 'do_admin_enqueue_scripts'), 20 ); - acf_maybe_add_action($this->admin_head, array($this, 'do_admin_head'), 20 ); - acf_maybe_add_action($this->admin_footer, array($this, 'do_admin_footer'), 20 ); + acf_maybe_add_action($this->admin_enqueue_scripts, array($this, 'admin_enqueue_scripts'), 20 ); + acf_maybe_add_action($this->admin_head, array($this, 'admin_head'), 20 ); + acf_maybe_add_action($this->admin_footer, array($this, 'admin_footer'), 20 ); } - function do_admin_enqueue_scripts() { - - do_action('acf/input/admin_enqueue_scripts'); - - } - - function do_admin_head() { - - do_action('acf/input/admin_head'); - - } - - function do_admin_footer() { - - do_action('acf/input/admin_footer'); - - } - - - /* - * save_post - * - * This function will save the $_POST data - * - * @type function - * @date 24/10/2014 - * @since 5.0.9 - * - * @param $post_id (int) - * @return $post_id (int) - */ - - function save_post( $post_id = 0 ) { - - // bai learly if empty - if( empty($_POST['acf']) ) return; - - - // save $_POST data - foreach( $_POST['acf'] as $k => $v ) { - - // get field - $field = acf_get_field( $k ); - - - // continue if no field - if( !$field ) continue; - - - // update - acf_update_value( $v, $post_id, $field ); - - } - - } - /* * admin_enqueue_scripts * - * This function will enqueue all the required scripts / styles for ACF + * The acf input screen admin_enqueue_scripts * - * @type action (acf/input/admin_enqueue_scripts) - * @date 6/10/13 - * @since 5.0.0 + * @type function + * @date 4/03/2016 + * @since 5.3.2 * - * @param n/a + * @param n/a * @return n/a */ function admin_enqueue_scripts() { - + // scripts wp_enqueue_script('acf-input'); @@ -174,41 +189,63 @@ class acf_input { // styles wp_enqueue_style('acf-input'); + + // do action + do_action('acf/input/admin_enqueue_scripts'); + } - + + /* + * admin_head + * + * The acf input screen admin_head + * + * @type function + * @date 4/03/2016 + * @since 5.3.2 + * + * @param n/a + * @return n/a + */ + + function admin_head() { + + // do action + do_action('acf/input/admin_head'); + + } + + /* * admin_footer * - * description + * The acf input screen admin_footer * * @type function - * @date 7/10/13 - * @since 5.0.0 + * @date 4/03/2016 + * @since 5.3.2 * - * @param $post_id (int) - * @return $post_id (int) + * @param n/a + * @return n/a */ function admin_footer() { - // vars - $args = acf_get_setting('form_data'); - - // global global $wp_version; // options $o = array( - 'post_id' => $args['post_id'], + 'post_id' => acf_get_form_data('post_id'), 'nonce' => wp_create_nonce( 'acf_nonce' ), 'admin_url' => admin_url(), 'ajaxurl' => admin_url( 'admin-ajax.php' ), - 'ajax' => $args['ajax'], - 'validation' => $args['validation'], - 'wp_version' => $wp_version + 'ajax' => acf_get_form_data('ajax'), + 'validation' => acf_get_form_data('validation'), + 'wp_version' => $wp_version, + 'acf_version' => acf_get_setting('version') ); @@ -240,77 +277,64 @@ class acf_input { /* ]]> */ $v ) { - wp_send_json_error(); + // get field + $field = acf_get_field( $k ); + + + // continue if no field + if( !$field ) continue; + + + // update + acf_update_value( $v, $post_id, $field ); } - - - // vars - $json = array( - 'valid' => 1, - 'errors' => 0 - ); - - - // success - if( acf_validate_save_post() ) { - - wp_send_json_success($json); - - } - - - // update vars - $json['valid'] = 0; - $json['errors'] = acf_get_validation_errors(); - - - // return - wp_send_json_success($json); - + } } - -// global -global $acf_input; - - // initialize -$acf_input = new acf_input(); +acf()->input = new acf_input(); +endif; // class_exists check -// class_exists check -endif; /* * acf_enqueue_scripts * -* This function is used to setup all actions / functionality for an admin page which will contain ACF inputs +* alias of acf()->form->enqueue() * * @type function * @date 6/10/13 @@ -322,13 +346,48 @@ endif; function acf_enqueue_scripts() { - // globals - global $acf_input; + return acf()->input->enqueue(); +} + + +/* +* acf_get_form_data +* +* alias of acf()->form->get_data() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_form_data( $key = false ) { - // init - $acf_input->init(); + return acf()->input->get_data( $key ); + +} + + +/* +* acf_set_form_data +* +* alias of acf()->form->set_data() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_set_form_data( $data = array() ) { + return acf()->input->set_data( $data ); + } @@ -389,26 +448,10 @@ function acf_form_data( $args = array() ) { acf_enqueue_scripts(); - // defaults - $args = acf_parse_args($args, array( - 'post_id' => 0, // ID of current post - 'nonce' => 'post', // nonce used for $_POST validation - 'validation' => 1, // runs AJAX validation - 'ajax' => 0, // fetches new field groups via AJAX - )); + // set form data + $args = acf_set_form_data( $args ); - // save form_data for later actions - acf_update_setting('form_data', $args); - - - // enqueue uploader if page allows AJAX fields to appear - if( $args['ajax'] ) { - - add_action('admin_footer', 'acf_enqueue_uploader', 1); - - } - ?>
                @@ -439,6 +482,12 @@ function acf_save_post( $post_id = 0 ) { if( empty($_POST['acf']) ) return false; + // set form data + acf_set_form_data(array( + 'post_id' => $post_id + )); + + // hook for 3rd party customization do_action('acf/save_post', $post_id); @@ -447,198 +496,3 @@ function acf_save_post( $post_id = 0 ) { return true; } - - -/* -* acf_validate_save_post -* -* This function is run to validate post data -* -* @type function -* @date 25/11/2013 -* @since 5.0.0 -* -* @param $show_errors (boolean) if true, errors will be shown via a wo_die screen -* @return (boolean) -*/ - -function acf_validate_save_post( $show_errors = false ) { - - // validate required fields - if( !empty($_POST['acf']) ) { - - $keys = array_keys($_POST['acf']); - - // loop through and save $_POST data - foreach( $keys as $key ) { - - // get field - $field = acf_get_field( $key ); - - - // validate - acf_validate_value( $_POST['acf'][ $key ], $field, "acf[{$key}]" ); - - } - // foreach($fields as $key => $value) - } - // if($fields) - - - // hook for 3rd party customization - do_action('acf/validate_save_post'); - - - // check errors - if( $errors = acf_get_validation_errors() ) { - - if( $show_errors ) { - - $message = '

                Validation failed

                  '; - - foreach( $errors as $error ) { - - $message .= '
                • ' . $error['message'] . '
                • '; - - } - - $message .= '
                '; - - wp_die( $message, 'Validation failed' ); - - } - - return false; - - } - - - // return - return true; - -} - - -/* -* acf_validate_value -* -* This function will validate a value for a field -* -* @type function -* @date 27/10/2014 -* @since 5.0.9 -* -* @param $value (mixed) -* @param $field (array) -* @param $input (string) name attribute of DOM elmenet -* @return (boolean) -*/ - -function acf_validate_value( $value, $field, $input ) { - - // vars - $valid = true; - $message = sprintf( __( '%s value is required', 'acf' ), $field['label'] ); - - - // valid - if( $field['required'] ) { - - // valid is set to false if the value is empty, but allow 0 as a valid value - if( empty($value) && !is_numeric($value) ) { - - $valid = false; - - } - - } - - - // filter for 3rd party customization - $valid = apply_filters( "acf/validate_value", $valid, $value, $field, $input ); - $valid = apply_filters( "acf/validate_value/type={$field['type']}", $valid, $value, $field, $input ); - $valid = apply_filters( "acf/validate_value/name={$field['name']}", $valid, $value, $field, $input ); - $valid = apply_filters( "acf/validate_value/key={$field['key']}", $valid, $value, $field, $input ); - - - // allow $valid to be a custom error message - if( !empty($valid) && is_string($valid) ) { - - $message = $valid; - $valid = false; - - } - - - if( !$valid ) { - - acf_add_validation_error( $input, $message ); - return false; - - } - - - // return - return true; - -} - - -/* -* acf_add_validation_error -* -* This function will add an error message for a field -* -* @type function -* @date 25/11/2013 -* @since 5.0.0 -* -* @param $input (string) name attribute of DOM elmenet -* @param $message (string) error message -* @return $post_id (int) -*/ - -function acf_add_validation_error( $input, $message = '' ) { - - // instantiate array if empty - if( empty($GLOBALS['acf_validation_errors']) ) { - - $GLOBALS['acf_validation_errors'] = array(); - - } - - - // add to array - $GLOBALS['acf_validation_errors'][] = array( - 'input' => $input, - 'message' => $message - ); - -} - - -/* -* acf_add_validation_error -* -* This function will return any validation errors -* -* @type function -* @date 25/11/2013 -* @since 5.0.0 -* -* @param n/a -* @return (array|boolean) -*/ - -function acf_get_validation_errors() { - - // bail early if no errors - if( empty($GLOBALS['acf_validation_errors']) ) return false; - - - // return - return $GLOBALS['acf_validation_errors']; - -} - -?> diff --git a/core/location.php b/core/location.php index 56171fd..cf55d6d 100644 --- a/core/location.php +++ b/core/location.php @@ -1060,39 +1060,25 @@ class acf_location { // validate - if( ! $comment ) { - - return false; - - } + if( !$comment ) return false; - // compare - if( $rule['operator'] == "==" ) { - - $match = ( $comment == $rule['value'] ); - - // override for "all" - if( $rule['value'] == "all" ) { - - $match = true; - - } - - } elseif( $rule['operator'] == "!=" ) { - - $match = ( $comment != $rule['value'] ); - - // override for "all" - if( $rule['value'] == "all" ) { - - $match = false; - - } - + // match + $match = ( $comment === $rule['value'] ); + + + // override for "all" + if( $rule['value'] == "all" ) $match = true; + + + // reverse if 'not equal to' + if( $rule['operator'] === '!=' ) { + + $match = !$match; + } - + // return return $match; diff --git a/core/loop.php b/core/loop.php new file mode 100644 index 0000000..3e04460 --- /dev/null +++ b/core/loop.php @@ -0,0 +1,333 @@ +loops = array(); + + } + + + /* + * is_empty + * + * This function will return true if no loops exist + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param n/a + * @return (boolean) + */ + + function is_empty() { + + return empty( $this->loops ); + + } + + + /* + * is_loop + * + * This function will return true if a loop exists for the given array index + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $i (int) + * @return (boolean) + */ + + function is_loop( $i = 0 ) { + + return isset( $this->loops[ $i ] ); + + } + + + /* + * get_i + * + * This function will return a valid array index for the given $i + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $i (mixed) + * @return (int) + */ + + function get_i( $i = 0 ) { + + // 'active' + if( $i === 'active' ) $i = -1; + + + // 'previous' + if( $i === 'previous' ) $i = -2; + + + // allow negative to look at end of loops + if( $i < 0 ) { + + $i = count($this->loops) + $i; + + } + + + // return + return $i; + + } + + + /* + * add_loop + * + * This function will add a new loop + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $loop (array) + * @return n/a + */ + + function add_loop( $loop = array() ) { + + // defaults + $loop = wp_parse_args( $loop, array( + 'selector' => '', + 'name' => '', + 'value' => false, + 'field' => false, + 'i' => -1, + 'post_id' => 0, + )); + + + // append + $this->loops[] = $loop; + + } + + + /* + * update_loop + * + * This function will update a loop's setting + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $i (mixed) + * @param $key (string) the loop setting name + * @param $value (mixed) the loop setting value + * @return (boolean) true on success + */ + + function update_loop( $i = 'active', $key = null, $value = null ) { + + // i + $i = $this->get_i( $i ); + + + // bail early if no set + if( !$this->is_loop($i) ) return false; + + + // set + $this->loops[ $i ][ $key ] = $value; + + + // return + return true; + + } + + + /* + * get_loop + * + * This function will return a loop, or loop's setting for a given index & key + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $i (mixed) + * @param $key (string) the loop setting name + * @return (mixed) false on failure + */ + + function get_loop( $i = 'active', $key = null ) { + + // i + $i = $this->get_i( $i ); + + + // bail early if no set + if( !$this->is_loop($i) ) return false; + + + // check for key + if( $key !== null ) { + + return $this->loops[ $i ][ $key ]; + + } + + + // return + return $this->loops[ $i ]; + + } + + + /* + * remove_loop + * + * This function will remove a loop + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $i (mixed) + * @return (boolean) true on success + */ + + function remove_loop( $i = 'active' ) { + + // i + $i = $this->get_i( $i ); + + + // bail early if no set + if( !$this->is_loop($i) ) return false; + + + // remove + unset($this->loops[ $i ]); + + + // reset keys + $this->loops = array_values( $this->loops ); + + } + +} + +// initialize +acf()->loop = new acf_loop(); + +endif; // class_exists check + + + +/* +* acf_add_loop +* +* alias of acf()->loop->add_loop() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_add_loop( $loop = array() ) { + + return acf()->loop->add_loop( $loop ); + +} + + +/* +* acf_update_loop +* +* alias of acf()->loop->update_loop() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_update_loop( $i = 'active', $key = null, $value = null ) { + + return acf()->loop->update_loop( $i, $key, $value ); + +} + + +/* +* acf_get_loop +* +* alias of acf()->loop->get_loop() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_loop( $i = 'active', $key = null ) { + + return acf()->loop->get_loop( $i, $key ); + +} + + +/* +* acf_remove_loop +* +* alias of acf()->loop->remove_loop() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_remove_loop( $i = 'active' ) { + + return acf()->loop->remove_loop( $i ); + +} + +?> diff --git a/core/validation.php b/core/validation.php new file mode 100644 index 0000000..b8cefd6 --- /dev/null +++ b/core/validation.php @@ -0,0 +1,434 @@ +errors = array(); + + + // ajax + add_action('wp_ajax_acf/validate_save_post', array($this, 'ajax_validate_save_post')); + add_action('wp_ajax_nopriv_acf/validate_save_post', array($this, 'ajax_validate_save_post')); + + } + + + /* + * add_error + * + * This function will add an error message for a field + * + * @type function + * @date 25/11/2013 + * @since 5.0.0 + * + * @param $input (string) name attribute of DOM elmenet + * @param $message (string) error message + * @return $post_id (int) + */ + + function add_error( $input, $message ) { + + // add to array + $this->errors[] = array( + 'input' => $input, + 'message' => $message + ); + + } + + + /* + * get_error + * + * This function will return an error for a given input + * + * @type function + * @date 5/03/2016 + * @since 5.3.2 + * + * @param $input (string) name attribute of DOM elmenet + * @return (mixed) + */ + + function get_error( $input ) { + + // bail early if no errors + if( empty($this->errors) ) return false; + + + // loop + foreach( $this->errors as $error ) { + + if( $error['input'] === $input ) return $error; + + } + + + // return + return false; + + } + + + /* + * get_errors + * + * This function will return validation errors + * + * @type function + * @date 25/11/2013 + * @since 5.0.0 + * + * @param n/a + * @return (array|boolean) + */ + + function get_errors() { + + // bail early if no errors + if( empty($this->errors) ) return false; + + + // return + return $this->errors; + + } + + + /* + * reset_errors + * + * This function will remove all errors + * + * @type function + * @date 4/03/2016 + * @since 5.3.2 + * + * @param n/a + * @return n/a + */ + + function reset_errors() { + + $this->errors = array(); + + } + + + /* + * ajax_validate_save_post + * + * This function will validate the $_POST data via AJAX + * + * @type function + * @date 27/10/2014 + * @since 5.0.9 + * + * @param n/a + * @return n/a + */ + + function ajax_validate_save_post() { + + // bail early if _acfnonce is missing + if( !isset($_POST['_acfnonce']) ) { + + wp_send_json_error(); + + } + + + // vars + $json = array( + 'valid' => 1, + 'errors' => 0 + ); + + + // success + if( acf_validate_save_post() ) { + + wp_send_json_success($json); + + } + + + // update vars + $json['valid'] = 0; + $json['errors'] = acf_get_validation_errors(); + + + // return + wp_send_json_success($json); + + } + + + /* + * validate_value + * + * This function will validate a field's value + * + * @type function + * @date 27/10/2014 + * @since 5.0.9 + * + * @param $value (mixed) + * @param $field (array) + * @param $input (string) name attribute of DOM elmenet + * @return (boolean) + */ + + function validate_value( $value, $field, $input ) { + + // vars + $valid = true; + $message = sprintf( __( '%s value is required', 'acf' ), $field['label'] ); + + + // valid + if( $field['required'] ) { + + // valid is set to false if the value is empty, but allow 0 as a valid value + if( empty($value) && !is_numeric($value) ) { + + $valid = false; + + } + + } + + + // filter for 3rd party customization + $valid = apply_filters( "acf/validate_value", $valid, $value, $field, $input ); + $valid = apply_filters( "acf/validate_value/type={$field['type']}", $valid, $value, $field, $input ); + $valid = apply_filters( "acf/validate_value/name={$field['name']}", $valid, $value, $field, $input ); + $valid = apply_filters( "acf/validate_value/key={$field['key']}", $valid, $value, $field, $input ); + + + // allow $valid to be a custom error message + if( !empty($valid) && is_string($valid) ) { + + $message = $valid; + $valid = false; + + } + + + if( !$valid ) { + + acf_add_validation_error( $input, $message ); + return false; + + } + + + // return + return true; + + } + + + /* + * validate_save_post + * + * This function will validate $_POST data and add errors + * + * @type function + * @date 25/11/2013 + * @since 5.0.0 + * + * @param $show_errors (boolean) if true, errors will be shown via a wp_die screen + * @return (boolean) + */ + + function validate_save_post( $show_errors = false ) { + + // validate fields + if( !empty($_POST['acf']) ) { + + // loop + foreach( $_POST['acf'] as $field_key => $value ) { + + // get field + $field = acf_get_field( $field_key ); + $input = 'acf[' . $field_key . ']'; + + + // bail early if not found + if( !$field ) continue; + + + // validate + acf_validate_value( $value, $field, $input ); + + } + + } + + + // action for 3rd party customization + do_action('acf/validate_save_post'); + + + // vars + $errors = acf_get_validation_errors(); + + + // bail ealry if no errors + if( !$errors ) return true; + + + // show errors + if( $show_errors ) { + + $message = '

                Validation failed

                '; + $message .= '
                  '; + foreach( $errors as $error ) { + + $message .= '
                • ' . $error['message'] . '
                • '; + + } + $message .= '
                '; + + + // die + wp_die( $message, 'Validation failed' ); + + } + + + // return + return false; + + } + +} + +// initialize +acf()->validation = new acf_validation(); + +endif; // class_exists check + + + + +/* +* acf_add_validation_error +* +* alias of acf()->validation->add_error() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_add_validation_error( $input, $message = '' ) { + + return acf()->validation->add_error( $input, $message ); + +} + + +/* +* acf_get_validation_errors +* +* alias of acf()->validation->get_errors() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_validation_errors() { + + return acf()->validation->get_errors(); + +} + + +/* +* acf_reset_validation_errors +* +* alias of acf()->validation->reset_errors() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_reset_validation_errors() { + + return acf()->validation->reset_errors(); + +} + + +/* +* acf_validate_save_post +* +* alias of acf()->validation->validate_save_post() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_validate_save_post( $show_errors = false ) { + + return acf()->validation->validate_save_post( $show_errors ); + +} + + +/* +* acf_validate_value +* +* alias of acf()->validation->validate_value() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_validate_value( $value, $field, $input ) { + + return acf()->validation->validate_value( $value, $field, $input ); + +} diff --git a/fields/checkbox.php b/fields/checkbox.php index 80f6f9a..156d822 100644 --- a/fields/checkbox.php +++ b/fields/checkbox.php @@ -271,11 +271,7 @@ class acf_field_checkbox extends acf_field { // decode choices (convert to array) $field['choices'] = acf_decode_choices($field['choices']); - $field['default_value'] = acf_decode_choices($field['default_value']); - - - // use only keys for default value - $field['default_value'] = array_keys($field['default_value']); + $field['default_value'] = acf_decode_choices($field['default_value'], true); // return @@ -322,6 +318,31 @@ class acf_field_checkbox extends acf_field { return $value; } + + /* + * translate_field + * + * This function will translate field settings + * + * @type function + * @date 8/03/2016 + * @since 5.3.2 + * + * @param $field (array) + * @return $field + */ + + function translate_field( $field ) { + + // translate + $field['choices'] = acf_translate( $field['choices'] ); + + + // return + return $field; + + } + } new acf_field_checkbox(); diff --git a/fields/color_picker.php b/fields/color_picker.php index 270102e..5e40828 100644 --- a/fields/color_picker.php +++ b/fields/color_picker.php @@ -112,26 +112,18 @@ class acf_field_color_picker extends acf_field { function render_field( $field ) { // vars - $atts = array(); + $text = acf_get_sub_array( $field, array('id', 'class', 'name', 'value') ); + $hidden = acf_get_sub_array( $field, array('name', 'value') ); $e = ''; - // populate atts - foreach( array( 'id', 'class', 'name', 'value' ) as $k ) { - - $atts[ $k ] = $field[ $k ]; - - } - - // render - $e .= '
                '; - $e .= ''; - $e .= '
                '; - - - // return - echo $e; + ?> +
                + + /> +
                + comment_ID}"; - + // get field groups $field_groups = acf_get_field_groups(array( - 'comment' => $comment->comment_ID + 'comment' => get_post_type( $comment->comment_post_ID ) )); @@ -199,13 +199,17 @@ class acf_form_comment { function add_comment() { + // global + global $post; + + // vars $post_id = "comment_0"; // get field groups $field_groups = acf_get_field_groups(array( - 'comment' => 'new' + 'comment' => $post->post_type )); diff --git a/forms/taxonomy.php b/forms/taxonomy.php index 18d0151..72e045e 100644 --- a/forms/taxonomy.php +++ b/forms/taxonomy.php @@ -67,7 +67,7 @@ class acf_form_taxonomy { // validate page - if( $pagenow == 'edit-tags.php' ) { + if( $pagenow === 'edit-tags.php' || $pagenow === 'term.php' ) { return true; diff --git a/lang/acf-pl_PL.mo b/lang/acf-pl_PL.mo index 6e9a3bf..038e10b 100644 Binary files a/lang/acf-pl_PL.mo and b/lang/acf-pl_PL.mo differ diff --git a/lang/acf-pl_PL.po b/lang/acf-pl_PL.po index 9f39d08..dda0294 100644 --- a/lang/acf-pl_PL.po +++ b/lang/acf-pl_PL.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" "POT-Creation-Date: 2015-08-11 23:35+0200\n" -"PO-Revision-Date: 2015-12-01 13:20+0100\n" +"PO-Revision-Date: 2016-03-09 12:48+0100\n" "Last-Translator: Ralf Koller \n" "Language-Team: Digital Factory \n" "Language: pl_PL\n" @@ -2578,7 +2578,7 @@ msgstr "Minimalna liczba rzędów" #: pro/fields/repeater.php:382 msgid "Maximum Rows" -msgstr "Minimalna liczba rzędów" +msgstr "Maksymalna liczba rzędów" #. Plugin Name of the plugin/theme msgid "Advanced Custom Fields Pro" diff --git a/lang/acf.pot b/lang/acf.pot index 9efb2f6..3b911a4 100644 --- a/lang/acf.pot +++ b/lang/acf.pot @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Advanced Custom Fields\n" "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" -"POT-Creation-Date: 2016-02-05 11:05+1000\n" +"POT-Creation-Date: 2016-03-15 10:53+1000\n" "PO-Revision-Date: 2015-06-11 13:00+1000\n" "Last-Translator: Elliot Condon \n" "Language-Team: Elliot Condon \n" @@ -22,95 +22,95 @@ msgstr "" "X-Poedit-SearchPath-0: .\n" "X-Poedit-SearchPathExcluded-0: *.js\n" -#: acf.php:63 +#: acf.php:60 msgid "Advanced Custom Fields" msgstr "" -#: acf.php:266 admin/admin.php:61 +#: acf.php:263 admin/admin.php:61 msgid "Field Groups" msgstr "" -#: acf.php:267 +#: acf.php:264 msgid "Field Group" msgstr "" -#: acf.php:268 acf.php:300 admin/admin.php:62 -#: pro/fields/flexible-content.php:506 +#: acf.php:265 acf.php:297 admin/admin.php:62 +#: pro/fields/flexible-content.php:496 msgid "Add New" msgstr "" -#: acf.php:269 +#: acf.php:266 msgid "Add New Field Group" msgstr "" -#: acf.php:270 +#: acf.php:267 msgid "Edit Field Group" msgstr "" -#: acf.php:271 +#: acf.php:268 msgid "New Field Group" msgstr "" -#: acf.php:272 +#: acf.php:269 msgid "View Field Group" msgstr "" -#: acf.php:273 +#: acf.php:270 msgid "Search Field Groups" msgstr "" -#: acf.php:274 +#: acf.php:271 msgid "No Field Groups found" msgstr "" -#: acf.php:275 +#: acf.php:272 msgid "No Field Groups found in Trash" msgstr "" -#: acf.php:298 admin/field-group.php:176 admin/field-group.php:223 +#: acf.php:295 admin/field-group.php:176 admin/field-group.php:223 #: admin/field-groups.php:528 msgid "Fields" msgstr "" -#: acf.php:299 +#: acf.php:296 msgid "Field" msgstr "" -#: acf.php:301 +#: acf.php:298 msgid "Add New Field" msgstr "" -#: acf.php:302 +#: acf.php:299 msgid "Edit Field" msgstr "" -#: acf.php:303 admin/views/field-group-fields.php:18 +#: acf.php:300 admin/views/field-group-fields.php:18 #: admin/views/settings-info.php:111 msgid "New Field" msgstr "" -#: acf.php:304 +#: acf.php:301 msgid "View Field" msgstr "" -#: acf.php:305 +#: acf.php:302 msgid "Search Fields" msgstr "" -#: acf.php:306 +#: acf.php:303 msgid "No Fields found" msgstr "" -#: acf.php:307 +#: acf.php:304 msgid "No Fields found in Trash" msgstr "" -#: acf.php:346 admin/field-group.php:316 admin/field-groups.php:586 +#: acf.php:343 admin/field-group.php:316 admin/field-groups.php:586 #: admin/views/field-group-options.php:13 msgid "Disabled" msgstr "" -#: acf.php:351 +#: acf.php:348 #, php-format msgid "Disabled (%s)" msgid_plural "Disabled (%s)" @@ -173,7 +173,7 @@ msgstr "" msgid "Field group title is required" msgstr "" -#: admin/field-group.php:221 api/api-field-group.php:581 +#: admin/field-group.php:221 api/api-field-group.php:620 msgid "copy" msgstr "" @@ -181,7 +181,7 @@ msgstr "" #: admin/views/field-group-field-conditional-logic.php:62 #: admin/views/field-group-field-conditional-logic.php:162 #: admin/views/field-group-locations.php:59 -#: admin/views/field-group-locations.php:135 api/api-helpers.php:3401 +#: admin/views/field-group-locations.php:135 api/api-helpers.php:3639 msgid "or" msgstr "" @@ -205,7 +205,7 @@ msgstr "" msgid "Null" msgstr "" -#: admin/field-group.php:229 core/input.php:217 +#: admin/field-group.php:229 core/input.php:254 msgid "The changes you made will be lost if you navigate away from this page" msgstr "" @@ -221,79 +221,79 @@ msgstr "" msgid "Active" msgstr "" -#: admin/field-group.php:785 +#: admin/field-group.php:789 msgid "Front Page" msgstr "" -#: admin/field-group.php:786 +#: admin/field-group.php:790 msgid "Posts Page" msgstr "" -#: admin/field-group.php:787 +#: admin/field-group.php:791 msgid "Top Level Page (no parent)" msgstr "" -#: admin/field-group.php:788 +#: admin/field-group.php:792 msgid "Parent Page (has children)" msgstr "" -#: admin/field-group.php:789 +#: admin/field-group.php:793 msgid "Child Page (has parent)" msgstr "" -#: admin/field-group.php:805 +#: admin/field-group.php:809 msgid "Default Template" msgstr "" -#: admin/field-group.php:827 +#: admin/field-group.php:832 msgid "Logged in" msgstr "" -#: admin/field-group.php:828 +#: admin/field-group.php:833 msgid "Viewing front end" msgstr "" -#: admin/field-group.php:829 +#: admin/field-group.php:834 msgid "Viewing back end" msgstr "" -#: admin/field-group.php:848 +#: admin/field-group.php:853 msgid "Super Admin" msgstr "" -#: admin/field-group.php:859 admin/field-group.php:867 -#: admin/field-group.php:881 admin/field-group.php:888 -#: admin/field-group.php:903 admin/field-group.php:913 fields/file.php:235 +#: admin/field-group.php:864 admin/field-group.php:872 +#: admin/field-group.php:886 admin/field-group.php:893 +#: admin/field-group.php:910 admin/field-group.php:927 fields/file.php:235 #: fields/image.php:231 pro/fields/gallery.php:661 msgid "All" msgstr "" -#: admin/field-group.php:868 +#: admin/field-group.php:873 msgid "Add / Edit" msgstr "" -#: admin/field-group.php:869 +#: admin/field-group.php:874 msgid "Register" msgstr "" -#: admin/field-group.php:1100 +#: admin/field-group.php:1114 msgid "Move Complete." msgstr "" -#: admin/field-group.php:1101 +#: admin/field-group.php:1115 #, php-format msgid "The %s field can now be found in the %s field group" msgstr "" -#: admin/field-group.php:1103 +#: admin/field-group.php:1117 msgid "Close Window" msgstr "" -#: admin/field-group.php:1138 +#: admin/field-group.php:1152 msgid "Please select the destination for this field" msgstr "" -#: admin/field-group.php:1145 +#: admin/field-group.php:1159 msgid "Move Field" msgstr "" @@ -332,12 +332,13 @@ msgstr[1] "" msgid "Sync available" msgstr "" -#: admin/field-groups.php:525 +#: admin/field-groups.php:525 pro/fields/gallery.php:374 msgid "Title" msgstr "" #: admin/field-groups.php:526 admin/views/field-group-options.php:93 #: admin/views/update-network.php:20 admin/views/update-network.php:28 +#: pro/fields/gallery.php:401 msgid "Description" msgstr "" @@ -404,7 +405,7 @@ msgid "Duplicate this item" msgstr "" #: admin/field-groups.php:684 admin/field-groups.php:700 -#: admin/views/field-group-field.php:58 pro/fields/flexible-content.php:505 +#: admin/views/field-group-field.php:58 pro/fields/flexible-content.php:495 msgid "Duplicate" msgstr "" @@ -496,24 +497,24 @@ msgstr "" #: admin/views/field-group-field-conditional-logic.php:40 #: admin/views/field-group-field.php:140 fields/checkbox.php:246 -#: fields/message.php:144 fields/page_link.php:553 fields/page_link.php:567 -#: fields/post_object.php:419 fields/post_object.php:433 fields/select.php:377 +#: fields/message.php:144 fields/page_link.php:539 fields/page_link.php:553 +#: fields/post_object.php:403 fields/post_object.php:417 fields/select.php:377 #: fields/select.php:391 fields/select.php:405 fields/select.php:419 -#: fields/tab.php:161 fields/taxonomy.php:808 fields/taxonomy.php:822 -#: fields/taxonomy.php:836 fields/taxonomy.php:850 fields/user.php:461 -#: fields/user.php:475 fields/wysiwyg.php:415 +#: fields/tab.php:130 fields/taxonomy.php:784 fields/taxonomy.php:798 +#: fields/taxonomy.php:812 fields/taxonomy.php:826 fields/user.php:416 +#: fields/user.php:430 fields/wysiwyg.php:415 #: pro/admin/views/settings-updates.php:93 msgid "Yes" msgstr "" #: admin/views/field-group-field-conditional-logic.php:41 #: admin/views/field-group-field.php:141 fields/checkbox.php:247 -#: fields/message.php:145 fields/page_link.php:554 fields/page_link.php:568 -#: fields/post_object.php:420 fields/post_object.php:434 fields/select.php:378 +#: fields/message.php:145 fields/page_link.php:540 fields/page_link.php:554 +#: fields/post_object.php:404 fields/post_object.php:418 fields/select.php:378 #: fields/select.php:392 fields/select.php:406 fields/select.php:420 -#: fields/tab.php:162 fields/taxonomy.php:723 fields/taxonomy.php:809 -#: fields/taxonomy.php:823 fields/taxonomy.php:837 fields/taxonomy.php:851 -#: fields/user.php:462 fields/user.php:476 fields/wysiwyg.php:416 +#: fields/tab.php:131 fields/taxonomy.php:699 fields/taxonomy.php:785 +#: fields/taxonomy.php:799 fields/taxonomy.php:813 fields/taxonomy.php:827 +#: fields/user.php:417 fields/user.php:431 fields/wysiwyg.php:416 #: pro/admin/views/settings-updates.php:103 msgid "No" msgstr "" @@ -566,12 +567,12 @@ msgstr "" msgid "Delete field" msgstr "" -#: admin/views/field-group-field.php:60 pro/fields/flexible-content.php:504 +#: admin/views/field-group-field.php:60 pro/fields/flexible-content.php:494 msgid "Delete" msgstr "" #: admin/views/field-group-field.php:68 fields/oembed.php:225 -#: fields/taxonomy.php:924 +#: fields/taxonomy.php:900 msgid "Error" msgstr "" @@ -599,7 +600,7 @@ msgstr "" msgid "Field Type" msgstr "" -#: admin/views/field-group-field.php:121 fields/tab.php:134 +#: admin/views/field-group-field.php:121 fields/tab.php:103 msgid "Instructions" msgstr "" @@ -635,11 +636,11 @@ msgstr "" msgid "Order" msgstr "" -#: admin/views/field-group-fields.php:30 pro/fields/flexible-content.php:531 +#: admin/views/field-group-fields.php:30 pro/fields/flexible-content.php:521 msgid "Label" msgstr "" -#: admin/views/field-group-fields.php:31 pro/fields/flexible-content.php:544 +#: admin/views/field-group-fields.php:31 pro/fields/flexible-content.php:534 msgid "Name" msgstr "" @@ -785,11 +786,11 @@ msgstr "" msgid "Label placement" msgstr "" -#: admin/views/field-group-options.php:59 fields/tab.php:148 +#: admin/views/field-group-options.php:59 fields/tab.php:117 msgid "Top aligned" msgstr "" -#: admin/views/field-group-options.php:60 fields/tab.php:149 +#: admin/views/field-group-options.php:60 fields/tab.php:118 msgid "Left Aligned" msgstr "" @@ -1265,134 +1266,134 @@ msgstr "" msgid "No updates available" msgstr "" -#: api/api-helpers.php:909 +#: api/api-helpers.php:937 msgid "Thumbnail" msgstr "" -#: api/api-helpers.php:910 +#: api/api-helpers.php:938 msgid "Medium" msgstr "" -#: api/api-helpers.php:911 +#: api/api-helpers.php:939 msgid "Large" msgstr "" -#: api/api-helpers.php:959 +#: api/api-helpers.php:987 msgid "Full Size" msgstr "" -#: api/api-helpers.php:1149 api/api-helpers.php:1711 +#: api/api-helpers.php:1177 api/api-helpers.php:1739 msgid "(no title)" msgstr "" -#: api/api-helpers.php:3322 +#: api/api-helpers.php:3560 #, php-format msgid "Image width must be at least %dpx." msgstr "" -#: api/api-helpers.php:3327 +#: api/api-helpers.php:3565 #, php-format msgid "Image width must not exceed %dpx." msgstr "" -#: api/api-helpers.php:3343 +#: api/api-helpers.php:3581 #, php-format msgid "Image height must be at least %dpx." msgstr "" -#: api/api-helpers.php:3348 +#: api/api-helpers.php:3586 #, php-format msgid "Image height must not exceed %dpx." msgstr "" -#: api/api-helpers.php:3366 +#: api/api-helpers.php:3604 #, php-format msgid "File size must be at least %s." msgstr "" -#: api/api-helpers.php:3371 +#: api/api-helpers.php:3609 #, php-format msgid "File size must must not exceed %s." msgstr "" -#: api/api-helpers.php:3405 +#: api/api-helpers.php:3643 #, php-format msgid "File type must be %s." msgstr "" -#: api/api-template.php:1069 +#: api/api-template.php:1004 msgid "Spam Detected" msgstr "" -#: api/api-template.php:1214 pro/fields/gallery.php:572 +#: api/api-template.php:1147 pro/fields/gallery.php:572 msgid "Update" msgstr "" -#: api/api-template.php:1215 +#: api/api-template.php:1148 msgid "Post updated" msgstr "" -#: core/field.php:131 +#: core/field.php:132 msgid "Basic" msgstr "" -#: core/field.php:132 +#: core/field.php:133 msgid "Content" msgstr "" -#: core/field.php:133 +#: core/field.php:134 msgid "Choice" msgstr "" -#: core/field.php:134 +#: core/field.php:135 msgid "Relational" msgstr "" -#: core/field.php:135 +#: core/field.php:136 msgid "jQuery" msgstr "" -#: core/field.php:136 fields/checkbox.php:226 fields/radio.php:231 -#: pro/fields/flexible-content.php:501 pro/fields/flexible-content.php:550 -#: pro/fields/repeater.php:467 +#: core/field.php:137 fields/checkbox.php:226 fields/radio.php:231 +#: pro/fields/flexible-content.php:491 pro/fields/flexible-content.php:540 +#: pro/fields/repeater.php:459 msgid "Layout" msgstr "" -#: core/input.php:218 +#: core/input.php:255 msgid "Expand Details" msgstr "" -#: core/input.php:219 +#: core/input.php:256 msgid "Collapse Details" msgstr "" -#: core/input.php:220 +#: core/input.php:257 msgid "Validation successful" msgstr "" -#: core/input.php:221 +#: core/input.php:258 msgid "Validation failed" msgstr "" -#: core/input.php:222 +#: core/input.php:259 msgid "1 field requires attention" msgstr "" -#: core/input.php:223 +#: core/input.php:260 #, php-format msgid "%d fields require attention" msgstr "" -#: core/input.php:224 +#: core/input.php:261 msgid "Restricted" msgstr "" -#: core/input.php:541 +#: core/validation.php:207 #, php-format msgid "%s value is required" msgstr "" -#: fields/checkbox.php:36 fields/taxonomy.php:790 +#: fields/checkbox.php:36 fields/taxonomy.php:766 msgid "Checkbox" msgstr "" @@ -1416,7 +1417,7 @@ msgstr "" msgid "red : Red" msgstr "" -#: fields/checkbox.php:217 fields/color_picker.php:155 fields/email.php:124 +#: fields/checkbox.php:217 fields/color_picker.php:147 fields/email.php:124 #: fields/number.php:150 fields/radio.php:222 fields/select.php:363 #: fields/text.php:148 fields/textarea.php:145 fields/true_false.php:115 #: fields/url.php:117 fields/wysiwyg.php:376 @@ -1571,7 +1572,7 @@ msgstr "" msgid "Add File" msgstr "" -#: fields/file.php:214 fields/image.php:200 fields/taxonomy.php:859 +#: fields/file.php:214 fields/image.php:200 fields/taxonomy.php:835 msgid "Return Value" msgstr "" @@ -1825,33 +1826,33 @@ msgstr "" msgid "Archives" msgstr "" -#: fields/page_link.php:520 fields/post_object.php:386 +#: fields/page_link.php:506 fields/post_object.php:370 #: fields/relationship.php:689 msgid "Filter by Post Type" msgstr "" -#: fields/page_link.php:528 fields/post_object.php:394 +#: fields/page_link.php:514 fields/post_object.php:378 #: fields/relationship.php:697 msgid "All post types" msgstr "" -#: fields/page_link.php:534 fields/post_object.php:400 +#: fields/page_link.php:520 fields/post_object.php:384 #: fields/relationship.php:703 msgid "Filter by Taxonomy" msgstr "" -#: fields/page_link.php:542 fields/post_object.php:408 +#: fields/page_link.php:528 fields/post_object.php:392 #: fields/relationship.php:711 msgid "All taxonomies" msgstr "" -#: fields/page_link.php:548 fields/post_object.php:414 fields/select.php:372 -#: fields/taxonomy.php:803 fields/user.php:456 +#: fields/page_link.php:534 fields/post_object.php:398 fields/select.php:372 +#: fields/taxonomy.php:779 fields/user.php:411 msgid "Allow Null?" msgstr "" -#: fields/page_link.php:562 fields/post_object.php:428 fields/select.php:386 -#: fields/user.php:470 +#: fields/page_link.php:548 fields/post_object.php:412 fields/select.php:386 +#: fields/user.php:425 msgid "Select multiple values?" msgstr "" @@ -1859,16 +1860,16 @@ msgstr "" msgid "Password" msgstr "" -#: fields/post_object.php:36 fields/post_object.php:447 +#: fields/post_object.php:36 fields/post_object.php:431 #: fields/relationship.php:768 msgid "Post Object" msgstr "" -#: fields/post_object.php:442 fields/relationship.php:763 +#: fields/post_object.php:426 fields/relationship.php:763 msgid "Return Format" msgstr "" -#: fields/post_object.php:448 fields/relationship.php:769 +#: fields/post_object.php:432 fields/relationship.php:769 msgid "Post ID" msgstr "" @@ -1924,7 +1925,7 @@ msgstr "" msgid "Select taxonomy" msgstr "" -#: fields/relationship.php:724 fields/taxonomy.php:36 fields/taxonomy.php:773 +#: fields/relationship.php:724 fields/taxonomy.php:36 fields/taxonomy.php:749 msgid "Taxonomy" msgstr "" @@ -1951,7 +1952,7 @@ msgid_plural "%s requires at least %s selections" msgstr[0] "" msgstr[1] "" -#: fields/select.php:36 fields/select.php:167 fields/taxonomy.php:795 +#: fields/select.php:36 fields/select.php:167 fields/taxonomy.php:771 msgid "Select" msgstr "" @@ -1967,117 +1968,117 @@ msgstr "" msgid "Tab" msgstr "" -#: fields/tab.php:128 +#: fields/tab.php:97 msgid "" "The tab field will display incorrectly when added to a Table style repeater " "field or flexible content field layout" msgstr "" -#: fields/tab.php:129 +#: fields/tab.php:98 msgid "" "Use \"Tab Fields\" to better organize your edit screen by grouping fields " "together." msgstr "" -#: fields/tab.php:130 +#: fields/tab.php:99 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." msgstr "" -#: fields/tab.php:144 +#: fields/tab.php:113 msgid "Placement" msgstr "" -#: fields/tab.php:156 +#: fields/tab.php:125 msgid "End-point" msgstr "" -#: fields/tab.php:157 +#: fields/tab.php:126 msgid "Use this field as an end-point and start a new group of tabs" msgstr "" -#: fields/taxonomy.php:742 +#: fields/taxonomy.php:718 msgid "None" msgstr "" -#: fields/taxonomy.php:774 +#: fields/taxonomy.php:750 msgid "Select the taxonomy to be displayed" msgstr "" -#: fields/taxonomy.php:783 +#: fields/taxonomy.php:759 msgid "Appearance" msgstr "" -#: fields/taxonomy.php:784 +#: fields/taxonomy.php:760 msgid "Select the appearance of this field" msgstr "" -#: fields/taxonomy.php:789 +#: fields/taxonomy.php:765 msgid "Multiple Values" msgstr "" -#: fields/taxonomy.php:791 +#: fields/taxonomy.php:767 msgid "Multi Select" msgstr "" -#: fields/taxonomy.php:793 +#: fields/taxonomy.php:769 msgid "Single Value" msgstr "" -#: fields/taxonomy.php:794 +#: fields/taxonomy.php:770 msgid "Radio Buttons" msgstr "" -#: fields/taxonomy.php:817 +#: fields/taxonomy.php:793 msgid "Create Terms" msgstr "" -#: fields/taxonomy.php:818 +#: fields/taxonomy.php:794 msgid "Allow new terms to be created whilst editing" msgstr "" -#: fields/taxonomy.php:831 +#: fields/taxonomy.php:807 msgid "Save Terms" msgstr "" -#: fields/taxonomy.php:832 +#: fields/taxonomy.php:808 msgid "Connect selected terms to the post" msgstr "" -#: fields/taxonomy.php:845 +#: fields/taxonomy.php:821 msgid "Load Terms" msgstr "" -#: fields/taxonomy.php:846 +#: fields/taxonomy.php:822 msgid "Load value from posts terms" msgstr "" -#: fields/taxonomy.php:864 +#: fields/taxonomy.php:840 msgid "Term Object" msgstr "" -#: fields/taxonomy.php:865 +#: fields/taxonomy.php:841 msgid "Term ID" msgstr "" -#: fields/taxonomy.php:924 +#: fields/taxonomy.php:900 #, php-format msgid "User unable to add new %s" msgstr "" -#: fields/taxonomy.php:937 +#: fields/taxonomy.php:913 #, php-format msgid "%s already exists" msgstr "" -#: fields/taxonomy.php:978 +#: fields/taxonomy.php:954 #, php-format msgid "%s added" msgstr "" -#: fields/taxonomy.php:1023 +#: fields/taxonomy.php:999 msgid "Add" msgstr "" @@ -2121,11 +2122,11 @@ msgstr "" msgid "Value must be a valid URL" msgstr "" -#: fields/user.php:441 +#: fields/user.php:396 msgid "Filter by role" msgstr "" -#: fields/user.php:449 +#: fields/user.php:404 msgid "All user roles" msgstr "" @@ -2206,11 +2207,11 @@ msgstr "" msgid "Connection Error. Sorry, please try again" msgstr "" -#: pro/admin/views/options-page.php:48 +#: pro/admin/views/options-page.php:44 msgid "Publish" msgstr "" -#: pro/admin/views/options-page.php:54 +#: pro/admin/views/options-page.php:50 msgid "Save Options" msgstr "" @@ -2328,72 +2329,72 @@ msgstr "" msgid "{required} {label} {identifier} required (min {min})" msgstr "" -#: pro/fields/flexible-content.php:211 +#: pro/fields/flexible-content.php:216 #, php-format msgid "Click the \"%s\" button below to start creating your layout" msgstr "" -#: pro/fields/flexible-content.php:357 +#: pro/fields/flexible-content.php:346 msgid "Add layout" msgstr "" -#: pro/fields/flexible-content.php:360 +#: pro/fields/flexible-content.php:349 msgid "Remove layout" msgstr "" -#: pro/fields/flexible-content.php:363 pro/fields/repeater.php:312 +#: pro/fields/flexible-content.php:352 pro/fields/repeater.php:304 msgid "Click to toggle" msgstr "" -#: pro/fields/flexible-content.php:503 +#: pro/fields/flexible-content.php:493 msgid "Reorder Layout" msgstr "" -#: pro/fields/flexible-content.php:503 +#: pro/fields/flexible-content.php:493 msgid "Reorder" msgstr "" -#: pro/fields/flexible-content.php:504 +#: pro/fields/flexible-content.php:494 msgid "Delete Layout" msgstr "" -#: pro/fields/flexible-content.php:505 +#: pro/fields/flexible-content.php:495 msgid "Duplicate Layout" msgstr "" -#: pro/fields/flexible-content.php:506 +#: pro/fields/flexible-content.php:496 msgid "Add New Layout" msgstr "" -#: pro/fields/flexible-content.php:560 pro/fields/repeater.php:474 +#: pro/fields/flexible-content.php:550 pro/fields/repeater.php:466 msgid "Table" msgstr "" -#: pro/fields/flexible-content.php:561 pro/fields/repeater.php:475 +#: pro/fields/flexible-content.php:551 pro/fields/repeater.php:467 msgid "Block" msgstr "" -#: pro/fields/flexible-content.php:562 pro/fields/repeater.php:476 +#: pro/fields/flexible-content.php:552 pro/fields/repeater.php:468 msgid "Row" msgstr "" -#: pro/fields/flexible-content.php:577 +#: pro/fields/flexible-content.php:567 msgid "Min" msgstr "" -#: pro/fields/flexible-content.php:590 +#: pro/fields/flexible-content.php:580 msgid "Max" msgstr "" -#: pro/fields/flexible-content.php:618 pro/fields/repeater.php:483 +#: pro/fields/flexible-content.php:608 pro/fields/repeater.php:475 msgid "Button Label" msgstr "" -#: pro/fields/flexible-content.php:627 +#: pro/fields/flexible-content.php:617 msgid "Minimum Layouts" msgstr "" -#: pro/fields/flexible-content.php:636 +#: pro/fields/flexible-content.php:626 msgid "Maximum Layouts" msgstr "" @@ -2417,6 +2418,14 @@ msgstr "" msgid "Remove" msgstr "" +#: pro/fields/gallery.php:383 +msgid "Caption" +msgstr "" + +#: pro/fields/gallery.php:392 +msgid "Alt Text" +msgstr "" + #: pro/fields/gallery.php:543 msgid "Add to gallery" msgstr "" @@ -2465,35 +2474,35 @@ msgstr "" msgid "Maximum rows reached ({max} rows)" msgstr "" -#: pro/fields/repeater.php:310 +#: pro/fields/repeater.php:302 msgid "Drag to reorder" msgstr "" -#: pro/fields/repeater.php:357 +#: pro/fields/repeater.php:349 msgid "Add row" msgstr "" -#: pro/fields/repeater.php:358 +#: pro/fields/repeater.php:350 msgid "Remove row" msgstr "" -#: pro/fields/repeater.php:406 +#: pro/fields/repeater.php:398 msgid "Sub Fields" msgstr "" -#: pro/fields/repeater.php:436 +#: pro/fields/repeater.php:428 msgid "Collapsed" msgstr "" -#: pro/fields/repeater.php:437 +#: pro/fields/repeater.php:429 msgid "Select a sub field to show when row is collapsed" msgstr "" -#: pro/fields/repeater.php:447 +#: pro/fields/repeater.php:439 msgid "Minimum Rows" msgstr "" -#: pro/fields/repeater.php:457 +#: pro/fields/repeater.php:449 msgid "Maximum Rows" msgstr "" diff --git a/pro/assets/css/acf-pro-input.css b/pro/assets/css/acf-pro-input.css index 217f484..ab5a959 100644 --- a/pro/assets/css/acf-pro-input.css +++ b/pro/assets/css/acf-pro-input.css @@ -146,16 +146,16 @@ th.acf-row-handle span { font-size: 14px; line-height: 1.4em; } -.acf-flexible-content .layout .fc-layout-order { +.acf-flexible-content .layout .acf-fc-layout-order { display: block; width: 20px; height: 20px; border-radius: 10px; + display: inline-block; text-align: center; line-height: 20px; - margin: 0 5px 0 0; + margin: 0 2px 0 0; background: #F1F1F1; - float: left; font-size: 12px; color: #666; } @@ -186,7 +186,7 @@ th.acf-row-handle span { } .acf-flexible-content > .values > .ui-sortable-placeholder { visibility: visible !important; - border: #ccc dashed 2px; + border: 1px dashed #b4b9be; box-shadow: none; background: transparent; } @@ -311,7 +311,7 @@ th.acf-row-handle span { opacity: 0; } /* rtl */ -html[dir="rtl"] .acf-flexible-content .layout .fc-layout-order { +html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-order { float: right; margin-right: 0; margin-left: 5px; @@ -422,7 +422,6 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls { right: 0; bottom: 0; left: 0; - height: 28px; padding: 10px; border-top: #DFDFDF solid 1px; } diff --git a/pro/assets/js/acf-pro-input.js b/pro/assets/js/acf-pro-input.js index 31b17f8..6b1e411 100644 --- a/pro/assets/js/acf-pro-input.js +++ b/pro/assets/js/acf-pro-input.js @@ -592,10 +592,14 @@ render: function(){ + // vars + var self = this; + + // update order numbers this.$values.children('.layout').each(function( i ){ - $(this).find('> .acf-fc-layout-handle .fc-layout-order').html( i+1 ); + $(this).find('> .acf-fc-layout-handle .acf-fc-layout-order').html( i+1 ); }); @@ -624,6 +628,21 @@ } }, + + render_layout: function( $layout ){ + + // update order number + + + + // update text +/* + var data = acf.serialize_form($layout); + + console.log( data ); +*/ + + }, validate_add: function( layout ){ @@ -1118,6 +1137,40 @@ // sync collapsed order this.sync(); + + // vars + var data = acf.serialize( $layout ); + + + // append + $.extend(data, { + action: 'acf/fields/flexible_content/layout_title', + field_key: this.$field.data('key'), + post_id: acf.get('post_id'), + i: $layout.index(), + layout: $layout.data('layout'), + }); + + + // ajax get title HTML + $.ajax({ + url : acf.get('ajaxurl'), + dataType : 'html', + type : 'post', + data : data, + success: function( html ){ + + // bail early if no html + if( !html ) return; + + + // update html + $layout.find('> .acf-fc-layout-handle').html( html ); + + } + }); + + } }); @@ -1300,7 +1353,7 @@ // vars var data = acf.prepare_for_ajax({ action : 'acf/fields/gallery/get_sort_order', - field_key : acf.get_field_key(this.$field), + field_key : this.$field.data('key'), post_id : acf.get('post_id'), ids : [], sort : sort @@ -1458,7 +1511,7 @@ // vars var data = acf.prepare_for_ajax({ action : 'acf/fields/gallery/get_attachment', - field_key : acf.get_field_key(this.$field), + field_key : this.$field.data('key'), nonce : acf.get('nonce'), post_id : acf.get('post_id'), id : id @@ -1775,7 +1828,7 @@ title: acf._e('gallery', 'select'), mode: 'select', type: '', - field: acf.get_field_key(this.$field), + field: this.$field.data('key'), multiple: 'add', library: this.o.library, mime_types: this.o.mime_types, diff --git a/pro/assets/js/acf-pro-input.min.js b/pro/assets/js/acf-pro-input.min.js index 6a832e8..63b932b 100644 --- a/pro/assets/js/acf-pro-input.min.js +++ b/pro/assets/js/acf-pro-input.min.js @@ -1 +1 @@ -!function($){acf.pro=acf.model.extend({actions:{refresh:"refresh"},filters:{get_fields:"get_fields"},get_fields:function(e){return e=e.not(".acf-clone .acf-field")},refresh:function(e){var t=this;return e=e||!1,e&&e.is("tr")?void t.render_table(e.closest("table")):void $(".acf-table",e).each(function(){t.render_table($(this))})},render_table:function(e){var t=e.find("> thead th.acf-th"),a=1,i=100;t.exists()&&(t.each(function(){var t=$(this),a=t.attr("data-key"),i=e.find('td[data-key="'+a+'"]');i.removeClass("appear-empty"),t.removeClass("hidden-by-conditional-logic"),i.exists()&&(0==i.not(".hidden-by-conditional-logic").length?t.addClass("hidden-by-conditional-logic"):i.filter(".hidden-by-conditional-logic").addClass("appear-empty"))}),t.css("width","auto"),t=t.not(".hidden-by-conditional-logic"),a=t.length,t.filter("[data-width]").each(function(){var e=parseInt($(this).attr("data-width"));i-=e,$(this).css("width",e+"%")}),t=t.not("[data-width]"),t.each(function(){var e=i/t.length;$(this).css("width",e+"%")}),e.find(".acf-row .acf-field.-collapsed-target").removeAttr("colspan"),e.find(".acf-row.-collapsed .acf-field.-collapsed-target").attr("colspan",a))}})}(jQuery),function($){acf.fields.repeater=acf.field.extend({type:"repeater",$el:null,$input:null,$table:null,$tbody:null,$clone:null,actions:{ready:"initialize",append:"initialize",show:"show"},events:{'click a[data-event="add-row"]':"_add",'click a[data-event="remove-row"]':"_remove",'click a[data-event="collapse-row"]':"_collapse","mouseenter td.order":"_mouseenter"},focus:function(){this.$el=this.$field.find(".acf-repeater:first"),this.$input=this.$field.find("input:first"),this.$table=this.$field.find("table:first"),this.$tbody=this.$table.children("tbody"),this.$clone=this.$tbody.children("tr.acf-clone"),this.o=acf.get_data(this.$el),this.o.min=this.o.min||0,this.o.max=this.o.max||0},initialize:function(){this.$clone.find("input, textarea, select").attr("disabled","disabled"),this.render()},show:function(){this.$tbody.find(".acf-field:visible").each(function(){acf.do_action("show_field",$(this))})},count:function(){return this.$tbody.children().length-1},render:function(){this.$tbody.children().each(function(e){$(this).find("> td.order > span").html(e+1)}),0==this.count()?this.$el.addClass("-empty"):this.$el.removeClass("-empty"),this.o.max>0&&this.count()>=this.o.max?this.$el.find("> .acf-actions .button").addClass("disabled"):this.$el.find("> .acf-actions .button").removeClass("disabled")},add:function(e){if(e=e||this.$clone,this.o.max>0&&this.count()>=this.o.max)return alert(acf._e("repeater","max").replace("{max}",this.o.max)),!1;var t=this.$field;return $el=acf.duplicate(this.$clone),$el.removeClass("acf-clone"),$el.find("input, textarea, select").not(".acf-disabled").removeAttr("disabled"),e.before($el),this.doFocus(t),this.render(),acf.validation.remove_error(this.$field),this.sync(),$el},remove:function(e){var t=this;return this.count()<=this.o.min?(alert(acf._e("repeater","min").replace("{min}",this.o.min)),!1):(acf.do_action("remove",e),void acf.remove_tr(e,function(){t.$input.trigger("change"),t.render(),t.sync(),acf.do_action("refresh",t.$field)}))},sync:function(){var e="collapsed_"+this.$field.data("key"),t=[];this.$tbody.children().each(function(e){$(this).hasClass("-collapsed")&&t.push(e)}),acf.update_user_setting(e,t.join(","))},_mouseenter:function(e){if(!this.$tbody.hasClass("ui-sortable")&&1!=this.o.max){var t=this;this.$tbody.sortable({items:"> tr",handle:"> td.order",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,start:function(e,t){acf.do_action("sortstart",t.item,t.placeholder)},stop:function(e,a){t.render(),acf.do_action("sortstop",a.item,a.placeholder)},update:function(e,a){t.$input.trigger("change")}})}},_add:function(e){$row=!1,e.$el.hasClass("acf-icon")&&($row=e.$el.closest(".acf-row")),this.add($row)},_remove:function(e){this.remove(e.$el.closest(".acf-row"))},_collapse:function(e){var t=e.$el.closest(".acf-row");t.hasClass("-collapsed")?(t.removeClass("-collapsed"),acf.do_action("show",t,"collapse")):(t.addClass("-collapsed"),acf.do_action("hide",t,"collapse")),this.sync(),acf.do_action("refresh",this.$field)}})}(jQuery),function($){acf.fields.flexible_content=acf.field.extend({type:"flexible_content",$el:null,$input:null,$values:null,$clones:null,actions:{ready:"initialize",append:"initialize",show:"show"},events:{'click [data-event="add-layout"]':"_open",'click [data-event="remove-layout"]':"_remove",'click [data-event="collapse-layout"]':"_collapse","click .acf-fc-layout-handle":"_collapse","click .acf-fc-popup a":"_add","blur .acf-fc-popup .focus":"_close","mouseenter .acf-fc-layout-handle":"_mouseenter"},focus:function(){this.$el=this.$field.find(".acf-flexible-content:first"),this.$input=this.$el.siblings("input"),this.$values=this.$el.children(".values"),this.$clones=this.$el.children(".clones"),this.o=acf.get_data(this.$el),this.o.min=this.o.min||0,this.o.max=this.o.max||0},count:function(){return this.$values.children(".layout").length},initialize:function(){this.$clones.find("input, textarea, select").attr("disabled","disabled"),this.render()},show:function(){this.$values.find(".acf-field:visible").each(function(){acf.do_action("show_field",$(this))})},render:function(){this.$values.children(".layout").each(function(e){$(this).find("> .acf-fc-layout-handle .fc-layout-order").html(e+1)}),0==this.count()?this.$el.addClass("empty"):this.$el.removeClass("empty"),this.o.max>0&&this.count()>=this.o.max?this.$el.find("> .acf-actions .button").addClass("disabled"):this.$el.find("> .acf-actions .button").removeClass("disabled")},validate_add:function(e){if(this.o.max>0&&this.count()>=this.o.max){var t=1==this.o.max?"layout":"layouts",a=acf._e("flexible_content","max");return a=a.replace("{max}",this.o.max),a=a.replace("{identifier}",acf._e("flexible_content",t)),alert(a),!1}var i=$(this.$el.children(".tmpl-popup").html()),l=i.find('[data-layout="'+e+'"]'),n=parseInt(l.attr("data-max")),s=this.$values.children('.layout[data-layout="'+e+'"]').length;if(n>0&&s>=n){var t=1==n?"layout":"layouts",a=acf._e("flexible_content","max_layout");return a=a.replace("{max}",s),a=a.replace("{label}",'"'+l.text()+'"'),a=a.replace("{identifier}",acf._e("flexible_content",t)),alert(a),!1}return!0},validate_remove:function(e){if(this.o.min>0&&this.count()<=this.o.min){var t=1==this.o.min?"layout":"layouts",a=acf._e("flexible_content","min")+", "+acf._e("flexible_content","remove");return a=a.replace("{min}",this.o.min),a=a.replace("{identifier}",acf._e("flexible_content",t)),a=a.replace("{layout}",acf._e("flexible_content","layout")),confirm(a)}var i=$(this.$el.children(".tmpl-popup").html()),l=i.find('[data-layout="'+e+'"]'),n=parseInt(l.attr("data-min")),s=this.$values.children('.layout[data-layout="'+e+'"]').length;if(n>0&&n>=s){var t=1==n?"layout":"layouts",a=acf._e("flexible_content","min_layout")+", "+acf._e("flexible_content","remove");return a=a.replace("{min}",s),a=a.replace("{label}",'"'+l.text()+'"'),a=a.replace("{identifier}",acf._e("flexible_content",t)),a=a.replace("{layout}",acf._e("flexible_content","layout")),confirm(a)}return!0},sync:function(){var e="collapsed_"+this.$field.data("key"),t=[];this.$values.children(".layout").each(function(e){$(this).hasClass("-collapsed")&&t.push(e)}),acf.update_user_setting(e,t.join(","))},add:function(e,t){if(t=t||!1,!this.validate_add(e))return!1;var a=this.$field,i=this.$clones.children('.layout[data-layout="'+e+'"]');$el=acf.duplicate(i),$el.find("input, textarea, select").not(".acf-disabled").removeAttr("disabled"),this.$el.children(".no-value-message").hide(),t?t.before($el):this.$values.append($el),this.doFocus(a),this.render(),acf.validation.remove_error(this.$field),this.sync()},_mouseenter:function(e){if(!this.$values.hasClass("ui-sortable")&&1!=this.o.max){var t=this;this.$values.sortable({items:"> .layout",handle:"> .acf-fc-layout-handle",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,start:function(e,t){acf.do_action("sortstart",t.item,t.placeholder)},stop:function(e,a){t.render(),acf.do_action("sortstop",a.item,a.placeholder)},update:function(e,a){t.$input.trigger("change")}})}},_open:function(e){var t=this.$values,a=$(this.$el.children(".tmpl-popup").html());a.find("a").each(function(){var e=parseInt($(this).attr("data-min")),a=parseInt($(this).attr("data-max")),i=$(this).attr("data-layout"),l=$(this).text(),n=t.children('.layout[data-layout="'+i+'"]').length,s=$(this).children(".status");if(a>0){var c=a-n,o=acf._e("flexible_content","available"),r=1==c?"layout":"layouts",o=o.replace("{available}",c);o=o.replace("{max}",a),o=o.replace("{label}",'"'+l+'"'),o=o.replace("{identifier}",acf._e("flexible_content",r)),s.show().text(c).attr("title",o),0==c&&s.addClass("warning")}if(e>0){var d=e-n,o=acf._e("flexible_content","required"),r=1==d?"layout":"layouts",o=o.replace("{required}",d);o=o.replace("{min}",e),o=o.replace("{label}",'"'+l+'"'),o=o.replace("{identifier}",acf._e("flexible_content",r)),d>0&&s.addClass("warning").show().text(d).attr("title",o)}}),e.$el.after(a),e.$el.closest(".acf-fc-layout-controlls").exists()&&a.closest(".layout").addClass("-open"),a.css({"margin-top":0-a.height()-e.$el.outerHeight()-14,"margin-left":(e.$el.outerWidth()-a.width())/2});var i=a.offset().top;30>i&&(a.css({"margin-top":15}),a.find(".bit").addClass("top")),a.children(".focus").trigger("focus")},_close:function(e){var t=e.$el.parent(),a=t.closest(".layout");a.removeClass("-open"),setTimeout(function(){t.remove()},200)},_add:function(e){var t=e.$el.closest(".acf-fc-popup"),a=e.$el.attr("data-layout"),i=!1;t.closest(".acf-fc-layout-controlls").exists()&&(i=t.closest(".layout")),this.add(a,i)},_remove:function(e){var t=this,a=e.$el.closest(".layout");if(this.validate_remove(a.attr("data-layout"))){var i=0,l=this.$el.children(".no-value-message");0==a.siblings(".layout").length&&(i=l.outerHeight()),acf.do_action("remove",a),acf.remove_el(a,function(){t.render(),t.$input.trigger("change"),i>0&&l.show(),t.sync()},i)}},_collapse:function(e){var t=e.$el.closest(".layout");t.hasClass("-collapsed")?(t.removeClass("-collapsed"),acf.do_action("refresh",t)):t.addClass("-collapsed"),this.sync()}})}(jQuery),function($){acf.fields.gallery=acf.field.extend({type:"gallery",$el:null,actions:{ready:"initialize",append:"initialize",submit:"close_sidebar",show:"resize"},events:{"click .acf-gallery-attachment":"select_attachment","click .remove-attachment":"remove_attachment","click .edit-attachment":"edit_attachment","click .update-attachment":"update_attachment","click .add-attachment":"add_attachment","click .close-sidebar":"close_sidebar","change .acf-gallery-side input":"update_attachment","change .acf-gallery-side textarea":"update_attachment","change .acf-gallery-side select":"update_attachment","change .bulk-actions":"sort"},focus:function(){this.$el=this.$field.find(".acf-gallery").first(),this.$values=this.$el.children(".values"),this.$clones=this.$el.children(".clones"),this.o=acf.get_data(this.$el),this.o.min=this.o.min||0,this.o.max=this.o.max||0},get_attachment:function(e){e=e||"";var t=".acf-gallery-attachment";return"active"===e?t+=".active":e&&(t+='[data-id="'+e+'"]'),this.$el.find(t)},count:function(){return this.get_attachment().length},initialize:function(){var e=this,t=this.$field;this.$el.find(".acf-gallery-attachments").unbind("sortable").sortable({items:".acf-gallery-attachment",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,start:function(e,t){t.placeholder.html(t.item.html()),t.placeholder.removeAttr("style"),acf.do_action("sortstart",t.item,t.placeholder)},stop:function(e,t){acf.do_action("sortstop",t.item,t.placeholder)}}),this.$el.unbind("resizable").resizable({handles:"s",minHeight:200,stop:function(e,t){acf.update_user_setting("gallery_height",t.size.height)}}),$(window).on("resize",function(){e.doFocus(t).resize()}),this.render(),this.resize()},render:function(){var e=this.$el.find(".bulk-actions"),t=this.$el.find(".add-attachment");this.o.max>0&&this.count()>=this.o.max?t.addClass("disabled"):t.removeClass("disabled")},sort:function(e){var t=e.$el.val();if(t){var a=acf.prepare_for_ajax({action:"acf/fields/gallery/get_sort_order",field_key:acf.get_field_key(this.$field),post_id:acf.get("post_id"),ids:[],sort:t});this.get_attachment().each(function(){a.ids.push($(this).attr("data-id"))});var i=$.ajax({url:acf.get("ajaxurl"),dataType:"json",type:"post",cache:!1,data:a,context:this,success:this.sort_success})}},sort_success:function(e){if(acf.is_ajax_success(e)){e.data.reverse();for(i in e.data){var t=e.data[i],a=this.get_attachment(t);this.$el.find(".acf-gallery-attachments").prepend(a)}}},clear_selection:function(){this.get_attachment().removeClass("active")},select_attachment:function(e){var t=e.$el;if(!t.hasClass("active")){var a=t.attr("data-id");this.clear_selection(),t.addClass("active"),this.fetch(a),this.open_sidebar()}},open_sidebar:function(){this.$el.addClass("sidebar-open"),this.$el.find(".bulk-actions").hide();var e=this.$el.width()/3;e=parseInt(e),e=Math.max(e,350),this.$el.find(".acf-gallery-side-inner").css({width:e-1}),this.$el.find(".acf-gallery-side").animate({width:e-1},250),this.$el.find(".acf-gallery-main").animate({right:e},250)},close_sidebar:function(){this.$el.removeClass("sidebar-open");var e=this.$el.find(".bulk-actions");this.clear_selection(),this.$el.find(".acf-gallery-side").find("input, textarea, select").attr("disabled","disabled"),this.$el.find(".acf-gallery-main").animate({right:0},250),this.$el.find(".acf-gallery-side").animate({width:0},250,function(){e.show(),$(this).find(".acf-gallery-side-data").html("")})},fetch:function(e){var t=acf.prepare_for_ajax({action:"acf/fields/gallery/get_attachment",field_key:acf.get_field_key(this.$field),nonce:acf.get("nonce"),post_id:acf.get("post_id"),id:e});this.$el.data("xhr")&&this.$el.data("xhr").abort();var a=$.ajax({url:acf.get("ajaxurl"),dataType:"html",type:"post",cache:!1,data:t,context:this,success:this.render_fetch});this.$el.data("xhr",a)},render_fetch:function(e){if(e){var t=this.$el.find(".acf-gallery-side-data");t.html(e),t.find(".compat-field-acf-form-data").remove();var a=t.find("> .compat-attachment-fields > tbody > tr").detach();t.find("> table.form-table > tbody").append(a),t.find("> .compat-attachment-fields").remove(),acf.do_action("append",t)}},update_attachment:function(){var e=this.$el.find(".update-attachment");return $form=this.$el.find(".acf-gallery-side-data"),data=acf.serialize_form($form),e.attr("disabled")?!1:(e.attr("disabled","disabled"),e.before(''),data.action="acf/fields/gallery/update_attachment",acf.prepare_for_ajax(data),void $.ajax({url:acf.get("ajaxurl"),data:data,type:"post",dataType:"json",complete:function(t){e.removeAttr("disabled"),e.prev(".acf-loading").remove()}}))},add:function(e){if(this.o.max>0&&this.count()>=this.o.max)return void acf.validation.add_warning(this.$field,acf._e("gallery","max"));var t=e.url,a="acf-gallery-attachment acf-soh",i="",l=this.$el.find('[data-name="ids"]').attr("name");"image"!==e.type&&e.filename&&(i='
                '+e.filename+"
                "),t||(t=e.icon,a+=" is-mime-icon");var n=['
                ','','
                ','
                ','',"
                ",i,"
                ",'
                ','',"
                ","
                "].join("");this.$el.find(".acf-gallery-attachments").append(n),this.render()},edit_attachment:function(e){var t=this,a=acf.get_data(e.$el,"id"),i=acf.media.popup({title:acf._e("image","edit"),button:acf._e("image","update"),mode:"edit",id:a,select:function(e){acf.isset(e,"attributes","sizes",t.o.preview_size,"url")&&(e.url=e.attributes.sizes[t.o.preview_size].url),t.get_attachment(a).find("img").attr("src",e.url),t.fetch(a)}})},remove_attachment:function(e){e.stopPropagation();var t=acf.get_data(e.$el,"id");this.clear_selection(),this.close_sidebar(),this.get_attachment(t).remove(),this.render()},render_collection:function(e){var t=this;setTimeout(function(){var a=e.content.get().$el;if(collection=e.content.get().collection||null,collection){var i=-1;collection.each(function(e){i++;var l=a.find(".attachments > .attachment:eq("+i+")");t.get_attachment(e.id).exists()&&(e.off("selection:single"),l.addClass("acf-selected"))})}},10)},add_attachment:function(e){if(this.o.max>0&&this.count()>=this.o.max)return void acf.validation.add_warning(this.$field,acf._e("gallery","max"));var t=this.o.preview_size,a=this,i=this.$field,l=acf.media.popup({title:acf._e("gallery","select"),mode:"select",type:"",field:acf.get_field_key(this.$field),multiple:"add",library:this.o.library,mime_types:this.o.mime_types,select:function(e,l){var n=e.attributes;if(a.doFocus(i),!a.get_attachment(n.id).exists()){var s={id:n.id,type:n.type,icon:n.icon,filename:n.filename,url:""};"image"===s.type?s.url=acf.maybe_get(n,"sizes."+t+".url",n.url):s.url=acf.maybe_get(n,"thumb.src",""),a.add(s)}}});l.on("content:activate:browse",function(){a.render_collection(l),l.content.get().collection.on("reset add",function(){a.render_collection(l)})})},resize:function(){for(var e=100,t=175,a=4,i=this.$el.width(),l=4;20>l;l++){var n=i/l;if(n>e&&t>n){a=l;break}}a=Math.min(a,8),this.$el.attr("data-columns",a)}})}(jQuery); +!function($){acf.pro=acf.model.extend({actions:{refresh:"refresh"},filters:{get_fields:"get_fields"},get_fields:function(e){return e=e.not(".acf-clone .acf-field")},refresh:function(e){var t=this;return e=e||!1,e&&e.is("tr")?void t.render_table(e.closest("table")):void $(".acf-table",e).each(function(){t.render_table($(this))})},render_table:function(e){var t=e.find("> thead th.acf-th"),a=1,i=100;t.exists()&&(t.each(function(){var t=$(this),a=t.attr("data-key"),i=e.find('td[data-key="'+a+'"]');i.removeClass("appear-empty"),t.removeClass("hidden-by-conditional-logic"),i.exists()&&(0==i.not(".hidden-by-conditional-logic").length?t.addClass("hidden-by-conditional-logic"):i.filter(".hidden-by-conditional-logic").addClass("appear-empty"))}),t.css("width","auto"),t=t.not(".hidden-by-conditional-logic"),a=t.length,t.filter("[data-width]").each(function(){var e=parseInt($(this).attr("data-width"));i-=e,$(this).css("width",e+"%")}),t=t.not("[data-width]"),t.each(function(){var e=i/t.length;$(this).css("width",e+"%")}),e.find(".acf-row .acf-field.-collapsed-target").removeAttr("colspan"),e.find(".acf-row.-collapsed .acf-field.-collapsed-target").attr("colspan",a))}})}(jQuery),function($){acf.fields.repeater=acf.field.extend({type:"repeater",$el:null,$input:null,$table:null,$tbody:null,$clone:null,actions:{ready:"initialize",append:"initialize",show:"show"},events:{'click a[data-event="add-row"]':"_add",'click a[data-event="remove-row"]':"_remove",'click a[data-event="collapse-row"]':"_collapse","mouseenter td.order":"_mouseenter"},focus:function(){this.$el=this.$field.find(".acf-repeater:first"),this.$input=this.$field.find("input:first"),this.$table=this.$field.find("table:first"),this.$tbody=this.$table.children("tbody"),this.$clone=this.$tbody.children("tr.acf-clone"),this.o=acf.get_data(this.$el),this.o.min=this.o.min||0,this.o.max=this.o.max||0},initialize:function(){this.$clone.find("input, textarea, select").attr("disabled","disabled"),this.render()},show:function(){this.$tbody.find(".acf-field:visible").each(function(){acf.do_action("show_field",$(this))})},count:function(){return this.$tbody.children().length-1},render:function(){this.$tbody.children().each(function(e){$(this).find("> td.order > span").html(e+1)}),0==this.count()?this.$el.addClass("-empty"):this.$el.removeClass("-empty"),this.o.max>0&&this.count()>=this.o.max?this.$el.find("> .acf-actions .button").addClass("disabled"):this.$el.find("> .acf-actions .button").removeClass("disabled")},add:function(e){if(e=e||this.$clone,this.o.max>0&&this.count()>=this.o.max)return alert(acf._e("repeater","max").replace("{max}",this.o.max)),!1;var t=this.$field;return $el=acf.duplicate(this.$clone),$el.removeClass("acf-clone"),$el.find("input, textarea, select").not(".acf-disabled").removeAttr("disabled"),e.before($el),this.doFocus(t),this.render(),acf.validation.remove_error(this.$field),this.sync(),$el},remove:function(e){var t=this;return this.count()<=this.o.min?(alert(acf._e("repeater","min").replace("{min}",this.o.min)),!1):(acf.do_action("remove",e),void acf.remove_tr(e,function(){t.$input.trigger("change"),t.render(),t.sync(),acf.do_action("refresh",t.$field)}))},sync:function(){var e="collapsed_"+this.$field.data("key"),t=[];this.$tbody.children().each(function(e){$(this).hasClass("-collapsed")&&t.push(e)}),acf.update_user_setting(e,t.join(","))},_mouseenter:function(e){if(!this.$tbody.hasClass("ui-sortable")&&1!=this.o.max){var t=this;this.$tbody.sortable({items:"> tr",handle:"> td.order",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,start:function(e,t){acf.do_action("sortstart",t.item,t.placeholder)},stop:function(e,a){t.render(),acf.do_action("sortstop",a.item,a.placeholder)},update:function(e,a){t.$input.trigger("change")}})}},_add:function(e){$row=!1,e.$el.hasClass("acf-icon")&&($row=e.$el.closest(".acf-row")),this.add($row)},_remove:function(e){this.remove(e.$el.closest(".acf-row"))},_collapse:function(e){var t=e.$el.closest(".acf-row");t.hasClass("-collapsed")?(t.removeClass("-collapsed"),acf.do_action("show",t,"collapse")):(t.addClass("-collapsed"),acf.do_action("hide",t,"collapse")),this.sync(),acf.do_action("refresh",this.$field)}})}(jQuery),function($){acf.fields.flexible_content=acf.field.extend({type:"flexible_content",$el:null,$input:null,$values:null,$clones:null,actions:{ready:"initialize",append:"initialize",show:"show"},events:{'click [data-event="add-layout"]':"_open",'click [data-event="remove-layout"]':"_remove",'click [data-event="collapse-layout"]':"_collapse","click .acf-fc-layout-handle":"_collapse","click .acf-fc-popup a":"_add","blur .acf-fc-popup .focus":"_close","mouseenter .acf-fc-layout-handle":"_mouseenter"},focus:function(){this.$el=this.$field.find(".acf-flexible-content:first"),this.$input=this.$el.siblings("input"),this.$values=this.$el.children(".values"),this.$clones=this.$el.children(".clones"),this.o=acf.get_data(this.$el),this.o.min=this.o.min||0,this.o.max=this.o.max||0},count:function(){return this.$values.children(".layout").length},initialize:function(){this.$clones.find("input, textarea, select").attr("disabled","disabled"),this.render()},show:function(){this.$values.find(".acf-field:visible").each(function(){acf.do_action("show_field",$(this))})},render:function(){var e=this;this.$values.children(".layout").each(function(e){$(this).find("> .acf-fc-layout-handle .acf-fc-layout-order").html(e+1)}),0==this.count()?this.$el.addClass("empty"):this.$el.removeClass("empty"),this.o.max>0&&this.count()>=this.o.max?this.$el.find("> .acf-actions .button").addClass("disabled"):this.$el.find("> .acf-actions .button").removeClass("disabled")},render_layout:function(e){},validate_add:function(e){if(this.o.max>0&&this.count()>=this.o.max){var t=1==this.o.max?"layout":"layouts",a=acf._e("flexible_content","max");return a=a.replace("{max}",this.o.max),a=a.replace("{identifier}",acf._e("flexible_content",t)),alert(a),!1}var i=$(this.$el.children(".tmpl-popup").html()),l=i.find('[data-layout="'+e+'"]'),n=parseInt(l.attr("data-max")),s=this.$values.children('.layout[data-layout="'+e+'"]').length;if(n>0&&s>=n){var t=1==n?"layout":"layouts",a=acf._e("flexible_content","max_layout");return a=a.replace("{max}",s),a=a.replace("{label}",'"'+l.text()+'"'),a=a.replace("{identifier}",acf._e("flexible_content",t)),alert(a),!1}return!0},validate_remove:function(e){if(this.o.min>0&&this.count()<=this.o.min){var t=1==this.o.min?"layout":"layouts",a=acf._e("flexible_content","min")+", "+acf._e("flexible_content","remove");return a=a.replace("{min}",this.o.min),a=a.replace("{identifier}",acf._e("flexible_content",t)),a=a.replace("{layout}",acf._e("flexible_content","layout")),confirm(a)}var i=$(this.$el.children(".tmpl-popup").html()),l=i.find('[data-layout="'+e+'"]'),n=parseInt(l.attr("data-min")),s=this.$values.children('.layout[data-layout="'+e+'"]').length;if(n>0&&n>=s){var t=1==n?"layout":"layouts",a=acf._e("flexible_content","min_layout")+", "+acf._e("flexible_content","remove");return a=a.replace("{min}",s),a=a.replace("{label}",'"'+l.text()+'"'),a=a.replace("{identifier}",acf._e("flexible_content",t)),a=a.replace("{layout}",acf._e("flexible_content","layout")),confirm(a)}return!0},sync:function(){var e="collapsed_"+this.$field.data("key"),t=[];this.$values.children(".layout").each(function(e){$(this).hasClass("-collapsed")&&t.push(e)}),acf.update_user_setting(e,t.join(","))},add:function(e,t){if(t=t||!1,!this.validate_add(e))return!1;var a=this.$field,i=this.$clones.children('.layout[data-layout="'+e+'"]');$el=acf.duplicate(i),$el.find("input, textarea, select").not(".acf-disabled").removeAttr("disabled"),this.$el.children(".no-value-message").hide(),t?t.before($el):this.$values.append($el),this.doFocus(a),this.render(),acf.validation.remove_error(this.$field),this.sync()},_mouseenter:function(e){if(!this.$values.hasClass("ui-sortable")&&1!=this.o.max){var t=this;this.$values.sortable({items:"> .layout",handle:"> .acf-fc-layout-handle",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,start:function(e,t){acf.do_action("sortstart",t.item,t.placeholder)},stop:function(e,a){t.render(),acf.do_action("sortstop",a.item,a.placeholder)},update:function(e,a){t.$input.trigger("change")}})}},_open:function(e){var t=this.$values,a=$(this.$el.children(".tmpl-popup").html());a.find("a").each(function(){var e=parseInt($(this).attr("data-min")),a=parseInt($(this).attr("data-max")),i=$(this).attr("data-layout"),l=$(this).text(),n=t.children('.layout[data-layout="'+i+'"]').length,s=$(this).children(".status");if(a>0){var c=a-n,o=acf._e("flexible_content","available"),r=1==c?"layout":"layouts",o=o.replace("{available}",c);o=o.replace("{max}",a),o=o.replace("{label}",'"'+l+'"'),o=o.replace("{identifier}",acf._e("flexible_content",r)),s.show().text(c).attr("title",o),0==c&&s.addClass("warning")}if(e>0){var d=e-n,o=acf._e("flexible_content","required"),r=1==d?"layout":"layouts",o=o.replace("{required}",d);o=o.replace("{min}",e),o=o.replace("{label}",'"'+l+'"'),o=o.replace("{identifier}",acf._e("flexible_content",r)),d>0&&s.addClass("warning").show().text(d).attr("title",o)}}),e.$el.after(a),e.$el.closest(".acf-fc-layout-controlls").exists()&&a.closest(".layout").addClass("-open"),a.css({"margin-top":0-a.height()-e.$el.outerHeight()-14,"margin-left":(e.$el.outerWidth()-a.width())/2});var i=a.offset().top;30>i&&(a.css({"margin-top":15}),a.find(".bit").addClass("top")),a.children(".focus").trigger("focus")},_close:function(e){var t=e.$el.parent(),a=t.closest(".layout");a.removeClass("-open"),setTimeout(function(){t.remove()},200)},_add:function(e){var t=e.$el.closest(".acf-fc-popup"),a=e.$el.attr("data-layout"),i=!1;t.closest(".acf-fc-layout-controlls").exists()&&(i=t.closest(".layout")),this.add(a,i)},_remove:function(e){var t=this,a=e.$el.closest(".layout");if(this.validate_remove(a.attr("data-layout"))){var i=0,l=this.$el.children(".no-value-message");0==a.siblings(".layout").length&&(i=l.outerHeight()),acf.do_action("remove",a),acf.remove_el(a,function(){t.render(),t.$input.trigger("change"),i>0&&l.show(),t.sync()},i)}},_collapse:function(e){var t=e.$el.closest(".layout");t.hasClass("-collapsed")?(t.removeClass("-collapsed"),acf.do_action("refresh",t)):t.addClass("-collapsed"),this.sync();var a=acf.serialize(t);$.extend(a,{action:"acf/fields/flexible_content/layout_title",field_key:this.$field.data("key"),post_id:acf.get("post_id"),i:t.index(),layout:t.data("layout")}),$.ajax({url:acf.get("ajaxurl"),dataType:"html",type:"post",data:a,success:function(e){e&&t.find("> .acf-fc-layout-handle").html(e)}})}})}(jQuery),function($){acf.fields.gallery=acf.field.extend({type:"gallery",$el:null,actions:{ready:"initialize",append:"initialize",submit:"close_sidebar",show:"resize"},events:{"click .acf-gallery-attachment":"select_attachment","click .remove-attachment":"remove_attachment","click .edit-attachment":"edit_attachment","click .update-attachment":"update_attachment","click .add-attachment":"add_attachment","click .close-sidebar":"close_sidebar","change .acf-gallery-side input":"update_attachment","change .acf-gallery-side textarea":"update_attachment","change .acf-gallery-side select":"update_attachment","change .bulk-actions":"sort"},focus:function(){this.$el=this.$field.find(".acf-gallery").first(),this.$values=this.$el.children(".values"),this.$clones=this.$el.children(".clones"),this.o=acf.get_data(this.$el),this.o.min=this.o.min||0,this.o.max=this.o.max||0},get_attachment:function(e){e=e||"";var t=".acf-gallery-attachment";return"active"===e?t+=".active":e&&(t+='[data-id="'+e+'"]'),this.$el.find(t)},count:function(){return this.get_attachment().length},initialize:function(){var e=this,t=this.$field;this.$el.find(".acf-gallery-attachments").unbind("sortable").sortable({items:".acf-gallery-attachment",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,start:function(e,t){t.placeholder.html(t.item.html()),t.placeholder.removeAttr("style"),acf.do_action("sortstart",t.item,t.placeholder)},stop:function(e,t){acf.do_action("sortstop",t.item,t.placeholder)}}),this.$el.unbind("resizable").resizable({handles:"s",minHeight:200,stop:function(e,t){acf.update_user_setting("gallery_height",t.size.height)}}),$(window).on("resize",function(){e.doFocus(t).resize()}),this.render(),this.resize()},render:function(){var e=this.$el.find(".bulk-actions"),t=this.$el.find(".add-attachment");this.o.max>0&&this.count()>=this.o.max?t.addClass("disabled"):t.removeClass("disabled")},sort:function(e){var t=e.$el.val();if(t){var a=acf.prepare_for_ajax({action:"acf/fields/gallery/get_sort_order",field_key:this.$field.data("key"),post_id:acf.get("post_id"),ids:[],sort:t});this.get_attachment().each(function(){a.ids.push($(this).attr("data-id"))});var i=$.ajax({url:acf.get("ajaxurl"),dataType:"json",type:"post",cache:!1,data:a,context:this,success:this.sort_success})}},sort_success:function(e){if(acf.is_ajax_success(e)){e.data.reverse();for(i in e.data){var t=e.data[i],a=this.get_attachment(t);this.$el.find(".acf-gallery-attachments").prepend(a)}}},clear_selection:function(){this.get_attachment().removeClass("active")},select_attachment:function(e){var t=e.$el;if(!t.hasClass("active")){var a=t.attr("data-id");this.clear_selection(),t.addClass("active"),this.fetch(a),this.open_sidebar()}},open_sidebar:function(){this.$el.addClass("sidebar-open"),this.$el.find(".bulk-actions").hide();var e=this.$el.width()/3;e=parseInt(e),e=Math.max(e,350),this.$el.find(".acf-gallery-side-inner").css({width:e-1}),this.$el.find(".acf-gallery-side").animate({width:e-1},250),this.$el.find(".acf-gallery-main").animate({right:e},250)},close_sidebar:function(){this.$el.removeClass("sidebar-open");var e=this.$el.find(".bulk-actions");this.clear_selection(),this.$el.find(".acf-gallery-side").find("input, textarea, select").attr("disabled","disabled"),this.$el.find(".acf-gallery-main").animate({right:0},250),this.$el.find(".acf-gallery-side").animate({width:0},250,function(){e.show(),$(this).find(".acf-gallery-side-data").html("")})},fetch:function(e){var t=acf.prepare_for_ajax({action:"acf/fields/gallery/get_attachment",field_key:this.$field.data("key"),nonce:acf.get("nonce"),post_id:acf.get("post_id"),id:e});this.$el.data("xhr")&&this.$el.data("xhr").abort();var a=$.ajax({url:acf.get("ajaxurl"),dataType:"html",type:"post",cache:!1,data:t,context:this,success:this.render_fetch});this.$el.data("xhr",a)},render_fetch:function(e){if(e){var t=this.$el.find(".acf-gallery-side-data");t.html(e),t.find(".compat-field-acf-form-data").remove();var a=t.find("> .compat-attachment-fields > tbody > tr").detach();t.find("> table.form-table > tbody").append(a),t.find("> .compat-attachment-fields").remove(),acf.do_action("append",t)}},update_attachment:function(){var e=this.$el.find(".update-attachment");return $form=this.$el.find(".acf-gallery-side-data"),data=acf.serialize_form($form),e.attr("disabled")?!1:(e.attr("disabled","disabled"),e.before(''),data.action="acf/fields/gallery/update_attachment",acf.prepare_for_ajax(data),void $.ajax({url:acf.get("ajaxurl"),data:data,type:"post",dataType:"json",complete:function(t){e.removeAttr("disabled"),e.prev(".acf-loading").remove()}}))},add:function(e){if(this.o.max>0&&this.count()>=this.o.max)return void acf.validation.add_warning(this.$field,acf._e("gallery","max"));var t=e.url,a="acf-gallery-attachment acf-soh",i="",l=this.$el.find('[data-name="ids"]').attr("name");"image"!==e.type&&e.filename&&(i='
                '+e.filename+"
                "),t||(t=e.icon,a+=" is-mime-icon");var n=['
                ','','
                ','
                ','',"
                ",i,"
                ",'
                ','',"
                ","
                "].join("");this.$el.find(".acf-gallery-attachments").append(n),this.render()},edit_attachment:function(e){var t=this,a=acf.get_data(e.$el,"id"),i=acf.media.popup({title:acf._e("image","edit"),button:acf._e("image","update"),mode:"edit",id:a,select:function(e){acf.isset(e,"attributes","sizes",t.o.preview_size,"url")&&(e.url=e.attributes.sizes[t.o.preview_size].url),t.get_attachment(a).find("img").attr("src",e.url),t.fetch(a)}})},remove_attachment:function(e){e.stopPropagation();var t=acf.get_data(e.$el,"id");this.clear_selection(),this.close_sidebar(),this.get_attachment(t).remove(),this.render()},render_collection:function(e){var t=this;setTimeout(function(){var a=e.content.get().$el;if(collection=e.content.get().collection||null,collection){var i=-1;collection.each(function(e){i++;var l=a.find(".attachments > .attachment:eq("+i+")");t.get_attachment(e.id).exists()&&(e.off("selection:single"),l.addClass("acf-selected"))})}},10)},add_attachment:function(e){if(this.o.max>0&&this.count()>=this.o.max)return void acf.validation.add_warning(this.$field,acf._e("gallery","max"));var t=this.o.preview_size,a=this,i=this.$field,l=acf.media.popup({title:acf._e("gallery","select"),mode:"select",type:"",field:this.$field.data("key"),multiple:"add",library:this.o.library,mime_types:this.o.mime_types,select:function(e,l){var n=e.attributes;if(a.doFocus(i),!a.get_attachment(n.id).exists()){var s={id:n.id,type:n.type,icon:n.icon,filename:n.filename,url:""};"image"===s.type?s.url=acf.maybe_get(n,"sizes."+t+".url",n.url):s.url=acf.maybe_get(n,"thumb.src",""),a.add(s)}}});l.on("content:activate:browse",function(){a.render_collection(l),l.content.get().collection.on("reset add",function(){a.render_collection(l)})})},resize:function(){for(var e=100,t=175,a=4,i=this.$el.width(),l=4;20>l;l++){var n=i/l;if(n>e&&t>n){a=l;break}}a=Math.min(a,8),this.$el.attr("data-columns",a)}})}(jQuery); diff --git a/pro/fields/flexible-content.php b/pro/fields/flexible-content.php index 8adb2d2..5e014ba 100644 --- a/pro/fields/flexible-content.php +++ b/pro/fields/flexible-content.php @@ -54,6 +54,11 @@ class acf_field_flexible_content extends acf_field { ); + // ajax + add_action('wp_ajax_acf/fields/flexible_content/layout_title', array($this, 'ajax_layout_title')); + add_action('wp_ajax_nopriv_acf/fields/flexible_content/layout_title', array($this, 'ajax_layout_title')); + + // do not delete! parent::__construct(); @@ -195,7 +200,7 @@ class acf_field_flexible_content extends acf_field { foreach( $field['layouts'] as $k => $layout ) { - $layouts[ $layout['name'] ] = acf_extract_var( $field['layouts'], $k ); + $layouts[ $layout['name'] ] = $layout; } @@ -300,29 +305,9 @@ class acf_field_flexible_content extends acf_field { 'data-layout' => $layout['name'] ); - - // collapsed - $collapsed = acf_get_user_setting('collapsed_' . $field['key'], ''); - - - // cookie fallback ( version < 5.3.2 ) - if( $collapsed === '' ) { - - $collapsed = acf_extract_var($_COOKIE, "acf_collapsed_{$field['key']}", ''); - $collapsed = str_replace('|', ',', $collapsed); - - acf_update_user_setting( 'collapsed_' . $field['key'], $collapsed ); - } - - - // explode - $collapsed = explode(',', $collapsed); - $collapsed = array_filter($collapsed, 'is_numeric'); - - // collapsed class - if( in_array($i, $collapsed) ) { + if( acf_is_row_collapsed($field['key'], $i) ) { $div['class'] .= ' -collapsed'; @@ -341,6 +326,12 @@ class acf_field_flexible_content extends acf_field { } + // title + $title = $this->get_layout_title( $field, $layout, $i, $value ); + + + // remove row + reset_rows(); ?>
                > @@ -348,9 +339,7 @@ class acf_field_flexible_content extends acf_field { "{$field['name']}[{$i}][acf_fc_layout]", 'value' => $layout['name'] )); ?>
                -
                - -
                +
                • @@ -479,8 +468,9 @@ class acf_field_flexible_content extends acf_field { // load default layout if( empty($field['layouts']) ) { - $field['layouts'] = array(); - $field['layouts'][] = $this->get_valid_layout(); + $field['layouts'] = array( + array() + ); } @@ -1223,6 +1213,121 @@ class acf_field_flexible_content extends acf_field { } + + /* + * ajax_layout_title + * + * description + * + * @type function + * @date 2/03/2016 + * @since 5.3.2 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function ajax_layout_title() { + + // options + $options = acf_parse_args( $_POST, array( + 'post_id' => 0, + 'i' => 0, + 'field_key' => '', + 'nonce' => '', + 'layout' => '', + 'acf' => array() + )); + + + // load field + $field = acf_get_field( $options['field_key'] ); + + if( !$field ) die(); + + + // vars + $layout = false; + + foreach( $field['layouts'] as $k => $layout ) { + + if( $layout['name'] === $options['layout'] ) break; + + } + + + // bail ealry if no layout + if( !$layout ) die(); + + + // value + // this flexible content field may be a sub field so it is important to + // loop though all $_POST data to find thi's field's row value + $value = $options['acf']; + + while( is_array($value) ) { + + // get first key + $k = key($value); + + + // update value + $value = array_pop( $value[ $k ] ); + + + // stop looking if we have found the correct field's value + if( $k === $options['field_key'] ) break; + + } + + + // title + $title = $this->get_layout_title( $field, $layout, $options['i'], $value ); + + + // echo + echo $title; + die; + + } + + + function get_layout_title( $field, $layout, $i, $value ) { + + // add loop + acf_add_loop(array( + 'selector' => $field['name'], + 'name' => $field['name'], + 'value' => array( $value ), + 'field' => $field, + 'i' => 0, + 'post_id' => 0, + )); + + + // vars + $title = $layout['label']; + + + // filters + $title = apply_filters('acf/fields/flexible_content/layout_title', $title, $field, $layout, $i); + $title = apply_filters('acf/fields/flexible_content/layout_title/name='.$field['_name'], $title, $field, $layout, $i); + $title = apply_filters('acf/fields/flexible_content/layout_title/key='.$field['key'], $title, $field, $layout, $i); + + + // remove loop + acf_remove_loop(); + + + // prepend order + $title = '' . ($i+1) . ' ' . $title; + + + // return + return $title; + + } + } new acf_field_flexible_content(); diff --git a/pro/fields/repeater.php b/pro/fields/repeater.php index 3a607e0..d06f18a 100644 --- a/pro/fields/repeater.php +++ b/pro/fields/repeater.php @@ -218,16 +218,8 @@ class acf_field_repeater extends acf_field { // collapsed - $collapsed = array(); - if( $field['collapsed'] ) { - // get user setting - $collapsed = acf_get_user_setting('collapsed_' . $field['key'], ''); - $collapsed = explode(',', $collapsed); - $collapsed = array_filter($collapsed, 'is_numeric'); - - // add target class foreach( array_keys($field['sub_fields']) as $i ) { @@ -297,7 +289,7 @@ class acf_field_repeater extends acf_field { $row_class .= ' acf-clone'; - } elseif( in_array($i, $collapsed) ) { + } elseif( acf_is_row_collapsed($field['key'], $i) ) { $row_class .= ' -collapsed'; diff --git a/readme.txt b/readme.txt index f366349..5c1a752 100644 --- a/readme.txt +++ b/readme.txt @@ -106,6 +106,25 @@ http://support.advancedcustomfields.com/ == Changelog == += 5.3.6.1 = +* Flexible Content field: Fixed PHP error in 'acf/fields/flexible_content/layout_title' filter (when used as a sub field) +* Core: Fixed bug causing `get_field()` to load from the incorrect post (when within a custom WP_Query loop) + += 5.3.6 = +* Flexible Content field: Added new 'acf/fields/flexible_content/layout_title' filter to customize layout title +* Image field: Fixed bug where searching within media library would ignore restriction settings +* File field: Same as above +* Field group: Added post types to comment form location rules +* Color Picker field: Added 'color_picker_args' JS filter to modify wpColorPicker args +* API: Improved `get_` functions to load value from the current queried object (post, user, term) +* Core: Added new 'acf/translate_field' filter to translate field settings text +* Core: Added new 'acf/translate_field_group' filter to translate field group settings text +* Core: Removed 'l10n_field' and 'l10n_field_group' settings +* Core: Fixed bug causing 'acf/input/admin_head' action to run twice +* Core: Added support for new WP 4.5 term edit page +* Core: Moved google map and wysiwyg JS initialisation later in the page load to help speed up edit screens +* Core: Minor fixes and improvements + = 5.3.5 = * User field: Fixed pagination bug causing missing results * Core: Added new filter 'acf/location/screen' to customize location rules matching args