Ismét egy hasznos kis Drupal modulra bukkantam, amit meg kell osztanom. Történt, nem is olyan régen, hogy bizonyos nodeok között egy sorrendet kellett meghatározni. Néhány oldalból álló, előre-hátra lapozható termékbemutató oldalra kell gondolni.
Szépen fel is vettem a CCK-ban egy új mezőt, oldalszám néven, amit egy legördülő menüből lehetett kiválasztani. A nodeok megjelenítése és a lapozás megvalsóítása a theme rétegbe került. Viszont szükség volt még valami adminisztrációs felületre, a node lista szerkesztéséhez. Persze a beépített szerkesztő oldalon, az oldalszám select input mező már adott egy szerkesztési lehetőséget, de így nagyon kényelmetlen lett volna a használata.
Arra gondoltam, a legjobb megoldás egy táblázat lenne, ahol a sorok mozgathatóak a drupal tabledrag.js használatával. Ilyen van pl. a menü és a blokk szerkesztésnél is. Első gondolatom az volt, hogy írok erre egy saját modult, nem egy nagy kalad, legrosszabb esetben is egy óra alatt megvan. Aztán eszembe jutott, hogy a Views modul tud táblázatokat megjeleníteni, de az nem a szerkeszthető verzió, hanem egyszerű táblázat. Elkezdtem nézelődni a Views *.tpl.php smink fájlok környékén, hátha van egy ügyes trükk, amivel rá lehetne venni a Viewst a tabledrag.js használatára.
Nem tudom, hogy végülis van-e ilyen trükk, de mint kiderült, szerencsére nincs rá szükség. Ugyanis, ez az igény másoknál is fellépett, és már megírták helyettünk. A DraggableViews nevű modulról beszélek, amely a Viewsnak egy kiegészítése. Egy új formázási stílust ad hozzá a Viewshoz, a meglévő táblázat, HTML lista és Grid stílus mellett megjelenik egy sorrendezhető táblázat. A nézet létrehozásánál a Draggable Table stílust kell kiválasztani, majd a stílus beállításoknál a sorrendezés alapját képező mezőt megadni. Ennyi az egész.
Íme egy demó, amit a Draggable Table modullal hoztam létre:
A demó egyelőre nem elérhető.
Elvileg tud hierarchikus és csoportos rendezéseket is, mint a beépített menü és a blokk szerkesztés. Én ezeket nem próbáltam, nekem csak egy egyszerű rendezhető lista kellett, amire tökéletesen meg is felelt.
A Drupal közösség ismét meglepett, hogy ilyen modul is van már. Úgy tűnik tényleg igaz a mondás, hogy a Drupalban a legnehezebb feladat, találni egy olyan funkciót amire még nincs kész modul :)