From e91a68e884a532ead6b3bb0e9165aeaee4d33b87 Mon Sep 17 00:00:00 2001
From: Tim Repke <repketim@informatik.hu-berlin.de>
Date: Sun, 28 Sep 2014 23:49:27 +0100
Subject: [PATCH] verboselevel turned off | in admin panel - list - now popup
 for editing included, not working yet though

---
 registration-system/admin/commons_admin.php |  67 +++++++++-
 registration-system/admin/pages_list.php    | 133 ++++++++++++++++++--
 registration-system/config.inc.php          |   4 +-
 registration-system/view/admin_style.css    |  62 +++++++++
 4 files changed, 256 insertions(+), 10 deletions(-)

diff --git a/registration-system/admin/commons_admin.php b/registration-system/admin/commons_admin.php
index 7c8ed9f..8a81cd8 100644
--- a/registration-system/admin/commons_admin.php
+++ b/registration-system/admin/commons_admin.php
@@ -105,4 +105,69 @@ function comm_admin_verbose($level, $text){
         } else
             echo $text.'<br />';
     }
-}
\ No newline at end of file
+}
+
+
+/**
+ * Puts out Label and Selection box
+ *
+ * @param $name
+ * @param $id
+ * @param $values
+ * @param $selected
+ * @param $subtext
+ */
+function admin_show_formular_helper_sel($name, $id, $values, $selected, $subtext){
+    $r = '<label>'.$name.'
+        <span class="small">'.$subtext.'</span>
+        </label>
+        <select name="'.$id.'" id="'.$id.'">';
+    foreach($values as $val){
+        $r .= '<option value="'.$val.'"';
+        if($val == $selected) $r .= ' selected';
+        $r .= '>'.$val.'</option>';
+    }
+    $r .= '</select>';
+
+    return $r;
+}
+
+/**
+ * Puts out Label and two selection boxes side by side right below
+ *
+ * @param $name
+ * @param $id
+ * @param $values
+ * @param $selected
+ * @param $id2
+ * @param $values2
+ * @param $selected2
+ * @param $subtext
+ */
+function admin_show_formular_helper_sel2($name, $id, $values, $selected, $id2, $values2, $selected2, $subtext){
+    $r = '<label style="text-align:left">'.$name.'
+        <span class="small">'.$subtext.'</span>
+        </label><table><tr><td>
+        <select name="'.$id.'" id="'.$id.'" style="width:110px; text-align: center">';
+    foreach($values as $val){
+        $r .= '<option value="'.$val.'"';
+        if($val == $selected) $r .= ' selected';
+        $r .='>'.$val.'</option>';
+    }
+    $r .= '</select></td><td><select name="'.$id2.'" id="'.$id2.'">';
+    foreach($values2 as $val){
+        $r .= '<option value="'.$val.'"';
+        if($val == $selected2) $r .= ' selected';
+        $r .='>'.$val.'</option>';
+    }
+    $r .= '</select></td></tr></table>';
+    return $r;
+}
+
+function admin_show_formular_helper_input($name, $id, $value, $subtext){
+    $r = '<label>'.$name.'
+        <span class="small">'.$subtext.'</span>
+        </label>
+        <input type="text" name="'.$id.'" id="'.$id.'" value="'.$value.'" />';
+    return $r;
+}
diff --git a/registration-system/admin/pages_list.php b/registration-system/admin/pages_list.php
index 6bca6ed..9ccabbd 100644
--- a/registration-system/admin/pages_list.php
+++ b/registration-system/admin/pages_list.php
@@ -7,7 +7,7 @@
  */
 
 
