192 lines
7.0 KiB
PHP
192 lines
7.0 KiB
PHP
<?php
|
||
defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
|
||
|
||
if ( ! imagify_can_optimize_custom_folders() ) {
|
||
return;
|
||
}
|
||
|
||
// Get folders, remove excluded ones, sort them, add labels.
|
||
$custom_folders = Imagify_Folders_DB::get_instance()->get_active_folders_column( 'path' );
|
||
$themes = array();
|
||
|
||
if ( $custom_folders ) {
|
||
$custom_folders = array_combine( $custom_folders, $custom_folders );
|
||
$custom_folders = array_map( array( 'Imagify_Files_Scan', 'remove_placeholder' ), $custom_folders );
|
||
$custom_folders = array_map( 'trailingslashit', $custom_folders );
|
||
$custom_folders = array_filter( $custom_folders, array( 'Imagify_Files_Scan', 'is_path_autorized' ) );
|
||
}
|
||
|
||
if ( $custom_folders ) {
|
||
$custom_folders = array_map( array( $this->filesystem, 'make_path_relative' ), $custom_folders );
|
||
$custom_folders = array_map( 'untrailingslashit', $custom_folders );
|
||
natcasesort( $custom_folders );
|
||
$custom_folders = array_map( 'trailingslashit', $custom_folders );
|
||
|
||
if ( isset( $custom_folders['{{ROOT}}/'] ) ) {
|
||
$custom_folders['{{ROOT}}/'] = __( 'Site\'s root', 'imagify' );
|
||
}
|
||
}
|
||
|
||
// Current used theme(s).
|
||
if ( ! is_network_admin() ) {
|
||
$current_theme = wp_get_theme();
|
||
$themes_not_added = array();
|
||
|
||
foreach ( array( $current_theme, $current_theme->parent() ) as $theme ) {
|
||
if ( ! $theme || ! $theme->exists() ) {
|
||
continue;
|
||
}
|
||
|
||
$theme_path = trailingslashit( $theme->get_stylesheet_directory() );
|
||
|
||
if ( ! Imagify_Files_Scan::is_path_forbidden( $theme_path ) ) {
|
||
$theme = array(
|
||
'name' => $theme->display( 'Name' ),
|
||
'path' => Imagify_Files_Scan::add_placeholder( $theme_path ),
|
||
'label' => $this->filesystem->make_path_relative( $theme_path ),
|
||
);
|
||
|
||
$themes[ $theme['path'] ] = $theme;
|
||
$added = false;
|
||
$rel_path = strtolower( $theme['label'] );
|
||
|
||
foreach ( $custom_folders as $path => $label ) {
|
||
if ( strpos( $rel_path, strtolower( $label ) ) === 0 ) {
|
||
$added = true;
|
||
break;
|
||
}
|
||
}
|
||
|
||
if ( ! $added ) {
|
||
$themes_not_added[] = $theme['path'];
|
||
}
|
||
}
|
||
}
|
||
|
||
$themes_count = count( $themes );
|
||
}
|
||
?>
|
||
<div class="imagify-custom-folders-section">
|
||
<div class="imagify-col" id="custom-folders">
|
||
<h3 class="imagify-options-subtitle"><?php _e( 'Custom Folders', 'imagify' ); ?></h3>
|
||
|
||
<div id="imagify-custom-folders" class="hide-if-no-js imagify-mt2">
|
||
|
||
<?php if ( $themes ) { ?>
|
||
<div class="imagify-folder-themes-suggestion">
|
||
<div class="imagify-fts-header imagify-flex imagify-vcenter">
|
||
<span><i class="dashicons dashicons-info"></i></span>
|
||
<p>
|
||
<?php
|
||
$theme = reset( $themes );
|
||
|
||
/* translators: %s is a theme name. */
|
||
printf( __( 'You’re using %s', 'imagify' ), '<strong>' . $theme['name'] . '</strong>' );
|
||
|
||
if ( $themes_count > 1 ) {
|
||
$theme = end( $themes );
|
||
echo '<br>';
|
||
/* translators: %s is a theme name. */
|
||
printf( __( 'child theme of %s', 'imagify' ), '<strong>' . $theme['name'] . '</strong>' );
|
||
}
|
||
?>
|
||
</p>
|
||
</div>
|
||
|
||
<div class="imagify-fts-content">
|
||
<?php
|
||
if ( ! $themes_not_added ) {
|
||
?>
|
||
<p class="imagify-mb0"><?php echo _n( 'Your theme is already in the optimization process. All Good!', 'Your themes are already in the optimization process. All Good!', $themes_count, 'imagify' ); ?></p>
|
||
<?php
|
||
} elseif ( count( $themes_not_added ) !== $themes_count ) {
|
||
$theme = reset( $themes_not_added );
|
||
$theme = $themes[ $theme ];
|
||
?>
|
||
<p><?php _e( 'Only one of your current themes is in the optimization process, would you like to also optimize the other one?', 'imagify' ); ?></p>
|
||
|
||
<button id="imagify-add-themes-to-custom-folder"
|
||
class="button imagify-button-clean imagify-add-themes" type="button"
|
||
data-theme="<?php echo esc_attr( $theme['path'] ) . '#///#' . esc_attr( $theme['label'] ); ?>">
|
||
<span class="dashicons dashicons-plus"></span>
|
||
<span class="button-text"><?php
|
||
/* translators: %s is a theme name. */
|
||
printf( __( 'Add %s to optimization', 'imagify' ), '<strong>' . $theme['name'] . '</strong>' );
|
||
?></span>
|
||
</button>
|
||
<?php
|
||
} else {
|
||
foreach ( $themes as $path => $theme ) {
|
||
$themes[ $path ] = esc_attr( $theme['path'] ) . '#///#' . esc_attr( $theme['label'] );
|
||
}
|
||
?>
|
||
<p><?php echo _n( 'Would you like to optimize your theme?', 'Would you like to optimize your themes?', $themes_count, 'imagify' ); ?></p>
|
||
|
||
<button id="imagify-add-themes-to-custom-folder"
|
||
class="button imagify-button-clean imagify-add-themes" type="button"
|
||
data-theme="<?php echo implode( '" data-theme-parent="', $themes ); ?>">
|
||
<span class="dashicons dashicons-plus"></span>
|
||
<span
|
||
class="button-text"><?php echo _n( 'Add the theme to optimization', 'Add the themes to optimization', $themes_count, 'imagify' ); ?></span>
|
||
</button>
|
||
<?php
|
||
}
|
||
?>
|
||
</div>
|
||
</div>
|
||
<?php } ?>
|
||
|
||
<p class="imagify-kindof-title imagify-flex imagify-vcenter">
|
||
<span><?php _e( 'Select folders for optimization.', 'imagify' ); ?></span>
|
||
<span>
|
||
<button id="imagify-add-custom-folder"
|
||
class="button imagify-button-mini imagify-button-primary imagify-add-custom-folder"
|
||
type="button">
|
||
<span class="dashicons dashicons-plus"></span>
|
||
<span class="button-text"><?php _e( 'Add folders', 'imagify' ); ?></span>
|
||
</button>
|
||
<img class="imagify-loader" aria-hidden="true" alt="<?php esc_attr_e( 'Loading...', 'imagify' ); ?>" src="<?php echo esc_url( IMAGIFY_ASSETS_IMG_URL . 'loader-balls.svg' ); ?>" width="38" height="24"/>
|
||
</span>
|
||
</p>
|
||
|
||
<fieldset id="imagify-custom-folders-selected">
|
||
<?php
|
||
if ( $custom_folders ) {
|
||
foreach ( $custom_folders as $placeholder => $label ) {
|
||
$this->print_template( 'part-settings-row-custom-folder', array(
|
||
'value' => $placeholder,
|
||
'label' => $label,
|
||
) );
|
||
}
|
||
}
|
||
?>
|
||
</fieldset>
|
||
|
||
<p>
|
||
<?php
|
||
printf(
|
||
/* translators: 1 and 2 are <strong> opening and closing tags. */
|
||
__( '%1$sSelecting a folder will also optimize images in sub-folders.%2$s The only exception is "Site’s root": when selected, only images that are directly at the site’s root will be optimized (sub-folders can be selected separately).', 'imagify' ),
|
||
'<strong>',
|
||
'</strong>'
|
||
);
|
||
?>
|
||
<br/>
|
||
<?php _e( 'Folders that are hidden in the folder selector window are excluded and will not be optimized even if a parent folder is selected.', 'imagify' ); ?>
|
||
</p>
|
||
|
||
<p class="imagify-success hidden"><?php _e( 'You changed your custom folder settings, don\'t forget to save your changes!', 'imagify' ); ?></p>
|
||
|
||
<script type="text/html" id="tmpl-imagify-custom-folder">
|
||
<?php
|
||
$this->print_template( 'part-settings-row-custom-folder', array(
|
||
'value' => '{{ data.value }}',
|
||
'label' => '{{ data.label }}',
|
||
) );
|
||
?>
|
||
</script>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<?php
|