changeset 624:aad32d21091f

Some work on settings groups.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 01 Nov 2014 06:18:17 +0200
parents 8e6331d7870d
children b6e64ad83ece
files admajax.php admin.js admin.php
diffstat 3 files changed, 103 insertions(+), 47 deletions(-) [+]
line wrap: on
line diff
--- a/admajax.php	Sat Nov 01 05:46:38 2014 +0200
+++ b/admajax.php	Sat Nov 01 06:18:17 2014 +0200
@@ -1191,49 +1191,61 @@
           echo stGetCompoData($res["id"], $res, "co");
         break;
 
+      case "settingslist":
+        $index = 0;
+        foreach (stExecSQL("SELECT * FROM settings_groups") as $group)
+        {
+          if ($index++ > 0) echo ",";
+          echo "\"".$group["id"]."\":\"".chentities($group["name"])."\"";
+        }
+        break;
 
       case "settings":
-        $prefix = "st";
-
-        echo
-          "<h1>Site settings</h1>\n".
-          "<form method=\"post\" action=\"\" onsubmit=\"return jsUpdateSettings()\">\n".
-          "<table>\n";
 
-        foreach (stExecSQL("SELECT * FROM settings WHERE vtype<>".VT_TEXT." ORDER BY vtype ASC") as $item)
+        $group = stFetchSQL(stPrepareSQL("SELECT * FROM settings_groups WHERE id=%D", "id"));
+        if ($group !== FALSE)
         {
+          $prefix = "st";
           echo
-            " <tr>\n".
-            "  <td>";
-          $id = $item["key"];
-          switch ($item["vtype"])
+            "<h1>".chentities($group["description"])."</h1>\n".
+            "<form method=\"post\" action=\"\" onsubmit=\"return jsUpdateSettings(".$group["id"].")\">\n".
+            "<table>\n";
+
+          foreach (stExecSQL("SELECT * FROM settings WHERE vtype<>".VT_TEXT." AND vgroup=".$group["id"]." ORDER BY vtype ASC") as $item)
           {
-            case VT_INT:
-              echo stGetFormTextInput(10, 10, "", $id, $prefix, $item["vint"]);
-              break;
-            case VT_STR:
-              echo stGetFormTextInput(40, 128, "", $id, $prefix, $item["vstr"]);
-              break;
-            case VT_BOOL:
-              echo stGetFormCheckBoxInput("", $id, $prefix, $item["vint"], "");
-              break;
+            echo
+              " <tr>\n".
+              "  <td>";
+            $id = $item["key"];
+            switch ($item["vtype"])
+            {
+              case VT_INT:
+                echo stGetFormTextInput(10, 10, "", $id, $prefix, $item["vint"]);
+                break;
+              case VT_STR:
+                echo stGetFormTextInput(40, 128, "", $id, $prefix, $item["vstr"]);
+                break;
+              case VT_BOOL:
+                echo stGetFormCheckBoxInput("", $id, $prefix, $item["vint"], "");
+                break;
+            }
+            echo
+              "</td>\n".
+              "  <td><label for=\"".$prefix.$id."\">".chentities($item["sdesc"])."</label></td>\n".
+              " </tr>\n";
           }
-          echo
-            "</td>\n".
-            "  <td><label for=\"".$prefix.$id."\">".chentities($item["sdesc"])."</label></td>\n".
-            " </tr>\n";
-        }
-        echo "</table>\n".stGetSaveButton();
+          echo "</table>\n".stGetSaveButton();
 
-        foreach (stExecSQL("SELECT * FROM settings WHERE vtype=".VT_TEXT." ORDER BY key DESC") as $item)
-        {
-          echo
-            "<h2>".chentities($item["sdesc"])."</h2>\n".
-            stGetFormTextArea(10, 60, "", $item["key"], $prefix, $item["vtext"]).
-            "\n<br />\n".
-            stGetSaveButton();
+          foreach (stExecSQL("SELECT * FROM settings WHERE vtype=".VT_TEXT." AND vgroup=".$group["id"]." ORDER BY key DESC") as $item)
+          {
+            echo
+              "<h2>".chentities($item["sdesc"])."</h2>\n".
+              stGetFormTextArea(10, 60, "", $item["key"], $prefix, $item["vtext"]).
+              "\n<br />\n".
+              stGetSaveButton();
+          }
+          echo "</form>\n";
         }
