Elemek listája az admin oldalon

nevergone képe

Sziasztok!

A címválasztás kissé suta lehet, de talán el tudom mondani, mit szeretnék.

Van egy modulom, amely több elemet kezelhet egyszerre, ezeket tartalmát a modul adminisztrációs oldalán lehetne szerkeszteni, vagy újat hozzáadni, esetleg törölni.
Egy olyan listát szeretnék megjeleníteni a modul admin felületén, mint pl. a taxonómia (admin/content/taxonomy), ahol az egyes elemek egymás alatt vannak felsorolva, mindegyik mellett ott van a szerkesztés link, amely az adott elem tulajdonágaira visz.
Néztem a Form API -t, de nem találtam benne azt, milyen módon lehetne ilyen listát kigenerálni (drag&drop nem lenne, az elemek sorrendje nem fontos), esetleg tudnátok egy kis segítséget adni az elindulásban?

nevergone képe

Természetesen Drupal 6-ról lenne szó.

0
0
Pasqualle képe

mit jelent az elem?
egy adatbazis tabla tartalmat akarod kilistazni es minden sorba beszurni egy szerkesztes linket?

0
0
nevergone képe

Igen, ez kimaradt a leírásból. Egy elem egy adatbázis-rekordnak felel meg, a lista maga az adatbázis-tábla tartalma, és minden sor végére szeretnék egy szerkesztés linket.

0
0
nevergone képe

Valami ötlet esetleg lista-ügyben? Példakód, leírás, bármi jöhet a témában. :)

0
0
Pasqualle képe

irtam neked egy gyors peldat a users tabla listazasara, szerkesztes es torles linkkel..

lista_pelda.module fajl:

function lista_pelda_menu() {
  $items['lista'] = array(
    'title' => 'Lista pelda',
    'description' => 'Pelda.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('listazas'),
    'access callback' => 'user_access',
    'access arguments' => array('access administration pages'),
    'type' => MENU_NORMAL_ITEM,
  );
  $items['lista/edit/%'] = array(
    'title' => 'Edit user',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('pelda_user_edit', 2),
    'access callback' => 'user_access',
    'access arguments' => array('access administration pages'),
    'type' => MENU_CALLBACK,
  );
  $items['lista/delete/%'] = array(
    'title' => 'Delete user',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('pelda_user_edit', 2),
    'access callback' => 'user_access',
    'access arguments' => array('access administration pages'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}
 
function lista_pelda_theme() {
  $items['listazas'] = array(
    'arguments' => array('form' => array()),
  );
  return $items;
}
 
function listazas() {
  $header = array(
    array('data' => t('User name'), 'field' => 'u.name', 'sort' => 'asc'),
    array('data' => t('Mail'), 'field' => 'u.mail'),
    array('data' => t('Operations'), 'colspan' => 2),
  );
 
  $form['header'] = array(
   '#type' => 'value',
   '#value' => $header,
  );
 
  $sql = 'SELECT * FROM {users} u WHERE u.uid > 0';
  $sql .= tablesort_sql($header);
 
  $result = pager_query($sql, 50, 0);
 
  $form['user']['#tree'] = TRUE;
 
  while ($user = db_fetch_object($result)) {
    $form['user'][$user->uid] = users_row($user);
  }
 
  $form['pager'] = array('#value' => theme('pager', NULL, 50, 0));
  $form['#theme'] = 'listazas';
 
  return $form;
}
 
function users_row($user) {
  $form['name'] = array(
    '#type' => 'markup',
    '#value' => $user->name,
  );
  $form['mail'] = array(
    '#type' => 'markup',
    '#value' => $user->mail,
  );
  $edit_link = (0) ? '' : l(t('Edit'), 'lista/edit/'. $user->uid);
  $form['edit_user'] = array(
    '#type' => 'markup',
    '#value' => $edit_link,
  );
  $delete_link = (0) ? '' : l(t('Delete'), 'lista/delete/'. $user->uid);
  $form['delete_user'] = array(
    '#type' => 'markup',
    '#value' => $delete_link,
  );
 
  return $form;
}
 
function theme_listazas($form) {
  $header = $form['header']['#value'];
  $rows = array();
 
  foreach (element_children($form['user']) as $key) {
     // Build the table row.
    $rows[] = array(
      array('data' => drupal_render($form['user'][$key]['name'])),
      array('data' => drupal_render($form['user'][$key]['mail'])),
      array('data' => drupal_render($form['user'][$key]['edit_user'])),
      array('data' => drupal_render($form['user'][$key]['delete_user'])),
    );
  }
 
  $output = theme('table', $header, $rows);
  if ($form['pager']['#value']) {
    $output .= drupal_render($form['pager']);
  }
  $output .= drupal_render($form);
 
  return $output;
}
 
function pelda_user_edit($uid) {
  drupal_set_message(t('Not yet implemented.'), 'error');
  $form['dummy'] = NULL;
  return $form;
}
 
function pelda_user_delete($uid) {
  drupal_set_message(t('Not yet implemented.'), 'error');
  $form['dummy'] = NULL;
  return $form;
}
0
0
nevergone képe

Kipróbáltam gyorsan, és teljesen jól működik!
Köszönöm a segítségedet, szerintem ez alapján már el tudok indulni. :)

0
0
nevergone képe

Egy kis typo -t találtam benne, de van patch hozzá. :)

--- lista_pelda.module.orig	2008-05-16 13:13:00.000000000 +0200
+++ lista_pelda.module	2008-05-16 14:23:08.000000000 +0200
@@ -20,7 +20,7 @@
   $items['lista/delete/%'] = array(
     'title' => 'Delete user',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('pelda_user_edit', 2),
+    'page arguments' => array('pelda_user_delete', 2),
     'access callback' => 'user_access',
     'access arguments' => array('access administration pages'),
     'type' => MENU_CALLBACK,
0
0