-global $text, $headers, $admin_db, $config_current_fahrt_id, $ajax;
+global $text, $headers, $admin_db, $config_current_fahrt_id, $ajax, $config_studitypen, $config_essen, $config_reisearten;
 
 if(isset($_REQUEST['ajax'])){
 
@@ -15,10 +15,73 @@ if(isset($_REQUEST['ajax'])){
         $col = $_REQUEST['update'];
         $id  = $_REQUEST['hash'];
         $val = ($_REQUEST['nstate'] == 1) ? time() : NULL;
-
         $admin_db->update("bachelor", array($col=>$val), array("bachelor_id"=> $id));
     }
 
+
+    elseif(isset($_REQUEST['form'])){
+        $bid = $_REQUEST['hash'];
+
+        $ecols = [
+            "forname",
+            "sirname",
+            "mehl",
+            "pseudo",
+            "antyp",
+            "abtyp",
+            "anday",
+            "abday",
+            "comment",
+            "studityp"
+        ];
+        $rcols = [
+            "bachelor_id" => ["Hash",   function( $b ){ return $b; }],
+            "fahrt_id" => ["Fahrt",     function( $b ){ return "ID ".$b; }],
+            "anm_time" => ["Anmeldung", function( $b ){ return date("d.m.Y",$b); }],
+            "paid"     => ["Bezahlt",   function( $b ){ return ($b==0) ? "Nein" : date("d.m.Y", $b); }],
+            "repaid"   => ["Rückgezahlt", function($b){ return ($b==0) ? "Nein" : date("d.m.Y", $b); }],
+            "backstepped" => ["Zurückgetreten", function( $b ){ return ($b==0) ? "Nein" : date("d.m.Y", $b); }]
+        ];
+
+
+        $bachelor = $admin_db->get('bachelor', array_merge($ecols, array_keys($rcols)), array('bachelor_id'=>$bid));
+        $possible_dates = comm_get_possible_dates($admin_db, $bachelor['fahrt_id']);
+
+        foreach($rcols as $k=>$r){
+            $ajax .= "<b>".$r[0].":</b> ".$r[1]($bachelor[$k])."<br />";
+        }
+
+        $ajax .= '<br />
+        <div id="stylized" class="myform">
+        <form id="form" name="form" method="post" action="">';
+
+        $ajax .= admin_show_formular_helper_input("Vorname", "forname", $bachelor["forname"], "");
+        $ajax .= admin_show_formular_helper_input("Nachname","sirname",$bachelor["sirname"],"");
+        $ajax .= admin_show_formular_helper_input("Anzeigename","pseudo",$bachelor["pseudo"],"");
+        $ajax .= admin_show_formular_helper_input("E-Mail-Adresse","mehl",$bachelor["mehl"],"regelmäßig lesen!");
+        $ajax .= admin_show_formular_helper_sel("Du bist","studityp",$config_studitypen, $bachelor["studityp"],"");
+        $ajax .= admin_show_formular_helper_sel("Alter 18+?","virgin",array("Nein", "Ja"), (($bachelor["virgin"]==1) ? "Nein" : "Ja"), "Bist du älter als 18 Jahre?");
+        $ajax .= admin_show_formular_helper_sel("Essenswunsch","essen",$config_essen, $bachelor["essen"],"Info für den Koch.");
+        $ajax .= admin_show_formular_helper_sel2("Anreise","anday", array_slice($possible_dates,0, -1), $bachelor["anday"]
+            ,"antyp",$config_reisearten, $bachelor["antyp"],"");
+        $ajax .= admin_show_formular_helper_sel2("Abreise","abday", array_slice($possible_dates,1), $bachelor["abday"]
+            ,"abtyp",$config_reisearten,$bachelor["abtyp"],"");
+        $ajax .= '
+        <label>Anmerkung</label>
+        <textarea id="comment" name="comment" rows="3" cols="40">'.$bachelor["comment"].'</textarea>
+        <input type="checkbox" name="public" value="public" style="width:40px" '.(($bachelor['public']==1 ? " checked" : "")).'><span style="float:left">Anmeldung verstecken</span><br/>
+        <div style="clear:both"></div>
+
+        <button type="submit" name="submit" id="submit" value="submit">Ändern!</button>
+        <div class="spacer"></div>';
+
+
+        $ajax .= '</form>
+        </div>
+        ';
+    }
+
+
 } else {
 $headers =<<<END
     <link rel="stylesheet" type="text/css" href="../view/css/DataTables/css/jquery.dataTables.min.css" />
@@ -61,11 +124,32 @@ div.btn{
     top:100px;
     left: 200px;
     width: 700px;
-    height: 800px;
+    height: 700px;
     overflow: auto;
     border: 1px solid #000000;
+    background-color: beige;
+    padding: 20px 10px 10px 10px;
+}
+
+#editFormTopbar{
     background-color: #b0bed9;
+    height: 20px;
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    paddin: 0;
+}
+#editFormTopbar p{
+    position: absolute;
+    float: right;
+    top: 0;
+    padding: 0;
+    margin: 0;
+    right: 5px;
+    cursor: none;
 }
+
 </style>";
 
 $text .= "Meldeliste";
