get( 'Version' ) );
wp_register_script( 'brittany-light-post-meta', get_template_directory_uri() . '/inc/js/post-meta.js', array(
'media-editor',
'jquery',
'jquery-ui-sortable'
), $theme->get( 'Version' ) );
$settings = array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'tSelectFile' => esc_html__( 'Select file', 'brittany-light' ),
'tSelectFiles' => esc_html__( 'Select files', 'brittany-light' ),
'tUseThisFile' => esc_html__( 'Use this file', 'brittany-light' ),
'tUseTheseFiles' => esc_html__( 'Use these files', 'brittany-light' ),
'tUpdateGallery' => esc_html__( 'Update gallery', 'brittany-light' ),
'tLoading' => esc_html__( 'Loading...', 'brittany-light' ),
'tPreviewUnavailable' => esc_html__( 'Gallery preview not available.', 'brittany-light' ),
'tRemoveImage' => esc_html__( 'Remove image', 'brittany-light' ),
'tRemoveFromGallery' => esc_html__( 'Remove from gallery', 'brittany-light' ),
);
wp_localize_script( 'brittany-light-post-meta', 'brittany_light_PostMeta', $settings );
}
//
// Various wrapping functions for easier custom fields creation.
//
function brittany_light_prepare_metabox( $post_type ) {
wp_nonce_field( basename( __FILE__ ), $post_type . '_nonce' );
}
function brittany_light_can_save_meta( $post_type ) {
global $post;
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return false;
}
if ( isset( $_POST['post_view'] ) and $_POST['post_view'] == 'list' ) {
return false;
}
if ( ! isset( $_POST['post_type'] ) or $_POST['post_type'] != $post_type ) {
return false;
}
if ( ! isset( $_POST[ $post_type . '_nonce' ] ) or ! wp_verify_nonce( $_POST[ $post_type . '_nonce' ], basename( __FILE__ ) ) ) {
return false;
}
$post_type_obj = get_post_type_object( $post->post_type );
if ( ! current_user_can( $post_type_obj->cap->edit_post, $post->ID ) ) {
return false;
}
return true;
}
function brittany_light_metabox_gallery( $gid = 1 ) {
global $post;
$post_id = $post->ID;
brittany_light_featgal_print_meta_html( $post_id, $gid );
}
function brittany_light_metabox_gallery_save( $POST, $gid = 1 ) {
global $post;
$post_id = $post->ID;
brittany_light_featgal_update_meta( $post_id, $POST, $gid );
}
function brittany_light_metabox_input( $fieldname, $label, $params = array() ) {
global $post;
$defaults = array(
'label_class' => '',
'input_class' => 'widefat',
'input_type' => 'text',
'esc_func' => 'esc_attr',
'before' => '
',
'after' => '
',
'default' => ''
);
$params = wp_parse_args( $params, $defaults );
$custom_keys = get_post_custom_keys( $post->ID );
if ( is_array( $custom_keys ) && in_array( $fieldname, $custom_keys ) ) {
$value = get_post_meta( $post->ID, $fieldname, true );
$value = call_user_func( $params['esc_func'], $value );
} else {
$value = $params['default'];
}
echo $params['before'];
if ( ! empty( $label ) ) {
?> '',
'input_class' => 'widefat',
'esc_func' => 'esc_textarea',
'before' => '',
'after' => '
',
'default' => ''
);
$params = wp_parse_args( $params, $defaults );
$custom_keys = get_post_custom_keys( $post->ID );
if ( is_array( $custom_keys ) && in_array( $fieldname, $custom_keys ) ) {
$value = get_post_meta( $post->ID, $fieldname, true );
$value = call_user_func( $params['esc_func'], $value );
} else {
$value = $params['default'];
}
echo $params['before'];
if ( ! empty( $label ) ) {
?> '',
'after' => '
',
'default' => ''
);
$params = wp_parse_args( $params, $defaults );
$custom_keys = get_post_custom_keys( $post->ID );
if ( is_array( $custom_keys ) && in_array( $fieldname, $custom_keys ) ) {
$value = get_post_meta( $post->ID, $fieldname, true );
} else {
$value = $params['default'];
}
echo $params['before'];
if ( ! empty( $label ) ) {
?>
'',
'after' => '
',
'default' => ''
);
$params = wp_parse_args( $params, $defaults );
$custom_keys = get_post_custom_keys( $post->ID );
if ( is_array( $custom_keys ) && in_array( $fieldname, $custom_keys ) ) {
$value = get_post_meta( $post->ID, $fieldname, true );
} else {
$value = $params['default'];
}
echo $params['before'];
?>
/>
'',
'after' => '
',
'default' => ''
);
$params = wp_parse_args( $params, $defaults );
$custom_keys = get_post_custom_keys( $post->ID );
if ( is_array( $custom_keys ) && in_array( $fieldname, $custom_keys ) ) {
$checked = get_post_meta( $post->ID, $fieldname, true );
} else {
$checked = $params['default'];
}
echo $params['before'];
?>
/>
'auto', // auto, p, ol, ul
'before' => '',
'before_each' => '',
'after' => '',
'after_each' => '',
);
$params = wp_parse_args( $params, $defaults );
if ( empty( $strings ) ) {
return;
}
if ( $params['type'] == 'auto' ) {
if ( is_array( $strings ) && count( $strings ) > 1 ) {
$params['type'] = 'ol';
} else {
$params['type'] = 'p';
}
}
if ( is_string( $strings ) ) {
$strings = array( $strings );
}
if ( $params['type'] == 'p' ) {
$params['before_each'] = '';
$params['after_each'] = '
';
} elseif ( $params['type'] == 'ol' ) {
$params['before'] = '';
$params['before_each'] = '- ';
$params['after'] = '
';
$params['after_each'] = '';
} elseif ( $params['type'] == 'ul' ) {
$params['before'] = '';
$params['before_each'] = '- ';
$params['after'] = '
';
$params['after_each'] = '';
}
echo $params['before'];
foreach ( $strings as $string ) {
echo $params['before_each'] . $string . $params['after_each'];
}
echo $params['after'];
}
function brittany_light_bind_metabox_to_page_template( $metabox_id, $template_file, $js_var ) {
if ( is_array( $template_file ) ) {
$template_file = implode( "', '", $template_file );
}
$js = << 0) {
var {$js_var} = $('#{$metabox_id}');
var {$js_var}_template = ['{$template_file}'];
{$js_var}.hide();
//if( template_box.val() == {$js_var}_template)
if( $.inArray( template_box.val(), {$js_var}_template ) > -1 )
{$js_var}.show();
template_box.change(function(){
//if( template_box.val() == {$js_var}_template)
if( $.inArray( template_box.val(), {$js_var}_template ) > -1 )
{$js_var}.show();
else
{$js_var}.hide();
});
}
ENDJS;
brittany_light_add_inline_js( $js, sanitize_key( 'metabox_template_' . $metabox_id . '_' . $template_file ) );
}
function brittany_light_bind_metabox_to_post_format( $metabox_id, $post_format, $js_var ) {
if ( is_array( $post_format ) ) {
$post_format = implode( "', '", $post_format );
}
$js = << 0) {
var {$js_var} = $('#{$metabox_id}');
var {$js_var}_format = ['{$post_format}'];
{$js_var}.hide();
if( $.inArray( formats_box.filter(':checked').val(), {$js_var}_format ) > -1 )
{$js_var}.show();
formats_box.change(function(){
if( $.inArray( $(this).val(), {$js_var}_format ) > -1 )
{$js_var}.show();
else
{$js_var}.hide();
});
}
ENDJS;
brittany_light_add_inline_js( $js, sanitize_key( 'metabox_format_' . $metabox_id . '_' . $post_format ) );
}
/**
* Creates the necessary gallery HTML code for use in metaboxes.
*
* @param int|bool $post_id The post ID where the gallery's default values should be loaded from. If empty, the global $post object's ID is used.
* @param int $gid The gallery ID (instance). Only needed when a post has more than one galleries. Defaults to 1.
* @return void
*/
function brittany_light_featgal_print_meta_html( $post_id = false, $gid = 1 ) {
if ( $post_id == false ) {
global $post;
$post_id = $post->ID;
}
$gid = absint( $gid );
if ( $gid < 1 ) {
$gid = 1;
}
$ids = get_post_meta( $post_id, 'ci_featured_gallery_' . $gid, true );
$rand = get_post_meta( $post_id, 'ci_featured_gallery_rand_' . $gid, true );
$custom_keys = get_post_custom_keys( $post_id );
?>
0 ) {
$ids = array_map( 'intval', $ids );
$ids = array_map( 'abs', $ids );
$ids_string = implode( ',', $ids );
}
}
if ( ! empty( $POST[ $f_rand ] ) and $POST[ $f_rand ] == 'rand' ) {
$rand_string = 'rand';
}
update_post_meta( $post_id, $f_ids, $ids_string );
update_post_meta( $post_id, $f_rand, $rand_string );
}
function brittany_light_featgal_get_ids( $post_id = false, $gid = 1 ) {
if ( $post_id == false ) {
global $post;
$post_id = $post->ID;
} else {
$post_id = absint( $post_id );
}
$gid = absint( $gid );
if ( $gid < 1 ) {
$gid = 1;
}
$ids = get_post_meta( $post_id, 'ci_featured_gallery_' . $gid, true );
$rand = get_post_meta( $post_id, 'ci_featured_gallery_rand_' . $gid, true );
$ids = explode( ',', $ids );
$ids = array_filter( $ids );
if ( 'rand' == $rand ) {
shuffle( $ids );
}
return $ids;
}
function brittany_light_featgal_get_attachments( $post_id = false, $gid = 1, $extra_args = array() ) {
if ( $post_id == false ) {
global $post;
$post_id = $post->ID;
} else {
$post_id = absint( $post_id );
}
$gid = absint( $gid );
if ( $gid < 1 ) {
$gid = 1;
}
$ids = get_post_meta( $post_id, 'ci_featured_gallery_' . $gid, true );
$rand = get_post_meta( $post_id, 'ci_featured_gallery_rand_' . $gid, true );
$ids = explode( ',', $ids );
$ids = array_filter( $ids );
$args = array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'post_status' => 'any',
'posts_per_page' => - 1,
'suppress_filters' => true,
);
$custom_keys = get_post_custom_keys( $post_id );
if( is_null( $custom_keys ) ) {
$custom_keys = array();
}
if ( ! in_array( 'ci_featured_gallery_' . $gid, $custom_keys ) ) {
$args['post_parent'] = $post_id;
$args['order'] = 'ASC';
$args['orderby'] = 'menu_order';
} elseif ( count( $ids ) > 0 ) {
$args['post__in'] = $ids;
$args['orderby'] = 'post__in';
if ( $rand == 'rand' ) {
$args['orderby'] = 'rand';
}
} else {
// Make sure we return an empty result set.
$args['post__in'] = array( - 1 );
}
if ( is_array( $extra_args ) and count( $extra_args ) > 0 ) {
$args = array_merge( $args, $extra_args );
}
return new WP_Query( $args );
}
/**
* Reads $_POST["ids"] for a comma separated list of image attachment IDs, prints a JSON array of image URLs and exits.
* Hooked to wp_ajax_brittany_light_featgal_AJAXPreview for AJAX updating of the galleries' previews.
*/
function brittany_light_featgal_AJAXPreview() {
$ids = $_POST['ids'];
$urls = brittany_light_featgal_get_images( $ids );
if ( $urls === false ) {
echo 'FAIL';
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
wp_die();
} else {
die;
}
} else {
wp_send_json( $urls );
}
}
/**
* Reads $csv for a comma separated list of image attachment IDs. Returns a php array of image URLs and IDs, or false.
*
* @param string $csv A comma separated list of image attachment IDs.
* @return array|bool
*/
function brittany_light_featgal_get_images( $csv = false ) {
$ids = explode(',', $csv);
$ids = array_filter($ids);
if ( count( $ids ) > 0 ) {
$ids = array_map( 'intval', $ids );
$ids = array_map( 'abs', $ids );
$urls = array();
global $_wp_additional_image_sizes;
$image_sizes = $_wp_additional_image_sizes;
foreach ( $ids as $id ) {
$thumb_file = brittany_light_get_image_src( $id, 'brittany_light_featgal_small_thumb' );
$file = parse_url( $thumb_file );
$file = pathinfo( $file['path'] );
$file = basename( $file['basename'], '.' . $file['extension'] );
$size = $image_sizes['brittany_light_featgal_small_thumb']['width'] . 'x' . $image_sizes['brittany_light_featgal_small_thumb']['height'];
if ( brittany_light_substr_right( $file, strlen( $size ) ) == $size ) {
$file = $thumb_file;
} else {
$file = brittany_light_get_image_src( $id, 'thumbnail' );
}
$data = array(
'id' => $id,
//'url' => ci_get_image_src($id, 'brittany_light_featgal_small_thumb')
'url' => $file
);
$urls[] = $data;
}
return $urls;
} else {
return false;
}
}