Table Drag

eMeLA képe

Próbálom megérteni a Table Drag működését. Eddig az alábbi kódot sikerült összehoznom (a Filter modul filtersorrend alapján)

function helyzet() {
 
 
    $form['weights'] = array('#tree' => TRUE);
 
    $form['names'][0]   = array('#value' => '1111111111111');
    $form['weights'][0] = array('#value' => 10);
 
    $form['names'][1]   = array('#value' => '222222222');
    $form['weights'][1] = array('#value' => 11);
 
    $form['names'][2]   = array('#value' => '3333333333');
    $form['weights'][2] = array('#value' => 12);    
 
 
    $form['submit'] = array('#type' => 'submit', '#value' => t('Mentés'));
 
 
    $header = array(t('Name'), t('Weight'));
    $rows = array();
 
  	$form['weights'][0]['#attributes']['class'] = 'filter-order-weight';
      $rows[] = array(
        'data' => array(drupal_render($form['names'][0]), drupal_render($form['weights'][0])),
        'class' => 'draggable',
      );
 
    $form['weights'][1]['#attributes']['class'] = 'filter-order-weight';
    $rows[] = array(
        'data' => array(drupal_render($form['names'][1]), drupal_render($form['weights'][1])),
        'class' => 'draggable',
      );
 
    $form['weights'][2]['#attributes']['class'] = 'filter-order-weight';
    $rows[] = array(
        'data' => array(drupal_render($form['names'][2]), drupal_render($form['weights'][2])),
        'class' => 'draggable',
      );
 
 
  $output = theme('table', $header, $rows, array('id' => 'filter-order'));
  $output .= drupal_render($form);
 
  drupal_add_tabledrag('filter-order', 'order', 'sibling', 'filter-order-weight', NULL, NULL, FALSE);
 
  return $output;
}

Meg is jelenik a rendezhető table, de a mozgatott cella "hozzáragad" a kurzorhoz, nem lehet lerakni. Kapok egy JS hibaüzenetet is: rowSettings is undefined
A Drupal.org-on nem találtam leírást, és a drupal_add_tabledrag() előtti leírás sem segített. Megfeneklettem.

Drupal verzió: 
Pasqualle képe

$form['weights'][0] = array('#value' => 10);

a weight oszlop mezoi nem jok, mivel a javascript ebbe az oszlopba irja bele a sor erteket.
es mivel nalad ez az oszlop markup, abba nem tud beleirni

szoval ha weight mezoket igy modositod akkor mar mukodik

$form['weights'][0] = array(
  '#type' => 'select',
  '#dafault_value' => 0,
  '#options' => array(0, 1, 2),
);

ereditileg a '#type' => 'weight' kellene hogy legyen, de a peldadban azon a drupal_render() szamomra egyelore erthetetlen oknal fogva nem mukodik, ezert valasztottam a 'select' tipust..

0
0
eMeLA képe

Aha.
Valójában az volt a hiba, hogy nem adtam meg a #type értékét-az elemnek.
Működik ez textfiled-el is.
Köszönöm a segítséget.

0
0

...mit tudok: http://web.termuves.hu

eMeLA képe

Esetleg azt tudod, hogyan lehet eltakarni ezt a választólistát?
Annyit sikerült kiderítenem, hogy ezt JS-tel teszi a Drupal, de arra nem jöttem még rá, hogy minek a hatására tudja mit kell eltakarnia.

0
0

...mit tudok: http://web.termuves.hu

Pasqualle képe

http://api.drupal.org/api/function/drupal_add_tabledrag/6

ha nem tevedek akkor a 4. parameter adja meg, hogy melyik a weight oszlop es a 7. parameter az, hogy eltuntesse e, ami nalad most FALSE-ra van allitva..

0
0
eMeLA képe

Köszönöm !
Mindig ott nem keresi az ember a dolgokat ahol vannak... :)

Bemásolom a működő példát:

    $form['weights'] = array('#tree' => TRUE);
 
    $form['names'][0]   = array('#value' => '1111111111111');
    $form['weights'][0] = array(
 		 '#type' => 'textfield',
  		 '#dafault_value' => 0,  		 
 		 '#attributes' => array('class' => 'kapcsolat_weight'), 		 
		);
 
    $form['names'][1]   = array('#value' => '222222222');
    $form['weights'][1] = array(
 		 '#type' => 'textfield',
 		 '#dafault_value' => 0,
 		 '#attributes' => array('class' => 'kapcsolat_weight'),
		);
 
    $form['names'][2]   = array('#value' => '3333333333');
    $form['weights'][2] = array(
 		 '#type' => 'textfield',
 		 '#dafault_value' => 0,
 		 '#attributes' => array('class' => 'kapcsolat_weight'),
		);    
 
    $form['submit'] = array('#type' => 'submit', '#value' => t('Mentés'));
 
 
    $header = array(t('Name'), t('Weight'));
    $rows = array();
 
      $rows[] = array(
        'data' => array(drupal_render($form['names'][0]), drupal_render($form['weights'][0])),
        'class' => 'draggable',
      );
 
    $rows[] = array(
        'data' => array(drupal_render($form['names'][1]), drupal_render($form['weights'][1])),
        'class' => 'draggable',
      );
 
    $rows[] = array(
        'data' => array(drupal_render($form['names'][2]), drupal_render($form['weights'][2])),
        'class' => 'draggable',
      );
 
  $output = theme('table', $header, $rows, array('id' => 'filter-order'));
  $output .= drupal_render($form);
 
  drupal_add_tabledrag('filter-order', 'order', 'sibling', 'kapcsolat_weight', null, null, TRUE);
0
0

...mit tudok: http://web.termuves.hu

nevergone képe

És ezt csak így simán bele a modulba? Milyen függvénynévvel és paraméterezéssel, vagy az mindegy?

0
0
eMeLA képe

Nem. Ez egy működő lecsupaszított példa, ebből ki lehet indulni.

Hogy modulba ezt hogy lehet megoldani, annak most fogok nekifutni...
Nekem ez arra kellett, hogy értsem mi hogyan történik, mivel a Drupal forráskódjából nem igazán tudtam kiokoskodni.

A forráskódban talált példákban két részre van bontva, egy valami_form() és egy theme_valami()-re....

0
0

...mit tudok: http://web.termuves.hu

morfie képe

A csoportba rendezést (subgroup) részét nem probáltátok még? Arra nincs valakinek példája?

0
0