@@ -90,7 +174,7 @@ $columns = array(
 );
 
 $columnFunctions = array(
-    "Anmelde-ID" => function($person) { return $person["bachelor_id"]; }
+    "Anmelde-ID" => function($person) { return "<a href='#' class='edit_bachelor'>".$person["bachelor_id"]."</a>"; }
     //,"FahrtID" => function($person) { return $person["fahrt_id"]; }
 ,"Anmeldung" => function($person) { return date("d.m.Y", $person['anm_time']); },
     "Name" => function($person) { return "<a href='mailto:".$person["mehl"]."?subject=FS-Fahrt'>".$person["forname"]." ".$person["sirname"]." (".$person["pseudo"].")</a>"; },
@@ -131,7 +215,10 @@ foreach($people as $person) {
 $text .=<<<END
         </tbody>
     </table>
-    <div id="editForm"></div>
+    <div id="editForm">
+        <div id="editFormTopbar"><p>X</p></div>
+        <p></p>
+    </div>
     <script type='text/javascript'>
 
         jQuery.extend( jQuery.fn.dataTableExt.oSort, {
@@ -159,6 +246,7 @@ $text .=<<<END
                 "iDisplayLength": 70,
                 "columnDefs": [
                     { type: 'link', targets: 2 },
+                    { type: 'link', targets: 0 },
                     { type: 'prb', targets: 9 }
                 ],
                 "aoColumnDefs": [
@@ -173,7 +261,7 @@ $text .=<<<END
                                 var txt = data[9].split(",");
                                 for(var i = 0; i < txt.length; i++){
                                     var tmp = (txt[i]==0) ? 0 : 1;
-                                    btns += "<div onclick=\"btnclick(this, '"+classes[i]+"','"+row[0]+"',"+tmp+");\" class='btn btn-"+classes[i]+"-"+tmp+"'>&nbsp;</div>";
+                                    btns += "<div onclick=\"btnclick(this, '"+classes[i]+"','"+data[0].match(/<a [^>]+>([^<]+)<\/a>/)[1]+"',"+tmp+");\" class='btn btn-"+classes[i]+"-"+tmp+"'>&nbsp;</div>";
                                 }
 
                                 // Store the computed display for speed
@@ -190,6 +278,37 @@ $text .=<<<END
                 ],
                 "order": [[ 2, "asc" ]]
             });
+
+            $(".edit_bachelor").click( function(){
+                var bid = $(this).text();
+                $.get( "?page=list&ajax=ajax&form=form&hash="+bid, function( data ) {
+                    $("#editForm > p").html(data);
+                });
+
+                $("#editForm").show();
+            });
+
+            $("#editFormTopbar > p").click( function(){
+                $(this).parent().parent().hide();
+            });
+
+            $(".js-ajax-php-json").submit(function(){
+                var data = $(this).serialize();
+                $.ajax({
+                    type: "POST",
+                    dataType: "json",
+                    url: "response.php",
+                    data: data,
+                    success: function(data) {
+                        $(".the-return").html(
+                            "Favorite beverage: " + data["favorite_beverage"] + "<br />Favorite restaurant: " + data["favorite_restaurant"] + "<br />Gender: " + data["gender"] + "<br />JSON: " + data["json"]
+                        );
+
+                        // alert("Form submitted successfully.Returned json: " + data["json"]);
+                    }
+                });
+                return false;
+            });
         });
 
         function btnclick(that, type, hash, state){
@@ -202,4 +321,4 @@ $text .=<<<END
         }
     </script>
 END;
-}
\ No newline at end of file
+}
diff --git a/registration-system/config.inc.php b/registration-system/config.inc.php
index 2b60471..0b48886 100644
--- a/registration-system/config.inc.php
+++ b/registration-system/config.inc.php
@@ -10,8 +10,8 @@ mb_regex_encoding('UTF-8');
 ob_start('mb_output_handler');
 date_default_timezone_set("Europe/Berlin");
 
-$config_verbose_level = 3; // 0 = nothing, 1 = important, 2 = somewhat important, 3 = detailed verbose, 4 = with sql
-$config_admin_verbose_level = 3;
+$config_verbose_level = 0; // 0 = nothing, 1 = important, 2 = somewhat important, 3 = detailed verbose, 4 = with sql
+$config_admin_verbose_level = 0;
 
 $config_db = array(
     "name" => "fsfahrt",
diff --git a/registration-system/view/admin_style.css b/registration-system/view/admin_style.css
index 1d70ba2..4c38034 100644
--- a/registration-system/view/admin_style.css
+++ b/registration-system/view/admin_style.css
@@ -86,4 +86,66 @@ form table tr td{
 .cost-table tfoot td{
     border-bottom: 1px solid #0c0c0c;
     border-top: 1px dashed #0c0c0c;
+}
+
+/* ----------- My Form ----------- */
+.myform{
+    margin:0 auto;
+    width:400px;
+    padding:14px;
+}
+
+/* ----------- stylized ----------- */
+#stylized{
+    border:solid 2px #b7ddf2;
+    background:#ebf4fb;
+}
+#stylized h1 {
+    font-size:1.5em;
+
+    color:black;
+    font-weight:bold;
+    margin-bottom:8px;
+}
+#stylized p{
+    font-size:11px;
+    color:#666666;
+    margin-bottom:20px;
+    border-bottom:solid 1px #b7ddf2;
+    padding-bottom:10px;
+}
+#stylized label{
+    display:block;
+    font-weight:bold;
+    text-align:right;
+    width:140px;
+    float:left;
+}
+#stylized .small{
+    color:#666666;
+    display:block;
+    font-size:11px;
+    font-weight:normal;
+    text-align:right;
+    width:140px;
+}
+#stylized input, #stylized select, #stylized textarea{
+    float:left;
+    font-size:12px;
+    padding:4px 2px;
+    border:solid 1px #aacfe4;
+    width:200px;
+    margin:2px 0 20px 10px;
+}
+#stylized button{
+    clear:both;
+    margin-left:150px;
+    width:125px;
+    height:31px;
+    background:#666666 url(img/button.png) no-repeat;
+    text-align:center;
+    line-height:31px;
+    color:#FFFFFF;
+    font-size:11px;
+    font-weight:bold;
 }
\ No newline at end of file
-- 
GitLab