Git Repositories

First step to using Bootstrap.
[simple-git-host.git] / src / repo-list.php
1 <?php
2 require_once('include.inc.php');
3 if ($logged && isset($_POST['submit_repo'])) {
4   $fRepo = $_POST['new-repo'];
5   $fDesc = $_POST['new-desc'];
6   $res = gitrepoinfo('create', $fRepo, $fDesc);
7   if ($res === false) {
8     $errorMsg = "Le dépôt n'a pas pu être ajouté.";
9   } else {
10     if (isset($_POST['new-export']) && $_POST['new-export'] == 'on') {
11       gitrepoinfo('export', $fRepo, 'on');
12     }
13     # add current user as admin to the newly created repo.
14     gitrepoinfo('add-user', $fRepo, $_SESSION['username'], 'admin');
15   }
16 }
17 $pageTitle = $title;
18 require('header.inc.php');
19 ?>
20     <div id="repos">
21       <div class="invite">Les dépôts Git :</div>
22       <table>
23         <tr>
24           <th class="name">Nom</th>
25           <th class="address">Adresse</th>
26           <th class="member">Membre ?</th>
27           <th class="actions">Actions</th>
28         </tr>
29 <?php
30 $files = scandir($gitdir);
31 foreach ($files as $file) {
32   if ($file[0] == '.') continue;
33   if (is_dir("$gitdir/$file") && preg_match('/\.git$/', $file)) {
34     $proj = preg_replace('/\.git$/', '', $file);
35     $desc = htmlspecialchars(file_get_contents("$gitdir/$file/description"));
36     if (empty($desc) || preg_match('/^Unnamed repository;/', $desc)) {
37       $desc = $proj;
38     }
39     if ($logged) {
40       $right = 'no';
41       foreach (gitrepoinfo('show-users', $proj) as $userinfo) {
42         $info = explode(':', $userinfo);
43         if ($info[0] == $_SESSION['username']) {
44           $right = $info[1];
45           break;
46         }
47       }
48     } else {
49       $right = null;
50     }
51     switch ($right) {
52       case 'admin':
53         $member = 'Admin';
54         break;
55       case 'user':
56         $member = 'Oui';
57         break;
58       case 'readonly':
59         $member = 'Readonly';
60         break;
61       case 'no':
62         $member = 'Non';
63         break;
64       default:
65         $member = '<span title="Veuillez vous identifier"> ? </span>';
66         break;
67     }
68     $actions = "<a href=\"/{$gitwebroot}info/$proj\">Info</a>&nbsp;<a href=\"/{$gitwebroot}users/$proj\">Utilisateurs</a>&nbsp;<a href=\"/{$gitwebroot}histo/$proj\">Historique</a>";
69     if ($admin || $right == 'admin') {
70       $actions .= "&nbsp;<a class=\"edit\" href=\"/{$gitwebroot}edit/$proj\">Éditer</a>";
71       $actions .= "&nbsp;<a class=\"delete\" href=\"/{$gitwebroot}delete/$proj\" onclick=\"return confirm('Êtes-vous sûr de vouloir supprimer le dépôt \'$proj\' ?');\">Supprimer</a>";
72     }
73     $name = $proj;
74     $exportok = file_exists("$gitdir/$file/git-daemon-export-ok");
75     if (!empty($gitwebpath) && $exportok) {
76       $name .= "&nbsp;<a href=\"$gitwebpath/?p=$file\">⇒</a>";
77     }
78     echo "        <tr><td class=\"name\" title=\"$desc\">$name</td><td class=\"address\">";
79     echo "<div class=\"rw\">$gituser@$githost:$file</div>";
80     if ($exportok) {
81       echo "<div class=\"ro-git\">git://$githost/$file</div>";
82       $httpurl = sprintf("%s://%s/{$gitwebroot}readonly/%s", isset($_SERVER['HTTPS']) ? 'https' : 'http', $_SERVER['HTTP_HOST'], $file);
83       echo "<div class=\"ro-http\">$httpurl</div>";
84     }
85     echo "</td><td class=\"member\">$member</td><td class=\"actions\">$actions</td></tr>\n";
86   }
87 }
88 ?>
89       </table>
90     </div>
91 <?php if ($logged) { ?>
92     <div class="error"><?php echo $errorMsg; ?></div>
93     <form id="repo-add" action="" method="POST">
94       <fieldset>
95         <legend>Ajouter un dépôt</legend>
96         <table>
97           <tr>
98             <td>
99               <label for="new-repo">Nom du nouveau dépôt :</label>&nbsp;<input type="text" name="new-repo" id="new-repo" value=""/>
100               <br/><label for="new-desc">Description :</label>&nbsp;<input type="text" name="new-desc" id="new-desc" value=""/>
101               <?php if (!empty($gitwebpath)) { ?>
102               <br/><label for="new-export">Anonymous read-only access :</label>&nbsp;<input type="checkbox" name="new-export" id="new-export" value="on"/>
103               <?php } ?>
104             </td>
105             <td>
106               <input type="submit" name="submit_repo" value="Ajouter le dépôt"/>
107             </td>
108           </tr>
109         </table>
110       </fieldset>
111     </form>
112 <?php } ?>
113 <?php if ($admin) { ?>
114     <a href="/<?php echo $gitwebroot;?>manage_users">Gestion des utilisateurs</a>
115 <?php } ?>
116 <?php require('footer.inc.php'); ?>