%PDF- %PDF-
Direktori : /var/www/knwn/wp-content/plugins/admin-columns-pro/classes/Table/ |
Current File : /var/www/knwn/wp-content/plugins/admin-columns-pro/classes/Table/StickyTableRow.php |
<?php namespace ACP\Table; use AC; use AC\ListScreenRepository\Storage; use AC\Type\ListScreenId; class StickyTableRow implements AC\Registrable { /** @var Storage */ private $storage; public function __construct( Storage $storage ) { $this->storage = $storage; } public function register() { add_action( 'ac/table', [ $this, 'register_screen_option' ] ); $this->ajax_handler()->register(); } private function ajax_handler() { $handler = new AC\Ajax\Handler(); $handler ->set_action( 'acp_update_sticky_row_option' ) ->set_callback( [ $this, 'update_sticky_table' ] ); return $handler; } public function preferences() { return new AC\Preferences\Site( 'show_sticky_table_row' ); } public function is_sticky( $key ) { return (bool) $this->preferences()->get( $key ); } public function update_sticky_table() { $this->ajax_handler()->verify_request(); $key = filter_input( INPUT_POST, 'list_screen' ); $list_screen = ListScreenId::is_valid_id( filter_input( INPUT_POST, 'layout' ) ) ? $this->storage->find( new ListScreenId( filter_input( INPUT_POST, 'layout' ) ) ) : null; if ( $list_screen ) { $key = $list_screen->get_storage_key(); } $this->preferences()->set( $key, 'true' === filter_input( INPUT_POST, 'value' ) ); exit; } /** * @param AC\Table\Screen $table */ public function register_screen_option( $table ) { $check_box = ( new AC\Form\Element\Checkbox( 'acp_sticky_table_row' ) ) ->set_options( [ 'yes' => __( 'Sticky Headers', 'codepress-admin-columns' ), ] ) ->set_value( $this->is_sticky( $table->get_list_screen()->get_storage_key() ) ? 'yes' : '' ); $table->register_screen_option( $check_box ); } }