changeset 438:48903fd966cd

Things are starting to work.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 05 Dec 2013 23:46:08 +0200
parents cefa64c8be63
children 1e3aaa83b9d7
files admajax.php admin.php showajax.php
diffstat 3 files changed, 129 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
--- a/admajax.php	Thu Dec 05 22:57:59 2013 +0200
+++ b/admajax.php	Thu Dec 05 23:46:08 2013 +0200
@@ -79,6 +79,19 @@
 }
 
 
+function stValidateRequestDisplaySlideData()
+{
+  return
+    stChkRequestItem("title", $fake,
+      array(CHK_GTEQ, VT_STR, 1, "Slide title too short."),
+      array(CHK_LTEQ, VT_STR, SET_LEN_DISP_SLIDE_TITLE, "Slide title too long.")
+    ) &&
+    stChkRequestItem("text", $fake,
+      array(CHK_LTEQ, VT_STR, SET_LEN_DISP_SLIDE_TEXT, "Slide content too long.")
+    );
+}
+
+
 function stGetCompoData($id, $item, $prefix)
 {
   return
@@ -283,6 +296,22 @@
 }
 
 
+function stGetInfoDisplaySlides($indent, $outer)
+{
+  $str = stGetOptionListStart("ctrlDisplaySlides", $indent, $outer);
+
+  $sql = "SELECT * FROM displaySlides ORDER BY id DESC";
+  if (($res = stExecSQL($sql)) !== false)
+  {
+    foreach ($res as $item)
+      $str .= $indent."  ".stGetOptionListItem($item["id"], FALSE, $item["title"]);
+  }
+
+  $str .= stGetOptionListEnd($indent, $outer);
+  return $str;
+}
+
+
 function stGetInfoRotationListEditFull($indent, $outer, $list_id)
 {
   $str =
@@ -338,6 +367,36 @@
 }
 
 
+function stGetInfoDisplaySlideEdit($indent, $outer, $slide_id)
+{
+  $prefix = "ctrlDisplaySlide";
+
+  $str =
+    ($outer ? "<div class=\"ctrlBox\" id=\"".$prefix."Edit\">\n" : "").
+    $indent."  <form method=\"post\" action=\"\" onsubmit=\"return updateDisplaySlide(".$slide_id.")\">\n".
+    $indent."    <div class=\"ctrlTitle\">Edit display slide</div>\n";
+
+  $sql = stPrepareSQL("SELECT * FROM displaySlides WHERE id=%d", $slide_id);
+  if (($slide = stFetchSQL($sql)) !== false)
+  {
+    $str .=
+      "    ".stGetFormTextInput(40, SET_LEN_DISP_SLIDE_TITLE, "", "Title", $prefix, $slide["title"])."<br />\n".
+      "    ".stGetFormTextArea(5, 40, "", "Text", $prefix, $slide["text"])."<br />\n";
+  }
+
+  $str .=
+    "    <div class=\"ctrlButtons\">\n".
+    "      ".stGetFormButtonInput("clearslide", "", "", "Clear", "this.form.reset()")."\n".
+    "      ".stGetFormButtonInput("cancelslide", "", "", "Cancel", "jsCloseAdminPopup()")."\n".
+    "      ".stGetFormSubmitInput("createslide", "Save slide")."\n".
+    "    </div>\n".
+    "  </form>\n".
+    ($outer ? "</div>\n" : "");
+  
+  return $str;
+}
+
+
 function stGetSaveButton()
 {
   return "<input type=\"submit\" value=\" Save \" />\n";
@@ -577,12 +636,12 @@
             stChkRequestItem("duration", $slide_dur, array(CHK_RANGE, VT_INT, array(1, 60), "Invalid duration range, should be 1-60 min.")))
         {
           $sql = stPrepareSQL("SELECT * FROM displaySlides WHERE id=%d", $slide_id);
-          if (($slide = stFetchSQL($slide_id)) !== false)
+          if (($slide = stFetchSQL($sql)) !== false)
           {
-            stSetDisplayVar("tempDuration", $slide_dur * 60);
+            stSetDisplayVar("tempDuration", $slide_dur);
             stSetDisplayVar("tempSlide", $slide["id"]);
             stSetDisplayVar("tempSlideSet", TRUE);
-            echo "Temporary slide '".chentities($slide["name"])."' set for <b>".$slide_dur."</b> minutes.";
+            echo "Temporary slide '".chentities($slide["title"])."' set for <b>".$slide_dur."</b> minutes.";
           }
           else
             stError("No such slide ID #".$slide_id);
@@ -599,6 +658,18 @@
         break;
 
       case "updateDisplaySlide":
+        if (stChkRequestItem("id", $slide_id, array(CHK_TYPE, VT_INT, "Invalid data.")) &&
+            stValidateRequestDisplaySlideData())
+        {
+          $sql = stPrepareSQLUpdate("displaySlides",
+            "WHERE id=".$slide_id,
+            array(
+              "title" => "S",
+              "text" => "S",
+            ));
+
+          stExecSQLCond($sql, "OK, slide updated.");
+        }
         break;
 
       case "deleteDisplaySlide":
@@ -691,6 +762,10 @@
         echo stGetInfoRotationLists("", FALSE);
         break;
     
+      case "infoDisplaySlides":
+        echo stGetInfoDisplaySlides("", FALSE);
+        break;
+
       case "infoRotationListEdit":
         if (stChkRequestItem("id", $list_id, array(CHK_TYPE, VT_INT, "Invalid data.")))
           echo stGetInfoRotationListEditFull("", TRUE, $list_id);
@@ -701,29 +776,9 @@
           echo stGetInfoRotationListEditData("", FALSE, $list_id);
         break;
 
-      case "infoEditSlide":
+      case "infoDisplaySlideEdit":
         if (stChkRequestItem("id", $slide_id, array(CHK_TYPE, VT_INT, "Invalid data.")))
-        {
-          $sql = stPrepareSQL("SELECT * FROM displaySlides WHERE id=%d", $slide_id);
-          if (($slide = stFetchSQL($sql)) !== false)
-          {
-            echo
-              "<div class=\"ctrlBox\" id=\"ctrlEditDisplaySlide\">\n".
-              "  <form method=\"post\" action=\"\" onsubmit=\"return updateDisplaySlide(this)\">\n".
-              "  <div class=\"ctrlTitle\">Edit display slide</div>\n".
-              "  ".stGetFormTextInput(40, SET_LEN_DISP_SLIDE_TITLE, "fdsaf", "", "", "")."<br />\n".
-              "  ".stGetFormTextArea(5, 40, "asdf", "", "", "")."<br />\n".
-              "  <div class=\"ctrlButtons\">\n".
-              "    ".stGetFormButtonInput("clearslide", "", "", "Clear", "this.form.reset()")."\n".
-              "    ".stGetFormButtonInput("cancelslide", "", "", "Cancel", "cancelEditDisplaySlide()")."\n".
-              "    ".stGetFormSubmitInput("createslide", "Save slide")."\n".
-              "  </div>\n".
-              "  </form>\n".
-              "</div>\n";
-          }
-          else
-            stError("No such slide!");
-        }
+          echo stGetInfoDisplaySlideEdit("", TRUE, $slide_id);
         break;
 
       case "infoMain":
@@ -757,17 +812,7 @@
         echo
           "<div class=\"ctrlBox\" id=\"ctrlListDisplaySlides\">\n".
           "<div class=\"ctrlTitle\">Display slides:</div>\n".
-          stGetOptionListStart("ctrlDisplaySlides", "  ", TRUE);
-
-        $sql = "SELECT * FROM displaySlides ORDER BY id DESC";
-        if (($res = stExecSQL($sql)) !== false)
-        {
-          foreach ($res as $item)
-            echo "    ".stGetOptionListItem($item["id"], FALSE, $item["title"]);
-        }
-
-        echo
-          stGetOptionListEnd("  ", TRUE).
+          stGetInfoDisplaySlides("  ", TRUE).
           "  <div class=\"ctrlButtons\">\n".
           "    ".stGetFormTextInput(3, 5, "", "ctrlTempSlideDuration", "", stGetDisplayVar("tempDuration"))." min\n".
           "    ".stGetFormButtonInput("setslide", "", "", "Set Temp", "activateTempSlide()")."\n".
--- a/admin.php	Thu Dec 05 22:57:59 2013 +0200
+++ b/admin.php	Thu Dec 05 23:46:08 2013 +0200
@@ -643,21 +643,65 @@
 }
 
 
