Posted by Urme on August 31, 2011 at 8:53am
Skulle vilja att man kan filtrera listan av användare i Admin på vilket språk användaren har valt för "epost". Går det att lösa? Eller måste jag skapa en egen Vy i Views för att åstadkomma detta?
Skulle vilja att man kan filtrera listan av användare i Admin på vilket språk användaren har valt för "epost". Går det att lösa? Eller måste jag skapa en egen Vy i Views för att åstadkomma detta?
Comments
Har lyckats få fram nu att
Har lyckats få fram nu att jag har skapat en egen modul och lagt in denna nedanför, detta gör så att jag får fram en ny kolumn som visar språket som är inställt.
Någon som har ett förslag hur jag "hookar" in i filtreringsfunktionen?
<?php
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'user_admin_account') {
$filter = user_build_filter_query();
$header = array(
array(),
array('data' => t('Username'), 'field' => 'u.name'),
array('data' => t('Status'), 'field' => 'u.status'),
t('Roles'),
array('data' => t('Member for'), 'field' => 'u.created', 'sort' => 'desc'),
array('data' => t('Last access'), 'field' => 'u.access'),
array('data' => t('Language'), 'field' => 'u.language'), // <- new field
t('Operations')
);
if ($filter['join'] != "") {
$sql = 'SELECT DISTINCT u.uid, u.name, u.status, u.created, u.access, u.language FROM {users} u LEFT JOIN {users_roles} ur ON u.uid = ur.uid '. $filter['join'] .' WHERE u.uid != 0 '. $filter['where'];
$query_count = 'SELECT COUNT(DISTINCT u.uid) FROM {users} u LEFT JOIN {users_roles} ur ON u.uid = ur.uid '. $filter['join'] .' WHERE u.uid != 0 '. $filter['where'];
}
else {
$sql = 'SELECT u.uid, u.name, u.status, u.created, u.access, u.language FROM {users} u WHERE u.uid != 0 '. $filter['where'];
$query_count = 'SELECT COUNT(u.uid) FROM {users} u WHERE u.uid != 0 '. $filter['where'];
}
$sql .= tablesort_sql($header);
$result = pager_query($sql, 50, 0, $query_count, $filter['args']);
while ($account = db_fetch_object($result)) {
$form['language'][$account->uid] = array('#value' => $account->language);
}
// override the default theme function to render the extra field
$form['#theme'] = 'user_language_list';
}
}
function mymodule_theme() {
return array(
'user_language_list' => array(
'arguments' => array('form' => array()),
),
);
}
function theme_user_language_list($form) {
// Overview table:
$header = array(
theme('table_select_header_cell'),
array('data' => t('Username'), 'field' => 'u.name'),
array('data' => t('Status'), 'field' => 'u.status'),
t('Roles'),
array('data' => t('Member for'), 'field' => 'u.created', 'sort' => 'desc'),
array('data' => t('Last access'), 'field' => 'u.access'),
array('data' => t('Language'), 'field' => 'u.language'), // <- new field
t('Operations')
);
$output = drupal_render($form['options']);
if (isset($form['name']) && is_array($form['name'])) {
foreach (element_children($form['name']) as $key) {
//$form['language'][$key] = "Test";
if($form['language'][$key]["#value"] == "") {
$form['language'][$key]["#value"] = "n/a";
}
$rows[] = array(
drupal_render($form['accounts'][$key]),
drupal_render($form['name'][$key]),
drupal_render($form['status'][$key]),
drupal_render($form['roles'][$key]),
drupal_render($form['member_for'][$key]),
drupal_render($form['last_access'][$key]),
drupal_render($form['language'][$key]), // <- new field
drupal_render($form['operations'][$key])
);
}
}
else {
$rows[] = array(array('data' => t('No users available.'), 'colspan' => ' 8'));
}
$output .= theme('table', $header, $rows);
if ($form['pager']['#value']) {
$output .= drupal_render($form['pager']);
}
$output .= drupal_render($form);
return $output;
}
?>
Jag tror det enklaste är att
Jag tror det enklaste är att ersätta sidan med en vy av typen Views Bulk Operations.
//Pontus Nilsson, Digitalist
Så om jag gör en vy med
Så om jag gör en vy med adressen admin/user/user/list kommer den "skriva över"/ersätta originalet om jag går in på den adressen?
Känns dock som att man bör kunna "hooka" in i filtreringen på något sätt och bara lägga till en droplist med språk.
Exponerat filter
Du kan nog få till den där listningen med ett exponerat filter i Views - har du testat det?
/* Mikke Schirén, https://digitalist/ */