changeset 312:9340eb112ccc

Work on votekey admin.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 27 Nov 2013 03:11:32 +0200
parents 2f46b6254ff2
children 915a14409c7b
files admajax.php admin.php
diffstat 2 files changed, 79 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/admajax.php	Tue Nov 26 23:36:11 2013 +0200
+++ b/admajax.php	Wed Nov 27 03:11:32 2013 +0200
@@ -121,6 +121,44 @@
 }
 
 
+function stGetVoteKeyItemData($id, $item, $prefix)
+{
+  global $voteKeyMode, $voteKeyLen;
+
+  switch ($voteKeyMode)
+  {
+    case VOTE_FREELY:
+    case VOTE_ACTIVATE:
+      $str = sprintf(
+        "<span class=\"keyid\">%03d</span>&nbsp;:&nbsp;".
+        "<span class=\"keycode\">%s</span>",
+        $id,
+        str_repeat("&nbsp;", $voteKeyLen - strlen($item["key"])).$item["key"]);
+
+      if ($voteKeyMode == VOTE_ACTIVATE)
+      {
+        $str .= stGetFormCheckBoxInput("active", $id, "",
+          $item["active"], FALSE,
+          "class=\"keyactive\" onClick=\"voteKeyToggle(".$id.")\"", "xx")."\n";
+      }
+      
+      return $str;
+
+    case VOTE_ASSIGN:
+      return
+        "  <td class=\"name\">".chentities($item["name"])."</td>\n".
+        "  <td class=\"groups\">".chentities($item["groups"])."</td>\n".
+        "  <td class=\"vkeynum\">".
+          stGetFormTextInput(5, 5, "key_id", $id, $prefix, $item["key_id"]).
+          stGetFormButtonInput("assign", $id, $prefix, "Set", "voteKeyAssign(".$id.")").
+          "</td>\n".
+        "  <td class=\"vkey\">".chentities($item["key"])."</td>\n";
+
+      break;
+  }
+}
+
+
 function stGetSaveButton()
 {
   return "<input type=\"submit\" value=\" Save \" />\n";
@@ -153,6 +191,7 @@
 
 
 $voteKeyMode = stGetSetting("voteKeyMode");
+$voteKeyLen = stGetSetting("userKeyLength");
 $type = stGetRequestItem("type", "");
 switch (stGetRequestItem("action", ""))
 {
@@ -270,6 +309,24 @@
           stPrintAttendee($res, -1, FALSE, TRUE, stGetRequestItem("edit", FALSE));
         break;
 
+      case "votekey":
+        switch ($voteKeyMode)
+        {
+          case VOTE_FREELY:
+          case VOTE_ACTIVATE:
+            $sql = stPrepareSQL("SELECT * FROM votekeys WHERE id=%D", "id");
+            break;
+
+          case VOTE_ASSIGN:
+            $sql = stPrepareSQL("SELECT votekeys.key,attendees.* FROM attendees ".
+              "LEFT JOIN votekeys ON votekeys.id=attendees.key_id ".
+              "WHERE attendees.id=%D", "id");
+              break;
+        }
+        if (($res = stFetchSQL($sql)) !== FALSE)
+          echo stGetVoteKeyItemData($res["id"], $res, "vn");
+        break;
+
       case "voters":
         // Generate vote keys, if needed
         $numVKeys = stFetchSQLColumn("SELECT COUNT(*) FROM votekeys");
@@ -296,28 +353,13 @@
           case VOTE_ACTIVATE:
             $sql = "SELECT * FROM votekeys ORDER BY votekeys.id ASC";
 
-            $keyLen = stGetSetting("userKeyLength");
-            $index = 0;
             foreach (stExecSQL($sql) as $item)
             {
-              if ($index == 0)
-                echo "<tr>\n";
-              
               // This funny code is to ensure that the cells are of uniform width
-              printf("<div class=\"votekey\" id=\"vkey".$item["id"].
-                "\"><span class=\"keyid\">%03d</span>&nbsp;:&nbsp;".
-                "<span class=\"keycode\">%s</span>",
-                $item["id"],
-                str_repeat("&nbsp;", $keyLen - strlen($item["key"])).$item["key"]);
-              
-              if ($voteKeyMode == VOTE_ACTIVATE)
-              {
-                echo stGetFormCheckBoxInput("active", $item["id"], "",
-                  $item["active"], FALSE,
-                  "class=\"keyactive\" onClick=\"voteKeyToggle(".$item["id"].")\"", "xx")."\n";
-              }
-
-              echo "</div>";
+              echo
+                "<div class=\"votekey\" id=\"vkey".$item["id"]."\">".
+                stGetVoteKeyItemData($item["id"], $item, "vk").
+                "</div>";
             }
             break;
 
@@ -335,20 +377,12 @@
               "  <th class=\"vkey\">Votekey</th>\n".
               " </tr>\n";
 
-            $row = 0;
-            $prefix = "vk";
+            $index = 0;
             foreach (stExecSQL($sql) as $item)
             {
-              $vid = $item["id"];
               echo
-                " <tr>\n".
-                "  <td class=\"name\">".chentities($item["name"])."</td>\n".
-                "  <td class=\"groups\">".chentities($item["groups"])."</td>\n".
-                "  <td class=\"vkeynum\">".
-                  stGetFormTextInput(5, 5, "key_id", $vid, $prefix, $item["key_id"]).
-                  stGetFormButtonInput("assign", $vid, $prefix, "Set", "voteKeyAssign(".$vid.")").
-                  "</td>\n".
-                "  <td class=\"vkey\">".chentities($item["key"])."</td>\n".
+                " <tr class=\"rodd\" id=\"vkey".$item["id"]."\">\n".
+                stGetVoteKeyItemData($item["id"], $item, "vk").
                 " </tr>\n";
             }
 
@@ -683,9 +717,21 @@
         switch (stGetRequestItem("mode"))
         {
           case "assign":
+            // Check if already assigned to someone ..
+            $sql = stPrepareSQL("SELECT * FROM attendees WHERE key_id=%D", "key_id");
+            if (($attn = stFetchSQL($sql)) === false || $attn["id"] == $id)
+            {
+              // Assign ..
+              $sql = stPrepareSQL("UPDATE attendees SET key_id=%D WHERE id=%d",
+                "key_id", $id);
+              stExecSQLCond($sql, "Assigned key updated.");
+            }
+            else
+              stError("That key has already been assigned to another attendee!");
             break;
           
           case "active":
+            // Autobots activate!
             break;
         }
       }
--- a/admin.php	Tue Nov 26 23:36:11 2013 +0200
+++ b/admin.php	Wed Nov 27 03:11:32 2013 +0200
@@ -392,7 +392,7 @@
 
   var msuccess = function(txt)
   {
-    refreshItems("votekey"+id, "votekey", "&id="+id);
+    refreshItems("vkey"+id, "votekey", "&id="+id);
   }
 
   sendPOSTRequest("action=update&type=votekey&mode=active&id="+id+"&"+args, msuccess);
@@ -405,10 +405,10 @@
 
   var msuccess = function(txt)
   {
-    refreshItems("votekey"+id, "votekey", "&id="+id);
+    refreshItems("vkey"+id, "votekey", "&id="+id);
   }
 
-  sendPOSTRequest("action=update&type=votekey&mode=assign&id="+id+"&"+args);
+  sendPOSTRequest("action=update&type=votekey&mode=assign&id="+id+"&"+args, msuccess);
 }