JsTree – komponenta pro editaci stromových struktur
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- pepakriz
- Člen | 246
JsTree
Komponenta pro editaci stromových struktur typu id – parentId. Pro funkčnost je potřeba jQuery a pluginu JsTree.
Příklad použití
public function createComponentTree()
{
$tree = new JsTree();
$tree->table = "menu"; // jméno tabulky, s kterou bude pracovat
$tree->titleColumn = "text"; // jméno sloupce pro titulek
$tree->orderColumn = "order"; // jméno sloupce pro pořadí
$tree->numberingFrom = 1;
$tree->parentColumn = "depend";
$tree->where = array(array("`web`=%i", WEB)); // je možné navěsit podmínky
$tree->defaultValues = array("web"=>WEB);
$tree->enableContextmenu = true;
$tree->enableDragDrop = true;
$tree->showRoot = true;
$tree->enableCheckbox = true; // zobrazení checkboxů
$tree->checkboxColumn = "checked"; // sloupec, který ovlivňuje stav checkboxu
$tree->onAfterUpdate[] = callback($this, "updateUrl");
$tree->onAfterCreate[] = callback($this, "updateUrl");
$tree->onClick[] = callback($this, "handleClick");
$tree->openAll = true;
return $tree;
}
- Lopo
- Člen | 277
jedna rypava:
v com je to lepsie oproti EditTree ?
ak pominiem fakt ze EditTree je len nadstavba nad TreeView …
mam dojem ze toto ma o dost tazsiu integraciu do sablony – zbytocne moc veci sa riesi az v sablone, aj ked niekomu to moze takto vyhovovat ale osobne do sablony prenasam co najmenej veci a vacsinu sa snazim riesit v presenteri
- cubic
- Člen | 45
Opravil jsem si ukládání pořadí při přesunu, které v některých případech nefungovalo. Teď už to snad funguje, jak má. Jedná se o pár řádků v metodě handleSaveData(), kdyby se to někomu hodilo, tak:
...
if($this->enableDragDropOrder){
$old = dibi::query("SELECT * FROM `{$this->table}` WHERE `{$this->keyColumn}`=%i", $id)->fetch();
dibi::query("UPDATE `{$this->table}` SET `{$this->orderColumn}` = `{$this->orderColumn}`-1 WHERE `{$this->parentColumn}` = %i ", $old->{$this->parentColumn}, " AND `{$this->orderColumn}` > %i", $old->{$this->orderColumn});
dibi::query("UPDATE `{$this->table}` SET `{$this->orderColumn}` = `{$this->orderColumn}`+1 WHERE `{$this->parentColumn}` = %i ", $ref, " AND `{$this->orderColumn}` >= $i ", $position);
dibi::query("UPDATE `{$this->table}` SET `{$this->parentColumn}` = %i", $ref, ", `{$this->orderColumn}` = %i", ($position), " WHERE `{$this->keyColumn}` = %i", $id);
}
$this->onAfterMove($id);
...
Editoval cubic (12. 9. 2010 16:06)