1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
<?php
class CMB2_Type_File_List extends CMB2_Type_File_Base {
public function render( $args = array() ) {
$field = $this->field;
$meta_value = $field->escaped_value();
$name = $this->_name();
$img_size = $field->args( 'preview_size' );
$query_args = $field->args( 'query_args' );
$output = '';
$img_size_data = parent::get_image_size_data( $img_size, 'thumbnail' );
$output .= parent::render( array(
'type' => 'hidden',
'class' => 'cmb2-upload-file cmb2-upload-list',
'size' => 45,
'desc' => '',
'value' => '',
'data-previewsize' => sprintf( '[%d,%d]', $img_size_data['width'], $img_size_data['height'] ),
'data-sizename' => $img_size_data['name'],
'data-queryargs' => ! empty( $query_args ) ? json_encode( $query_args ) : '',
'js_dependencies' => 'media-editor',
) );
$output .= parent::render( array(
'type' => 'button',
'class' => 'cmb2-upload-button button-secondary cmb2-upload-list',
'value' => esc_attr( $this->_text( 'add_upload_files_text', esc_html__( 'Add or Upload Files', 'cmb2' ) ) ),
'name' => false,
'id' => false,
) );
$output .= '<ul id="' . $this->_id( '-status', false ) . '" class="cmb2-media-status cmb-attach-list">';
if ( $meta_value && is_array( $meta_value ) ) {
foreach ( $meta_value as $id => $fullurl ) {
$id_input = parent::render( array(
'type' => 'hidden',
'value' => $fullurl,
'name' => $name . '[' . $id . ']',
'id' => 'filelist-' . $id,
'data-id' => $id,
'desc' => '',
'class' => false,
) );
if ( $this->is_valid_img_ext( $fullurl ) ) {
$output .= $this->img_status_output( array(
'image' => wp_get_attachment_image( $id, $img_size ),
'tag' => 'li',
'id_input' => $id_input,
) );
} else {
$output .= $this->file_status_output( array(
'value' => $fullurl,
'tag' => 'li',
'id_input' => $id_input,
) );
}
}
}
$output .= '</ul>';
return $this->rendered( $output );
}
}