début de travail (incomplet, ne pas considérer comme testable)
authorx2000habouzit <x2000habouzit>
Sun, 22 Feb 2004 21:04:23 +0000 (21:04 +0000)
committerx2000habouzit <x2000habouzit>
Sun, 22 Feb 2004 21:04:23 +0000 (21:04 +0000)
htdocs/trackers/admin.php [new file with mode: 0644]
htdocs/trackers/index.php [new file with mode: 0644]
templates/trackers/admin.tpl [new file with mode: 0644]
templates/trackers/edit.tpl [new file with mode: 0644]
templates/trackers/index.tpl [new file with mode: 0644]

diff --git a/htdocs/trackers/admin.php b/htdocs/trackers/admin.php
new file mode 100644 (file)
index 0000000..dbbb287
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+require('auto.prepend.inc.php');
+
+if(isset($_POST['action'])) {
+    switch($_POST['action']) {
+    // insertion ou création du tracker dans le formulaire
+        case 'update':
+            new_admin_page('trackers/admin.tpl');
+            $page->clear_cache('trackers/admin.tpl');
+            $page->clear_cache('trackers/index.tpl');
+            // TODO
+            break;
+    // édition des propriétés d'un tracker ou nouveau tracker
+        case 'edit':
+            new_admin_page('trackers/edit.tpl');
+            $tr_id = clean_request($_POST['tr_id']);
+            $page->assign('tracker',new Tracker($tr_id, $_SESSION['uid']));
+            $page->run();
+    // suppression d'un tracker
+        case 'del':
+            new_admin_page('trackers/admin.tpl');
+            $page->clear_cache('trackers/admin.tpl');
+            $page->clear_cache('trackers/index.tpl');
+            $tracker = new Tracker($_POST['tr_id'], $_SESSION['uid']);
+            $tracker -> destroy();
+            break;
+    // nettoyage BD
+        case 'clean':
+            new_admin_page('trackers/admin.tpl');
+            tracker_clean_bd();
+    }
+} else 
+    new_admin_page('trackers/edit.tpl');
+
+if(!$page->xorg_is_cached()) {
+    // we know when a new tracker is added so we can trust cached version
+    $sql = "SELECT tr_id,tr.texte AS tr_name,description,ml.short,ml.texte AS ml_name
+            FROM      trackers.trackers AS tr 
+            LEFT JOIN trackers.mail_lists AS ml USING(ml_id) 
+            WHERE tr.bits NOT LIKE '%perso%'
+            ORDER BY tr.texte");
+    $page->mysql_assign($sql, 'trackers');
+
+    $sql = "SELECT tr_id,tr.texte AS tr_name,description,ml.short,ml.texte AS ml_name
+            FROM       trackers.trackers AS tr 
+            LEFT JOIN trackers.mail_lists AS ml USING(ml_id) 
+            WHERE tr.bits LIKE '%perso%'
+            ORDER BY tr.texte");
+    $page->mysql_assign($sql, 'persos');
+}
+
+$page->run();
+?>
diff --git a/htdocs/trackers/index.php b/htdocs/trackers/index.php
new file mode 100644 (file)
index 0000000..ca9894c
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+require('auto.prepend.inc.php');
+new_skinned_page('trackers/index.tpl');
+if(has_perms())
+    header("Location: admin.php");
+
+if(!$page->xorg_is_cached()) {
+    // we know when a new tracker is added so we can trust cached version
+    $sql = "SELECT tr_id,tr.texte AS tr_name,description,ml.short,ml.texte AS ml_name
+            FROM      trackers.trackers AS tr 
+            LEFT JOIN trackers.mail_lists AS ml USING(ml_id) 
+            WHERE tr.bits NOT LIKE '%perso%' AND tr.perms!='admin'
+            ORDER BY tr.texte");
+    $page->mysql_assign($sql, 'trackers');
+}
+
+$page->run();
+?>
diff --git a/templates/trackers/admin.tpl b/templates/trackers/admin.tpl
new file mode 100644 (file)
index 0000000..d5e4c4f
--- /dev/null
@@ -0,0 +1,99 @@
+{* $Id: admin.tpl,v 1.1 2004-02-22 21:04:23 x2000habouzit Exp $ *}
+
+{literal}
+<script type="text/javascript">
+  <!--
+  function action( action, myid ) {
+    document.operations.action.value = action;
+    document.operations.tr_id.value = myid;
+    document.operations.submit();
+    return true;
+  }
+  
+  function del( myid ) {
+    if( confirm ("You are about to delete this tracker !\nDo you still want to proceed ?") ) {
+      document.operations.action.value = "del";
+      document.operations.tr_id.value = myid;
+      document.operations.submit();
+      return true;
+    }
+  }
+  -->
+</script>
+{/literal}
+
+<form id="operations" method="post" action="{$smarty.server.PHP_SELF}">
+  <input type="hidden" id="action" value="" />
+  <input type="hidden" id="tr_id" value="" />
+</form>
+
+<div class="rubrique">
+  Administration des trackers
+</div>
+<div class="ssrubrique">
+  Nettoyer
+</div>
+<p class="normal">
+  [<a href="javascript:action('clean',-1)">Nettoyer la table des mailing-lists</a>]
+</p>
+<div class="ssrubrique">
+  Ajouter un tracker
+</div>
+<p class="normal">
+  [<a href="javascript:action('edit',-1)">Ajouter un tracker</a>]
+</p>
+
+<br />  
+
+<div class="rubrique">
+  Liste des trackers
+</div>
+
+<br />
+
+<table class="bicol" summary="Liste des trackers">
+  <tr>
+    <th>Tracker</th>
+    <th>Description</th>
+    <th>Géré&nbsp;par</th>
+  </tr>
+{foreach item=t from=$persos}
+  <tr class="{cycle values="impair,pair"}">
+    <td><a href="{"tracker_show.php?tr_id=`$t.tr_id`"|url}">{$t.tr_name}</a></td>
+    <td>{$t.description}</td>
+    <td class="right"><a href="mailto:{$t.ml_name}">{$t.short}</a></td>
+    <td class="action">
+      <a href="javascript:action('edit',{$t.tr_id})">edit</a>
+      <a href="javascript:del({$t.tr_id})">del</a>
+  </tr>
+{/foreach}
+</table>
+
+<br />
+
+<div class="rubrique">
+  Liste des trackers persos
+</div>
+
+<br />
+
+<table class="bicol" summary="Liste des trackers">
+  <tr>
+    <th>Tracker</th>
+    <th>Description</th>
+    <th>Géré&nbsp;par</th>
+  </tr>
+{foreach item=t from=$trackers}
+  <tr class="{cycle values="impair,pair"}">
+    <td><a href="{"tracker_show.php?tr_id=`$t.tr_id`"|url}">{$t.tr_name}</a></td>
+    <td>{$t.description}</td>
+    <td class="right"><a href="mailto:{$t.ml_name}">{$t.short}</a></td>
+    <td class="action">
+      <a href="javascript:action('edit',{$t.tr_id})">edit</a>
+      <a href="javascript:del({$t.tr_id})">del</a>
+  </tr>
+{/foreach}
+</table>
+
+<br />
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/trackers/edit.tpl b/templates/trackers/edit.tpl
new file mode 100644 (file)
index 0000000..6715b5b
--- /dev/null
@@ -0,0 +1,142 @@
+{* $Id: edit.tpl,v 1.1 2004-02-22 21:04:23 x2000habouzit Exp $ *}
+
+{dynamic}
+<form action="{$smarty.server.PHP_SELF}" method="post">
+  <table class="bicol">
+    <tr>
+      <th colspan="2">Description</th>
+    </tr>
+    <tr class="impair">
+      <td class="titre"><strong>Nom du tracker</strong>
+      </td>
+      <td>
+        <input type="text" name="trf_name" size="40"
+          value="{$tracker->name|default:$smarty.post.trf_name}" />
+      </td>
+    </tr>
+    <tr class="impair">
+      <td class="titre"><strong>Description</strong>
+      </td>
+      <td>
+        <input type="text" name="trf_desc" size="40" 
+          value="{$tracker->desc|default:$smarty.post.trf_desc}" />
+      </td>
+    </tr>
+    <tr>
+      <th colspan="2">propriétés</th>
+    </tr>
+    <tr class="impair">
+      <td class="titre">
+        <strong>
+          Tracker non notifiant<br />
+          Tracker Perso
+        </strong>
+      </td>
+      <td>
+        <input type="checkbox" name="trf_no_mail" size="40"
+          {if $tracker->bits->hasflag("no_mail") || $smarty.post.trf_no_mail}checked="checked"{/if} />
+        cocher pour avoir un tracker silencieux<br />
+        <input type="checkbox" name="trf_perso" size="40"
+          {if $tracker->bits->hasflag("perso") || $smarty.post.trf_perso}checked="checked"{/if} />
+        cocher pour avoir un tracker perso
+      </td>
+    </tr>
+    <tr class="impair">
+      <td class="titre">
+        Droits
+      </td>
+      <td>
+        <select name="trf_perms">
+          <option value="admin"
+            {if $tracker->perms eq "admin" || $smarty.post.trf_perms eq "admin"}selected="selected"{/if}
+          >admin</option>
+          <option value="auth" 
+            {if $tracker->perms eq "auth" || $smarty.post.trf_perms eq "auth"}selected="selected"{/if}
+          >auth</option>
+          <option value="public"
+            {if $tracker->perms eq "public" || $smarty.post.trf_perms eq "public"}selected="selected"{/if}
+          >public</option>
+        </select>
+      </td>
+    </tr>
+    <tr class="impair">
+      <td class="titre">Mailing List
+      </td>
+      <td>
+        <select name="trf_ml_id">
+          {*
+          <?
+          $req=mysql_query("SELECT ml_id,short FROM trackers.mail_lists ORDER BY short");
+          while(list($id,$short) = mysql_fetch_row($req)) {
+          echo "<option value=\"$id\"".($ml_id==$id ? " selected=\"selected\"" : "").">$short</option>\n";
+          }
+          mysql_free_result($req);
+          ?>
+          *}
+        </select>
+      </td>
+    </tr>
+    <tr>
+      <th colspan="2">priorités</th>
+    </tr>
+    <tr class="impair">
+      <td class="titre"><strong>Priorité 5</strong></td>
+      <td>
+        <input type="text" name="trf_pris[5]" size="40"
+          value="{$tracker->pris[5]|default:$smarty.post.trf_pris[5]}" />
+      </td>
+    </tr>
+    <tr class="impair">
+      <td class="titre"><strong>Priorité 4</strong></td>
+      <td>
+        <input type="text" name="trf_pris[4]" size="40"
+          value="{$tracker->pris[4]|default:$smarty.post.trf_pris[4]}" />
+      </td>
+    </tr>
+    <tr class="impair">
+      <td class="titre"><strong>Priorité 3</strong></td>
+      <td>
+        <input type="text" name="trf_pris[3]" size="40"
+          value="{$tracker->pris[3]|default:$smarty.post.trf_pris[3]}" />
+      </td>
+    </tr>
+    <tr class="impair">
+      <td class="titre"><strong>Priorité 2</strong></td>
+      <td>
+        <input type="text" name="trf_pris[2]" size="40"
+          value="{$tracker->pris[2]|default:$smarty.post.trf_pris[2]}" />
+      </td>
+    </tr>
+    <tr class="impair">
+      <td class="titre"><strong>Priorité 1</strong></td>
+      <td>
+        <input type="text" name="trf_pris[1]" size="40"
+          value="{$tracker->pris[1]|default:$smarty.post.trf_pris[1]}" />
+      </td>
+    </tr>
+    <tr>
+      <th colspan="2">Création d'une ML (laisser vide pour ne pas l'utiliser)</th>
+    </tr>
+    <tr class="impair">
+      <td class="titre"><strong>Nom court</strong>
+      </td>
+      <td>
+        <input style="text" name="mlf_short" size="40" />
+      </td>
+    </tr>
+    <tr class="impair">
+      <td class="titre"><strong>Adresse (avec le @)</strong>
+      </td>
+      <td><input style="text" name="mlf_texte" size="40" />
+      </td>
+    </tr>
+  </table>
+  <br />
+  <input type="hidden" name="tr_id" value="{$tracker->tr_id|default:$smarty.post.tr_id}" />
+  <input type="hidden" name="action" value="update" />
+  <input type="submit" value="Valider" />
+</form>
+
+{/dynamic}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/trackers/index.tpl b/templates/trackers/index.tpl
new file mode 100644 (file)
index 0000000..7bdbf38
--- /dev/null
@@ -0,0 +1,22 @@
+{* $Id: index.tpl,v 1.1 2004-02-22 21:04:23 x2000habouzit Exp $ *}
+
+<div class="rubrique">
+  Liste des trackers publics
+</div>
+
+<table class="bicol" summary="Liste des trackers">
+  <tr>
+    <th>Tracker</th>
+    <th>Description</th>
+    <th>Géré&nbsp;par</th>
+  </tr>
+{foreach item=t from=$trackers}
+  <tr class="{cycle values="impair,pair"}">
+    <td><a href="{"tracker_show.php?tr_id=`$t.tr_id`"|url}">{$t.tr_name}</a></td>
+    <td>{$t.description}</td>
+    <td class="right"><a href="mailto:{$t.ml_name}">{$t.short}</a></td>
+  </tr>
+{/foreach}
+</table>
+
+{* vim:set et sw=2 sts=2 sws=2: *}