/** * Settings page output */ public function create_admin_page() { ?> <div class="wrap wpex-skins-admin"> <h2>Theme Skins</h2> <?php // Check if admin is enabled $notice = apply_filters('wpex_skins_deprecated_notice', true); // Display notice if ($notice) { ?> <div class="notice error" style="display:block!important;padding:20px;"> <h4 style="margin:0 0 10px;font-size:16px;">Important Notice</h4> <p>Skins have been deprecated since Total 3.0.0. The theme has enough settings to allow you to create a design that fits your needs without loading extra bloat. If you select the "base" skin this admin panel will be removed and you will see an error message. To re-enable please visit the online snippets for this theme.</p> <p>We highly recommend you select the BASE skin and make all your edits via the Customizer to get the design you want or use a child theme (both are more optimized methods).</p> </div> <?php } // Get skins array $skins = WPEX_Skin_Loader::skins_array(); // Current skin from site_theme option $current_skin = wpex_active_skin(); // Get fallback from redux if (!$current_skin) { $data = get_option('wpex_options'); $current_skin = isset($data['site_theme']) ? $data['site_theme'] : 'base'; } ?> <form method="post" action="options.php"> <?php settings_fields('wpex_skins_options'); ?> <div class="wpex-skins-select theme-browser" id="theme_skin"> <?php // Loop through skins foreach ($skins as $key => $val) { $classes = 'wpex-skin theme'; $checked = $active = ''; if (!empty($current_skin) && $current_skin == $key) { $checked = 'checked'; $classes .= ' active'; } ?> <div class="<?php echo $classes; ?> "> <input type="radio" id="wpex-skin-<?php echo $key; ?> " name="theme_skin" value="<?php echo $key; ?> " <?php echo $checked; ?> class="wpex-skin-radio" /> <?php if (!empty($val['screenshot'])) { ?> <div class="theme-screenshot"> <img src="<?php echo esc_url($val['screenshot']); ?> " alt="Screenshot" /> </div> <?php } elseif (function_exists('wpex_placeholder_img_src')) { ?> <div class="theme-screenshot"> <img src="<?php echo wpex_placeholder_img_src(); ?> " /> </div> <?php } ?> <h3 class="theme-name"> <?php if ('active' == $active) { echo '<strong>Active:</strong> '; } ?> <?php echo $val['name']; ?> </h3> </div> <?php } ?> </div><!-- .wpex-skin --> <?php submit_button(); ?> </form> </div><!-- .wpex-skins-select --> <script type="text/javascript"> ( function($) { "use strict"; $( '.wpex-skin' ).click( function() { $( '.wpex-skin' ).removeClass( 'active' ); $( this ).addClass( 'active' ); var radio = $(this).find( '.wpex-skin-radio' ); radio.prop( 'checked', true ); event.preventDefault(); } ); } ) ( jQuery ); </script> <?php }
/** * Returns correct HTMl for post thumbnails * * @since 2.0.0 */ function wpex_get_post_thumbnail($args = array()) { // Check if retina is enabled $retina_img = ''; $attr = array(); // Default args $defaults = array('attachment' => get_post_thumbnail_id(), 'size' => 'full', 'width' => '', 'height' => '', 'crop' => 'center-center', 'alt' => '', 'class' => '', 'return' => 'html', 'style' => '', 'retina' => wpex_global_obj('retina'), 'schema_markup' => false, 'placeholder' => false); // Parse args $args = wp_parse_args($args, $defaults); // Extract args extract($args); // Return dummy image if ('dummy' == $attachment || $placeholder) { return '<img src="' . wpex_placeholder_img_src() . '" />'; } // Return if there isn't any attachment if (!$attachment) { return; } // Sanitize variables $size = 'wpex-custom' == $size ? 'wpex_custom' : $size; $size = 'wpex_custom' == $size ? false : $size; $crop = !$crop ? 'center-center' : $crop; $crop = 'true' == $crop ? 'center-center' : $crop; // Image must have an alt if (empty($alt)) { $alt = get_post_meta($attachment, '_wp_attachment_image_alt', true); } if (empty($alt)) { $alt = trim(strip_tags(get_post_field('post_excerpt', $attachment))); } if (empty($alt)) { $alt = trim(strip_tags(get_the_title($attachment))); $alt = str_replace('_', ' ', $alt); $alt = str_replace('-', ' ', $alt); } // Prettify alt attribute if ($alt) { $alt = ucwords($alt); } // If image width and height equal '9999' return full image if ('9999' == $width && '9999' == $height) { $size = $size ? $size : 'full'; $width = $height = ''; } // Define crop locations $crop_locations = array_flip(wpex_image_crop_locations()); // Set crop location if defined in format 'left-top' and turn into array if ($crop && in_array($crop, $crop_locations)) { $crop = 'center-center' == $crop ? true : explode('-', $crop); } // Get attachment URl $attachment_url = wp_get_attachment_url($attachment); // Return if there isn't any attachment URL if (!$attachment_url) { return; } // Add classes if ($class) { $attr['class'] = $class; } // Add alt if ($alt) { $attr['alt'] = esc_attr($alt); } // Add style if ($style) { $attr['style'] = $style; } // Add schema markup if ($schema_markup) { $attr['itemprop'] = 'image'; } // If on the fly image resizing is enabled or a custom width/height is defined if (wpex_get_mod('image_resizing', true) || ($width || $height)) { // Add Classes if ($class) { $class = ' class="' . $class . '"'; } // If size is defined and not equal to wpex_custom if ($size && 'wpex_custom' != $size) { $dims = wpex_get_thumbnail_sizes($size); $width = $dims['width']; $height = $dims['height']; $crop = !empty($dims['crop']) ? $dims['crop'] : $crop; } // Crop standard image $image = wpex_image_resize(array('image' => $attachment_url, 'width' => $width, 'height' => $height, 'crop' => $crop)); // Generate retina version if ($retina) { $retina_img = wpex_generate_retina_image($attachment_url, $width, $height, $crop); if ($retina_img) { $attr['data-at2x'] = $retina_img; } else { $attr['data-no-retina'] = ''; } } // Return HTMl if ($image) { // Return image URL if ('url' == $return) { return $image['url']; } else { // Add attributes $attr = array_map('esc_attr', $attr); $html = ''; foreach ($attr as $name => $value) { $html .= ' ' . esc_attr($name) . '="' . esc_attr($value) . '"'; } // Return img return '<img src="' . esc_url($image['url']) . '" width="' . esc_attr($image['width']) . '" height="' . esc_attr($image['height']) . '"' . $html . ' />'; } } } else { // Sanitize size $size = $size ? $size : 'full'; // Create retina version if retina is enabled (not needed for full images) if ($retina) { // Retina not needed for full images if ('full' != $size) { $dims = wpex_get_thumbnail_sizes($size); $retina_img = wpex_generate_retina_image($attachment_url, $dims['width'], $dims['height'], $dims['crop']); } // Add retina tag if ($retina_img) { $attr['data-at2x'] = $retina_img; } else { $attr['data-no-retina'] = ''; } } // Return image URL if ('url' == $return) { $src = wp_get_attachment_image_src($attachment, $size, false); return $src[0]; } else { return wp_get_attachment_image($attachment, $size, false, $attr); } } }
/** * Thumbnail column value added to category admin. * * @since 2.1.0 */ public function admin_column($columns, $column, $id) { // Add thumbnail to columns if ('wpex-term-thumbnail-col' == $column) { if ($thumbnail_id = $this->get_term_thumbnail_id($id, 'thumbnail_id', true)) { $image = wp_get_attachment_image_src($thumbnail_id, 'thumbnail'); $image = $image[0]; } else { $image = wpex_placeholder_img_src(); } $columns .= '<img src="' . esc_url($image) . '" alt="' . esc_attr__('Thumbnail', 'total') . '" class="wp-post-image" height="48" width="48" />'; } // Return columns return $columns; }