function wpuxss_eml_enqueue_media()
 {
     global $wpuxss_eml_version, $wpuxss_eml_dir, $wp_version, $current_screen;
     if (!is_admin()) {
         return;
     }
     $media_library_mode = get_user_option('media_library_mode', get_current_user_id()) ? get_user_option('media_library_mode', get_current_user_id()) : 'grid';
     $wpuxss_eml_lib_options = get_option('wpuxss_eml_lib_options');
     $wpuxss_eml_tax_options = get_option('wpuxss_eml_tax_options');
     $wpuxss_eml_taxonomies = get_option('wpuxss_eml_taxonomies', array());
     $media_taxonomies = get_object_taxonomies('attachment', 'object');
     $media_taxonomy_names = array_keys($media_taxonomies);
     $media_taxonomies_ready_for_script = array();
     $filter_taxonomy_names_ready_for_script = array();
     $compat_taxonomies_to_hide = array();
     $terms = get_terms($media_taxonomy_names, array('fields' => 'all', 'get' => 'all'));
     $terms_id_tt_id_ready_for_script = wpuxss_eml_get_media_term_pairs($terms, 'id=>tt_id');
     $terms_id_name_ready_for_script = wpuxss_eml_get_media_term_pairs($terms, 'id=>name');
     foreach ($media_taxonomies as $taxonomy) {
         $taxonomy_terms = array();
         ob_start();
         wp_terms_checklist(0, array('taxonomy' => $taxonomy->name, 'checked_ontop' => false, 'walker' => new Walker_Media_Taxonomy_Uploader_Filter()));
         $html = '';
         if (ob_get_contents() != false) {
             $html = ob_get_contents();
         }
         ob_end_clean();
         $html = str_replace('}{', '},{', $html);
         $html = '[' . $html . ']';
         $taxonomy_terms = json_decode($html, true);
         $media_taxonomies_ready_for_script[$taxonomy->name] = array('singular_name' => $taxonomy->labels->singular_name, 'plural_name' => $taxonomy->labels->name, 'term_list' => $taxonomy_terms, 'terms' => $terms_id_name_ready_for_script);
         if ((bool) $wpuxss_eml_taxonomies[$taxonomy->name]['media_uploader_filter']) {
             $filter_taxonomy_names_ready_for_script[] = $taxonomy->name;
         }
         if (!(bool) $wpuxss_eml_taxonomies[$taxonomy->name]['media_popup_taxonomy_edit']) {
             $compat_taxonomies_to_hide[] = $taxonomy->name;
         }
     }
     // generic scripts
     wp_enqueue_script('wpuxss-eml-media-models-script', $wpuxss_eml_dir . 'js/eml-media-models.js', array('media-models'), $wpuxss_eml_version, true);
     wp_enqueue_script('wpuxss-eml-media-views-script', $wpuxss_eml_dir . 'js/eml-media-views.js', array('media-views'), $wpuxss_eml_version, true);
     // TODO:
     //        wp_enqueue_script(
     //            'wpuxss-eml-tags-box-script',
     //            '/wp-admin/js/tags-box.js',
     //            array(),
     //            $wpuxss_eml_version,
     //            true
     //        );
     $media_models_l10n = array('media_orderby' => $wpuxss_eml_lib_options['media_orderby'], 'media_order' => $wpuxss_eml_lib_options['media_order'], 'bulk_edit_nonce' => wp_create_nonce('eml-bulk-edit-nonce'));
     wp_localize_script('wpuxss-eml-media-models-script', 'wpuxss_eml_media_models_l10n', $media_models_l10n);
     $media_views_l10n = array('terms' => $terms_id_tt_id_ready_for_script, 'taxonomies' => $media_taxonomies_ready_for_script, 'filter_taxonomies' => $filter_taxonomy_names_ready_for_script, 'compat_taxonomies' => $media_taxonomy_names, 'compat_taxonomies_to_hide' => $compat_taxonomies_to_hide, 'is_tax_compat' => count($media_taxonomy_names) - count($compat_taxonomies_to_hide) > 0 ? 1 : 0, 'force_filters' => $wpuxss_eml_tax_options['force_filters'], 'wp_version' => $wp_version, 'uncategorized' => __('All Uncategorized', 'enhanced-media-library'), 'filter_by' => __('Filter by', 'enhanced-media-library'), 'in' => __('All', 'enhanced-media-library'), 'not_in' => __('Not in', 'enhanced-media-library'), 'reset_filters' => __('Reset All Filters', 'enhanced-media-library'), 'current_screen' => isset($current_screen) ? $current_screen->id : '');
     wp_localize_script('wpuxss-eml-media-views-script', 'wpuxss_eml_media_views_l10n', $media_views_l10n);
     if (wpuxss_eml_enhance_media_shortcodes()) {
         wp_enqueue_script('wpuxss-eml-enhanced-medialist-script', $wpuxss_eml_dir . 'js/eml-enhanced-medialist.js', array('media-views'), $wpuxss_eml_version, true);
         wp_enqueue_script('wpuxss-eml-media-editor-script', $wpuxss_eml_dir . 'js/eml-media-editor.js', array('media-editor', 'media-views', 'wpuxss-eml-enhanced-medialist-script'), $wpuxss_eml_version, true);
         $enhanced_medialist_l10n = array('uploaded_to' => __('Uploaded to post #', 'enhanced-media-library'), 'based_on' => __('Based On', 'enhanced-media-library'));
         wp_localize_script('wpuxss-eml-enhanced-medialist-script', 'wpuxss_eml_enhanced_medialist_l10n', $enhanced_medialist_l10n);
     }
     // scripts for grid view :: /wp-admin/upload.php
     if (isset($current_screen) && 'upload' === $current_screen->base && 'grid' === $media_library_mode) {
         wp_enqueue_script('wpuxss-eml-media-grid-script', $wpuxss_eml_dir . 'js/eml-media-grid.js', array('media'), $wpuxss_eml_version, true);
     }
 }
 function wpuxss_eml_enqueue_media()
 {
     global $wpuxss_eml_version, $wpuxss_eml_dir, $wp_version, $current_screen;
     if (!is_admin()) {
         return;
     }
     $media_library_mode = get_user_option('media_library_mode', get_current_user_id()) ? get_user_option('media_library_mode', get_current_user_id()) : 'grid';
     $wpuxss_eml_tax_options = get_option('wpuxss_eml_tax_options');
     // taxonomies for passing to media uploader's filter
     $wpuxss_eml_taxonomies = get_option('wpuxss_eml_taxonomies');
     if (empty($wpuxss_eml_taxonomies)) {
         $wpuxss_eml_taxonomies = array();
     }
     $all_taxonomies_array = array();
     // all attachment taxonomies
     $taxonomies_array = array();
     // attachment taxonomies excluding those without grid view filter
     $compat_taxonomies_to_hide = array();
     $compat_taxonomies_to_show = array();
     $compat_taxonomies = array();
     foreach (get_object_taxonomies('attachment', 'object') as $taxonomy) {
         $terms_array = array();
         $terms = array();
         if ($wpuxss_eml_taxonomies[$taxonomy->name]['media_uploader_filter'] && function_exists('wp_terms_checklist')) {
             ob_start();
             wp_terms_checklist(0, array('taxonomy' => $taxonomy->name, 'checked_ontop' => false, 'walker' => new Walker_Media_Taxonomy_Uploader_Filter()));
             $html = '';
             if (ob_get_contents() != false) {
                 $html = ob_get_contents();
             }
             ob_end_clean();
             $html = str_replace('}{', '},{', $html);
             $html = '[' . $html . ']';
             $terms = json_decode($html, true);
             $terms = array_filter($terms);
             if (!empty($terms)) {
                 $taxonomies_array[$taxonomy->name] = array('singular_name' => $taxonomy->labels->singular_name, 'plural_name' => $taxonomy->labels->name, 'term_list' => $terms);
             }
         }
         $all_terms = get_terms($taxonomy->name, array('fields' => 'id=>name', 'get' => 'all'));
         $all_taxonomies_array[$taxonomy->name] = array('singular_name' => $taxonomy->labels->singular_name, 'plural_name' => $taxonomy->labels->name, 'terms' => $all_terms);
         if (!$wpuxss_eml_taxonomies[$taxonomy->name]['media_popup_taxonomy_edit']) {
             $compat_taxonomies_to_hide[] = $taxonomy->name;
         } elseif ($wpuxss_eml_tax_options['edit_all_as_hierarchical'] || $taxonomy->hierarchical) {
             $compat_taxonomies_to_show[] = $taxonomy->name;
         }
         $compat_taxonomies[] = $taxonomy->name;
     }
     //endforeach
     // generic scripts
     wp_enqueue_script('wpuxss-eml-media-models-script', $wpuxss_eml_dir . 'js/eml-media-models.js', array('media-models'), $wpuxss_eml_version, true);
     wp_enqueue_script('wpuxss-eml-media-views-script', $wpuxss_eml_dir . 'js/eml-media-views.js', array('media-views'), $wpuxss_eml_version, true);
     // TODO:
     //        wp_enqueue_script(
     //            'wpuxss-eml-tags-box-script',
     //            '/wp-admin/js/tags-box.js',
     //            array(),
     //            $wpuxss_eml_version,
     //            true
     //        );
     $media_models_l10n = array('media_orderby' => $wpuxss_eml_tax_options['media_orderby'], 'media_order' => $wpuxss_eml_tax_options['media_order']);
     wp_localize_script('wpuxss-eml-media-models-script', 'wpuxss_eml_media_models_l10n', $media_models_l10n);
     $media_views_l10n = array('taxonomies' => $taxonomies_array, 'compat_taxonomies' => $compat_taxonomies, 'compat_taxonomies_to_hide' => $compat_taxonomies_to_hide, 'is_tax_compat' => count($compat_taxonomies_to_show) ? 1 : 0, 'force_filters' => $wpuxss_eml_tax_options['force_filters'], 'wp_version' => $wp_version, 'uncategorized' => __('All Uncategorized', 'eml'), 'filter_by' => __('Filter by ', 'eml'), 'in' => __('All ', 'eml'), 'not_in' => __('Not in ', 'eml'), 'reset_filters' => __('Reset All Filters', 'eml'), 'current_screen' => isset($current_screen) ? $current_screen->id : '');
     wp_localize_script('wpuxss-eml-media-views-script', 'wpuxss_eml_media_views_l10n', $media_views_l10n);
     if (wpuxss_eml_enhance_media_shortcodes()) {
         wp_enqueue_script('wpuxss-eml-enhanced-medialist-script', $wpuxss_eml_dir . 'js/eml-enhanced-medialist.js', array('media-views'), $wpuxss_eml_version, true);
         wp_enqueue_script('wpuxss-eml-media-editor-script', $wpuxss_eml_dir . 'js/eml-media-editor.js', array('media-editor', 'media-views', 'wpuxss-eml-enhanced-medialist-script'), $wpuxss_eml_version, true);
         $enhanced_medialist_l10n = array('all_taxonomies' => $all_taxonomies_array, 'uploaded_to' => __('Uploaded to post #', 'eml'), 'based_on' => __('Based On', 'eml'));
         wp_localize_script('wpuxss-eml-enhanced-medialist-script', 'wpuxss_eml_enhanced_medialist_l10n', $enhanced_medialist_l10n);
     }
     // scripts for grid view :: /wp-admin/upload.php
     if (isset($current_screen) && 'upload' === $current_screen->base && 'grid' === $media_library_mode) {
         wp_enqueue_script('wpuxss-eml-media-grid-script', $wpuxss_eml_dir . 'js/eml-media-grid.js', array('media'), $wpuxss_eml_version, true);
     }
 }