You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.2 KiB
104 lines
3.2 KiB
<?php |
|
/** |
|
* Aldine admin |
|
* |
|
* @package Aldine |
|
*/ |
|
|
|
namespace Aldine\Admin; |
|
|
|
use PressbooksMix\Assets; |
|
use Pressbooks\Admin\Network\SharingAndPrivacyOptions; |
|
use Pressbooks\BookDirectory; |
|
use Pressbooks\DataCollector\Book as BookDataCollector; |
|
|
|
/** |
|
* Uses old option to provide a simpler upgrade path from pressbooks-publisher theme |
|
*/ |
|
const BLOG_OPTION = 'pressbooks_publisher_in_catalog'; |
|
|
|
/** |
|
* Load admin scripts |
|
* |
|
* @param string $hook Hook |
|
*/ |
|
function admin_scripts( $hook ) { |
|
if ( 'sites.php' !== $hook ) { |
|
return; |
|
} |
|
|
|
$assets = new Assets( 'pressbooks-aldine', 'theme' ); |
|
$assets->setSrcDirectory( 'assets' )->setDistDirectory( 'dist' ); |
|
wp_enqueue_script( 'pressbooks-aldine-admin', $assets->getPath( 'scripts/catalog-admin.js' ), [ 'jquery' ] ); |
|
|
|
wp_localize_script( |
|
'pressbooks-aldine-admin', 'PB_Aldine_Admin', [ |
|
'aldineAdminNonce' => wp_create_nonce( 'pressbooks-aldine-admin' ), |
|
'catalog_updated' => __( 'Catalog updated.', 'pressbooks-aldine' ), |
|
'catalog_not_updated' => __( 'Sorry, but your catalog was not updated. Please try again.', 'pressbooks-aldine' ), |
|
'dismiss_notice' => __( 'Dismiss this notice.', 'pressbooks-aldine' ), |
|
] |
|
); |
|
} |
|
|
|
/** |
|
* Update catalog |
|
*/ |
|
function update_catalog() { |
|
if ( ! current_user_can( 'manage_network' ) || ! check_ajax_referer( 'pressbooks-aldine-admin' ) ) { |
|
return; |
|
} |
|
if ( isset( $_POST['book_id'] ) ) { |
|
$blog_id = absint( $_POST['book_id'] ); |
|
} |
|
if ( isset( $_POST['in_catalog'] ) ) { |
|
$in_catalog = wp_unslash( $_POST['in_catalog'] ); |
|
if ( $in_catalog === 'true' ) { |
|
update_blog_option( $blog_id, \Aldine\Admin\BLOG_OPTION, 1 ); |
|
update_site_meta( $blog_id, BookDataCollector::IN_CATALOG, 1 ); |
|
} else { |
|
delete_blog_option( $blog_id, \Aldine\Admin\BLOG_OPTION ); |
|
} |
|
} |
|
update_site_meta( $blog_id, BookDataCollector::IN_CATALOG, 0 ); |
|
// Exclude book when network option book directory non-catalog exclude is enabled. |
|
$option = get_site_option( 'pressbooks_sharingandprivacy_options', [], true ); |
|
if ( |
|
isset( $option[ SharingAndPrivacyOptions::NETWORK_DIRECTORY_EXCLUDED ] ) && |
|
( (bool) $option[ SharingAndPrivacyOptions::NETWORK_DIRECTORY_EXCLUDED ] === true ) |
|
) { |
|
BookDirectory::init()->deleteBookFromDirectory( [ $blog_id ] ); |
|
} |
|
update_blog_details( $blog_id, [ 'last_updated' => current_time( 'mysql', true ) ] ); |
|
} |
|
|
|
/** |
|
* Catalog columns |
|
* |
|
* @param array $columns Columns |
|
* |
|
* @return array |
|
*/ |
|
function catalog_columns( $columns ) { |
|
$columns['in_catalog'] = __( 'In Catalog', 'pressbooks-aldine' ); |
|
return $columns; |
|
} |
|
|
|
/** |
|
* Catalog column |
|
* |
|
* @param string $column Column |
|
* @param int $blog_id Blog ID |
|
*/ |
|
function catalog_column( $column, $blog_id ) { |
|
|
|
if ( 'in_catalog' === $column && ! is_main_site( $blog_id ) ) { ?> |
|
<input class="in-catalog" type="checkbox" name="in_catalog" value="1" aria-label="<?php echo esc_attr_x( 'Show in Catalog', 'pressbooks-aldine' ); ?>" <?php checked( get_blog_option( $blog_id, \Aldine\Admin\BLOG_OPTION ), 1 ); ?> <?php |
|
if ( ! get_blog_option( $blog_id, 'blog_public' ) ) { |
|
|
|
?> |
|
disabled="disabled" title="<?php echo esc_attr_x( 'This book is private, so you can’t display it in your catalog.', 'pressbooks-aldine' ); ?>"<?php } ?> /> |
|
<?php |
|
} |
|
|
|
}
|
|
|