-function saveEditDisplaySlide()
+function updateDisplaySlide(id)
 {
+  var vtitle = jsGetValue("ctrlDisplaySlideTitle", 1);
+  var vtext = jsGetValue("ctrlDisplaySlideText", 1);
+  jsSendPOSTRequest("action=ctrl&type=updateDisplaySlide&id="+id+"&title="+vtitle+"&text="+vtext, refreshDisplaySlideListSel);
   jsCloseAdminPopup();
+  return false;
 }
 
 
 function editDisplaySlide()
 {
-//  jsSendPOSTRequest("action=ctrl&type=...", jsOpenAdminPopup);
+  var id = jsGetValue("ctrlDisplaySlidesSel", 4);
+  if (id > 0)
+    jsSendPOSTRequest("action=get&type=infoDisplaySlideEdit&id="+id, jsOpenAdminPopup);
+  else
+    jsMessageBox("No display slide selected?");
+}
+
+
+function refreshDisplaySlideListSel()
+{
+  jsRefreshItems("ctrlDisplaySlidesSel", "infoDisplaySlides", "");
 }
 
 
 function newDisplaySlide()
 {
-//  jsSendPOSTRequest("action=ctrl&type=...", jsOpenAdminPopup);
+  var msuccess = function(txt)
+  {
+    refreshDisplaySlideListSel();
+    jsOpenAdminPopup(txt);
+  }
+
+  jsSendPOSTRequest("action=ctrl&type=newDisplaySlide", msuccess);
+}
+
+
+function deleteDisplaySlide()
+{
+  var msuccess = function(txt)
+  {
+    refreshDisplaySlideListSel();
+    refreshRotationListSel();
+  }
+
+  var mcb_ok = function(txt)
+  {
+    jsSendPOSTRequest("action=ctrl&type=deleteDisplaySlide&id="+id, msuccess);
+  }
+
+  var id = jsGetValue("ctrlDisplaySlidesSel", 4);
+  if (id > 0)
+  {
+    jsConfirmBox("Are you <b>sure</b> you want to delete slide list #"+id+"?",
+      mcb_ok, 0, 0);
+  }
+  else
+    jsMessageBox("No display slide selected?");
 }
 
 
--- a/showajax.php	Thu Dec 05 22:57:59 2013 +0200
+++ b/showajax.php	Thu Dec 05 23:46:08 2013 +0200
@@ -103,7 +103,7 @@
     stSetDisplayVar("tempSlideSet", FALSE);
     stSetDisplayVar("activeSlideMode", SMODE_ROTATE);
     stSetDisplayVar("activeSlide", stGetDisplayVar("tempSlide"));
-    stSetDisplayVar("activeSlideExpire", time() + stGetDisplayVar("tempDuration"));
+    stSetDisplayVar("activeSlideExpire", time() + (stGetDisplayVar("tempDuration") * 60));
     $updated = TRUE;
   }
 }