'Settings', // Do not translate ( used for css class )
'ajax' => false,
)
);
}
/**
* Get the table classes for styling
*
* @since 1.8
*/
protected function get_table_classes() {
return array( 'wp-list-table', 'widefat', 'plugins', 'pll-settings' ); // get the style of the plugins list table + one specific class
}
/**
* Displays a single row
*
* @since 1.8
*
* @param object $item PLL_Settings_Module object
*/
public function single_row( $item ) {
// Classes to reuse css from the plugins list table
$classes = $item->is_active() ? 'active' : 'inactive';
if ( $message = $item->get_upgrade_message() ) {
$classes .= ' update';
}
// Display the columns
printf( '
', esc_attr( $item->module ), esc_attr( $classes ) );
$this->single_row_columns( $item );
echo '
';
// Display an upgrade message if there is any, reusing css from the plugins updates
if ( $message = $item->get_upgrade_message() ) {
printf(
'
%s |
',
sprintf( '', $message ) // phpcs:ignore WordPress.Security.EscapeOutput
);
}
// The settings if there are
// "inactive" class to reuse css from the plugins list table
if ( $form = $item->get_form() ) {
printf(
'
%s
%s
|
',
esc_attr( $item->module ),
esc_html( $item->title ),
$form, // phpcs:ignore
implode( $item->get_buttons() ) // phpcs:ignore
);
}
}
/**
* Generates the columns for a single row of the table
*
* @since 1.8
*
* @param object $item The current item
*/
protected function single_row_columns( $item ) {
$column_info = $this->get_column_info();
$columns = $column_info[0];
$primary = $column_info[3];
foreach ( array_keys( $columns ) as $column_name ) {
$classes = "$column_name column-$column_name";
if ( $primary === $column_name ) {
$classes .= ' column-primary';
}
if ( 'cb' == $column_name ) {
echo '';
echo $this->column_cb( $item ); // phpcs:ignore WordPress.Security.EscapeOutput
echo ' | ';
} else {
printf( '', esc_attr( $classes ) );
echo $this->column_default( $item, $column_name ); // phpcs:ignore WordPress.Security.EscapeOutput
echo ' | ';
}
}
}
/**
* Displays the item information in a column ( default case )
*
* @since 1.8
*
* @param object $item
* @param string $column_name
* @return string
*/
protected function column_default( $item, $column_name ) {
if ( 'plugin-title' == $column_name ) {
return sprintf( '%s', esc_html( $item->title ) ) . $this->row_actions( $item->get_action_links(), true /*always visible*/ );
}
return $item->$column_name;
}
/**
* Gets the list of columns
*
* @since 1.8
*
* @return array the list of column titles
*/
public function get_columns() {
return array(
'cb' => '', // For the 4px border inherited from plugins when the module is activated
'plugin-title' => esc_html__( 'Module', 'polylang' ), // plugin-title for styling
'description' => esc_html__( 'Description', 'polylang' ),
);
}
/**
* Gets the name of the primary column.
*
* @since 1.8
*
* @return string The name of the primary column.
*/
protected function get_primary_column_name() {
return 'plugin-title';
}
/**
* Prepares the list of items for displaying
*
* @since 1.8
*
* @param array $items
*/
public function prepare_items( $items = array() ) {
$this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns(), $this->get_primary_column_name() );
$this->items = $items;
}
/**
* Avoids displaying an empty tablenav
*
* @since 2.1
*
* @param string $which 'top' or 'bottom'
*/
protected function display_tablenav( $which ) {}
}