'Strings translations', // do not translate (used for css class) 'ajax' => false )); $this->groups = &$groups; $this->group_selected = $group_selected; } /* * displays the item information in a column (default case) * * @since 0.6 * * @param array $item * @param string $column_name * @return string */ function column_default($item, $column_name) { return $item[$column_name]; } /* * displays the checkbox in first column * * @since 1.1 * * @param array $item * @return string */ function column_cb($item){ return sprintf( '', esc_attr($item['row']), empty($item['icl']) ? 'disabled' : '' // only strings registered with WPML API can be removed ); } /* * displays the string to translate * * @since 1.0 * * @param array $item * @return string */ function column_string($item) { return format_to_edit($item['string']); // don't interpret special chars for the string column } /* * displays the translations to edit * * @since 0.6 * * @param array $item * @return string */ function column_translations($item) { $out = ''; foreach($item['translations'] as $key => $translation) { $input_type = $item['multiline'] ? '' : ''; $out .= sprintf('
'.$input_type.'
'."\n", esc_attr($key), esc_attr($item['row']), esc_html($key), format_to_edit($translation)); // don't interpret special chars } return $out; } /* * gets the list of columns * * @since 0.6 * * @return array the list of column titles */ function get_columns() { return array( 'cb' => '', //checkbox 'context' => __('Group', 'polylang'), 'name' => __('Name', 'polylang'), 'string' => __('String', 'polylang'), 'translations' => __('Translations', 'polylang'), ); } /* * gets the list of sortable columns * * @since 0.6 * * @return array */ function get_sortable_columns() { return array( 'context' => array('context', false), 'name' => array('name', false), 'string' => array('string', false), ); } /* * prepares the list of items ofr displaying * * @since 0.6 * * @param array $data */ function prepare_items($data = array()) { $per_page = $this->get_items_per_page('pll_strings_per_page'); $this->_column_headers = array($this->get_columns(), array(), $this->get_sortable_columns()); function usort_reorder($a, $b){ $result = strcmp($a[$_REQUEST['orderby']], $b[$_REQUEST['orderby']]); // determine sort order return (empty($_REQUEST['order']) || $_REQUEST['order'] == 'asc') ? $result : -$result; // send final sort direction to usort }; if (!empty($_REQUEST['orderby'])) // no sort by default usort($data, 'usort_reorder'); $total_items = count($data); $this->items = array_slice($data, ($this->get_pagenum() - 1) * $per_page, $per_page); $this->set_pagination_args(array( 'total_items' => $total_items, 'per_page' => $per_page, 'total_pages' => ceil($total_items/$per_page) )); } /* * get the list of possible bulk actions * * @since 1.1 * * @return array */ function get_bulk_actions() { return array('delete' => __('Delete','polylang')); } /* * displays the dropdown list to filter strings per group * * @since 1.1 * * @param string $which only 'top' is supported */ function extra_tablenav($which) { if ('top' != $which) return; echo '
'; echo ''."\n"; submit_button( __( 'Filter' ), 'button', false, false, array( 'id' => 'post-query-submit' ) ); echo '
'; } }