working on the user/group administration page.
[gwvp.git] / gwvplib / gwvprepoadmin.php
index 49073c0..9ead6d3 100644 (file)
@@ -6,9 +6,30 @@ $MENU_ITEMS["20repos"]["link"] = "$BASE_URL/admin/repos";
 
 function gwvp_RepoAdminCallMe()
 {
+       
+       error_log("in repoadmin callme");
        if(isset($_REQUEST["q"])) {
                $query = $_REQUEST["q"];
-               if($query == "admin/repos") return "gwvp_RepoAdminPage";
+               $qspl = explode("/", $query);
+               if(isset($qspl[0]) && isset($qspl[1])) {
+                       if($qspl[0] == "admin" && $qspl[1] == "repos") {
+                               error_log("i got here, where next?");
+                               if(isset($qspl[2])) {
+                                       switch($qspl[2]) {
+                                               case "create":
+                                                       return "gwvp_CreateRepoPage";
+                                                       break;
+                                               case "docreate":
+                                                       return "gwvp_DoCreateRepoPage";
+                                                       break;
+                                               default:
+                                                       return "gwvp_RepoAdminPage";
+                                       }                                       
+                               } else {
+                                       return "gwvp_RepoAdminPage";
+                               }
+                       }
+               } 
                else return false;
        }
        
@@ -20,10 +41,98 @@ function gwvp_RepoAdminPage()
        gwvp_goMainPage("gwvp_RepoAdminPageBody");
 }
 
+function gwvp_CreateRepoPage()
+{
+       gwvp_goMainPage("gwvp_CreateRepoPageBody");
+}
+
+function gwvp_DoCreateRepoPage()
+{
+       global $BASE_URL;
+       
+       $reponame = $_REQUEST["reponame"];
+       $repodesc = $_REQUEST["repodesc"];
+       
+       // TODO: this code is bollocks, need to redo
+       if(gwvp_repoExists($reponame)) {
+               gwvp_SendMessage("error", "a repository with the name <b>\"$reponame\"</b> already exists");
+               //header("Location: $BASE_URL/admin/repos/create?reponameobv=$reponame&repodescobv=$repodesc");
+       } else if($_FILES["bundlefile"]["size"] > 0) { //               if(isset($_FILES["bundlefile"]["size"]))  <--- this needs to happen here TODO
+               error_log("bundle file tmpname is ".$_FILES["bundlefile"]["tmp_name"]);
+               gwvp_createGitRepo($reponame, $_FILES["bundlefile"]["tmp_name"]);
+               gwvp_SendMessage("info", "Repo, $reponame, created");
+       } else if(gwvp_createGitRepo($reponame)) {
+               gwvp_SendMessage("info", "Repo, $reponame, created");
+       }
+       header("Location: $BASE_URL/admin/repos");
+       
+       
+}
+
+function gwvp_CreateRepoPageBody()
+{
+       global $BASE_URL, $repo_base;
+       
+       $reponameobv = "";
+       $repodescobv = "";
+       
+       if(isset($_REQUEST["reponameobv"])) $reponameobv = $_REQUEST["reponameobv"];
+       if(isset($_REQUEST["repodescobv"])) $repodescobv = $_REQUEST["repodescobv"];
+       
+       echo "<h2>Create a Repo</h2>";
+       echo "<form method=\"post\" enctype=\"multipart/form-data\" action=\"$BASE_URL/admin/repos/docreate\">";
+       echo "<table>";
+       echo "<tr><td>Repository Name</td><td bgcolor=\"#eeeeee\"><input type=\"text\" name=\"reponame\" value=\"$reponameobv\"></td></tr>";
+       echo "<tr><td>Repository Description</td><td bgcolor=\"#eeeeee\"><input type=\"text\" name=\"repodesc\" value=\"$repodescobv\"></td></tr>";
+       echo "<tr><td>Repository Bundle</td><td bgcolor=\"#eeeeee\"><input type=\"file\" name=\"bundlefile\"></td><td><i>Create a bundle for pro-creating the git repository (export your git bundle with \"git bundle create /tmp/filename --branches\")</i></td></tr>";
+       
+       echo "<tr><td>Default Permisison Set</td><td bgcolor=\"#eeeeee\">";
+       
+       echo "<table>";
+       echo "<tr><td><input type=\"checkbox\" name=\"permsall\" checked></td><td>Anyone Can Read, Only you can write</td></tr>";
+       echo "<tr><td><input type=\"checkbox\" name=\"permsmeonly\"></td><td>Anyone can see the repository exists, but only you can read or write to it</td></tr>";
+       echo "<tr><td><input type=\"checkbox\" name=\"permsinvisible\"></td><td>Repository only visible to you</td></tr>";
+       echo "</table>";
+       
+       
+       echo "</td><td><i>Permissions can be changed in repository management later</i></td></tr>";
+       
+       echo "</table>";
+       
+       
+       
+       
+       
+       echo "<input type=\"submit\" name=\"create\" value=\"Create\"><br>";
+       echo "</form>";
+}
 
 function gwvp_RepoAdminPageBody()
 {
-       echo "I am a repo admin page body";
+       // first we need a menu
+       global $BASE_URL;
+       
+       echo "<h2>Repo Management</h2>";
+       echo "<a href=\"$BASE_URL/admin/repos/create\">Create a Repo</a><br>";
+       
+       
+       // next we need a repo list - with perms checking - ug
+       // i must also remember that the home page will also contain a list of repos and that this page is solely for maintance
+       // and creation of repos - so i dont need to get over-worked about the info stored on this page outside of those activities
+       $rlist = gwvp_GetRepoList();
+       echo "<table border=\"1\"><tr><th>Repo Name</th><th>Repo Description</th><th>Repo Owner</th><th>Control</th></tr>";
+       foreach($rlist as $u_res) {
+               $rid = $u_res["id"];
+               $rname = $u_res["name"];
+               $rdesc = $u_res["description"];
+               $rown = gwvp_getUserName($u_res["owner"]);
+               echo "<tr><td>$rname</td><td>$rdesc</td><td>$rown</td><td><a href=\"$BASE_URL/admin/repos/modify/$rid\">Modify</a></td></tr>";
+       }
+       echo "</table>";
+       
+       return;
 }
 
+
+
 ?>
\ No newline at end of file