<?php
/**
 * Role Manager main view.
 *
 * @package    RankMath
 * @subpackage RankMath\Role_Manager
 */

use RankMath\KB;

defined( 'ABSPATH' ) || exit;

// Header.
rank_math()->admin->display_admin_header();
?>
<div class="wrap rank-math-wrap">
	<div class="rank-math-box container">

		<span class="wp-header-end"></span>

		<form class="cmb-form" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>" method="post">

			<header>
				<h2><?php echo esc_html( get_admin_page_title() ); ?></h2>
				<p>
					<?php
						/* translators: %s is a Learn More link to the documentation. */
						printf( esc_html__( 'Control which user has access to which options of Rank Math. %s', 'rank-math' ), '<a href="' . esc_url_raw( KB::get( 'role-manager', 'Role Manager Page' ) ) . '" target="_blank">' . esc_html__( 'Learn more', 'rank-math' ) . '</a>.' );
					?>
				</p>
			</header>

			<input type="hidden" name="action" value="rank_math_handle_capabilities">
			<?php
				wp_nonce_field( 'rank-math-handle-capabilities', 'security' );
				$cmb = cmb2_get_metabox( 'rank-math-role-manager', 'rank-math-role-manager' );
				$cmb->show_form();
			?>

			<footer class="form-footer rank-math-ui">
				<input type="submit" name="reset-capabilities" id="rank-math-reset-cmb" value="<?php esc_attr_e( 'Reset', 'rank-math' ); ?>" class="button button-secondary reset-options alignleft">
				<button type="submit" class="button button-primary"><?php esc_html_e( 'Update Capabilities', 'rank-math' ); ?></button>
			</footer>

		</form>

	</div>

</div>

<script>
	jQuery( function( $ ) {
		var toggle = '<p><button class="button button-small toggle-all-capabilities"><?php echo esc_js( __( 'Toggle All', 'rank-math' ) ); ?></button></p>',
			$table = $( '#cmb2-metabox-rank-math-role-manager' );

		$( '.cmb-th', $table ).each( function( index, elem ) {
			$( elem ).append( toggle );
		} );

		$( '.toggle-all-capabilities' ).on( 'click', function( e ) {
			e.preventDefault();

			var $checkboxes = $( this ).closest( '.cmb-row' ).find( 'input.cmb2-option:not(#administrator7)' ),
				should_check = ! $checkboxes.filter(':checked').length;

			$checkboxes.prop( 'checked', should_check );
		} );
	} );
</script>