Support moving abteilung sort ids
[misc/hallinta-metro] / abteilung.php
index 1bcbb0e..caf3d11 100644 (file)
@@ -1,8 +1,30 @@
 <?php
 
+JavaScript::instance()->add("Hallinta.closeDialogAfterInsert = false;");
+JavaScript::instance()->add("Hallinta.closeDialogAfterSave = false;");
+
+$jscode = <<<EOC
+function move_callback(data)
+{
+    grid_update(Hallinta.grid);
+}
+
+function move_up(id)
+{
+    ajax_request('function', 'callback=up&id='+id, move_callback);
+}
+
+function move_down(id)
+{
+    ajax_request('function', 'callback=down&id='+id, move_callback);
+}
+EOC;
+JavaScript::instance()->add($jscode);
+
 $mask = array(
              'table' => 'metro_abteilung',
              'title' => 'Abteilungen',
+             'sort' => 1,
              'list' => array(
                              'id' => array(
                                            'name' => 'ID',
@@ -22,6 +44,20 @@ $mask = array(
                                            'filter' => 't',
                                            'width' => 200,
                                            ),
+                             'up' => array(
+                                           'name' => 'Up',
+                                           'width' => 25,
+                                           'specs' => array('ClassName' => 'aligncenter', 'canSort' => false),
+                                           'control' => "new Rico.TableColumn.link('javascript:move_up({0})')",
+                                           'sql' => "'<img src=\"masks/metro/up.png\" title=\"Move up Abteilung from this on\">'",
+                                           ),
+                             'down' => array(
+                                           'name' => 'Dn',
+                                           'width' => 25,
+                                           'specs' => array('ClassName' => 'aligncenter', 'canSort' => false),
+                                           'control' => "new Rico.TableColumn.link('javascript:move_down({0})')",
+                                           'sql' => "'<img src=\"masks/metro/down.png\" title=\"Move down Abteilung from this on\">'",
+                                           ),
                              ),
              'edit' => array(
                              'sort' => array(
@@ -43,6 +79,26 @@ $mask = array(
                                            'required' => true,
                                            ),
                              ),
+             'callbacks' => array(
+                                  'up' => cb_up,
+                                  'down' => cb_down,
+                               ),
              );
 
-?>
+function cb_up()
+{
+  global $db;
+
+  $sql = sprintf("UPDATE metro_abteilung SET sort = sort-1 WHERE sort >= (SELECT sort FROM metro_abteilung WHERE id = %d)",
+                $_POST['id']);
+  $db->query($sql);
+}
+
+function cb_down()
+{
+  global $db;
+
+  $sql = sprintf("UPDATE metro_abteilung SET sort = sort+1 WHERE sort >= (SELECT sort FROM metro_abteilung WHERE id = %d)",
+                $_POST['id']);
+  $db->query($sql);
+}