'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( '

%s

', $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

%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 ) {} }