-        echo "</form>\n";
         break;
       
       case "compolist":
--- a/admin.js	Sat Nov 01 05:46:38 2014 +0200
+++ b/admin.js	Sat Nov 01 06:18:17 2014 +0200
@@ -79,7 +79,7 @@
 {
   switch (id)
   {
-    case "Settings"  : jsRefreshItems("tabContCCSettings", "settings", ""); break;
+    case "Settings"  : refreshCCSettings(); break;
     case "News"      : jsRefreshItems("tabContCCNews", "news", ""); break;
     case "Attendees" : jsRefreshItems("tabContCCAttendees", "attendees", ""); activeAttendee = -1; break;
     case "Voting"    : jsRefreshItems("tabContCCVoting", "voters", ""); break;
@@ -90,6 +90,43 @@
 }
 
 
+function refreshCCSettings()
+{
+  var msuccess = function(txt)
+  {
+    var nitem = document.getElementById("tabContCCSettings");
+    if (nitem)
+    {
+      if (nitem.innerHTML == "")
+      {
+        nitem.innerHTML =
+          "<div id=\"tabHeadersCS\" class=\"tabHeadersSub\"></div>" +
+          "<div id=\"tabContentsCS\" class=\"tabContentsSub\"></div>";
+      }
+
+      try {
+        var tmp = JSON.parse("{"+ txt +"}");
+        registeredTabs["CS"] = tmp;
+        jsUpdateTabList("CS", "");
+        if (activeTabs["CS"])
+          jsSwitchActiveTab("CS", activeTabs["CS"]);
+      }
+      catch (err) {
+        jsMessageBox("JSON.parse("+ txt +") failure: "+ err);
+      }
+    }
+  }
+
+  jsSendPOSTRequest("action=get&type=settingslist", msuccess);
+}
+
+
+function refreshDispatchCS(id)
+{
+  jsRefreshItems("tabContCS"+ id, "settings", "&id="+ id);
+}
+
+
 function refreshCCAttendee(id)
 {
   jsRefreshItems("attendee"+ id, "attendee", "&id="+ id);
--- a/admin.php	Sat Nov 01 05:46:38 2014 +0200
+++ b/admin.php	Sat Nov 01 06:18:17 2014 +0200
@@ -13,29 +13,36 @@
 
 function stCreateSettingsData()
 {
-  $args = array();
+  echo
+  "\n".
+  "var jsSettingsArgs = [];\n";
 
-  if (($res = stExecSQL("SELECT * FROM settings")) !== FALSE)
+  foreach (stExecSQL("SELECT * FROM settings_groups") as $group)
   {
-    foreach ($res as $item)
+    $args = array();
+    if (($res = stExecSQL("SELECT * FROM settings")) !== FALSE)
     {
-      switch ($item["vtype"])
+      foreach ($res as $item)
       {
-        case VT_STR:
-        case VT_TEXT: $type = 1; break;
-        case VT_INT:  $type = 2; break;
-        case VT_BOOL: $type = 3; break;
+        switch ($item["vtype"])
+        {
+          case VT_STR:
+          case VT_TEXT: $type = 1; break;
+          case VT_INT:  $type = 2; break;
+          case VT_BOOL: $type = 3; break;
+        }
+        $args[] = "\"".$item["key"]."\":".$type;
       }
-      $args[] = "\"".$item["key"]."\":".$type;
     }
+
+    echo "jsSettingsArgs[".$group["id"]."] = jsMakePostArgs({".implode(",", $args)."}, \"st\", \"\");\n";
   }
 
   echo
   "\n".
-  "function jsUpdateSettings()\n".
+  "function jsUpdateSettings(id)\n".
   "{\n".
-  "  var args = jsMakePostArgs({".implode(",", $args)."}, \"st\", \"\");\n".
-  "  jsSendPOSTRequest(\"action=update&type=settings&\"+args);\n".
+  "  jsSendPOSTRequest(\"action=update&type=settings&\"+jsSettingsArgs[id]);\n".
   "  return false;\n".
   "}\n";
 }