Provide day of the week
[infodrom.org/service.infodrom.org] / src / InfoCon / stempel / status.wml
index 822d46e..76b9ca3 100644 (file)
@@ -3,27 +3,12 @@
 
 <future>
 <page func=InfoCon title="Stempeluhr">
+<script type="text/javascript" src="<root_prefix>jquery.editable.js"></script>
 
 <?
   session_name('STEMPEL');
   session_start();
 
-  function update_db()
-  {
-    global $dbh;
-
-    $count = 0;
-    for ($idx=0; $idx < $_POST["fields"]; $idx++) {
-      if (isset($_POST["oid_".$idx])) {
-        $query = sprintf('UPDATE stempel SET status=%d WHERE oid=%d',
-                $_POST["status"], $_POST["oid_".$idx]);
-       $count++;
-       $sth = pg_exec ($dbh, $query);
-      }
-    }
-    return sprintf("<br>%d records updated.", $count);
-  }
-
   $stati = false;
   function display_tables()
   {
@@ -32,6 +17,7 @@
     global $status;
     global $dbh;
     global $stati;
+    $wdays = array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');
 
     $name = load_customers();
 
@@ -39,7 +25,7 @@
   <form action="status.php" method="POST">
   <table class="smallfont border" id="table_%d" width="100%%" cellpadding=0 cellspacing=0>
   <thead>
-  <tr class="head" onclick="edit_task_finish(this)">
+  <tr class="head">
     <th width=15%%>Datum</th>
     <th width=5%%>Dauer</th>
     <th width=5%%>St.</th>
                  '</form>';
 
     $table_row = '<tr class="t%d" status="%d"><td>%s</td><td align="center" onclick="toggle_checkbox(%d,this)">%s</td>' .
-      '<td align="center" onclick="toggle_checkbox(%d,this)">%s</td><td onclick="edit_task(this)">%s</td></tr>';
-    $table_sum = '</tbody><tfoot><tr class="t%d"><td>&nbsp;</td><td align="center">%s</td><td>&nbsp;</td><td>Summe</td></tr></tfoot>';
+      '<td align="center" onclick="toggle_checkbox(%d,this)">%s</td><td><span class="edit" route="Stempel/EditTask" item_id="%d">%s</span></td></tr>';
+    $table_sum = '</tbody><tfoot><tr class="t%d" onclick="edit_task_finish(this)">' .
+       '<td>&nbsp;</td><td align="center">%s</td><td>&nbsp;</td><td>Summe</td></tr></tfoot>';
 
-    $query = "SELECT stempel.oid,stempel.status,start,customer,time,task,kurz FROM stempel JOIN stempel_status ON (stempel.status = stempel_status.id) WHERE time IS NOT NULL ";
+    $query = "SELECT stempel.oid,stempel.id,stempel.status,start,customer,time,task,kurz FROM stempel JOIN stempel_status ON (stempel.status = stempel_status.id) WHERE time IS NOT NULL ";
     if (isset($month) && strlen($month))
       $query .= "AND cast(start AS TEXT) LIKE '".$month."-%' ";
     if (isset($cust) && strlen($cust))
       $sum += $row['time'];
       $d = explode(' ', $row['start']);
 
-      $check = sprintf('<input type="checkbox" class="checkbox" name="oid_%d" value="%d" onclick="add_sum(%d,this)">',
+      $check = sprintf('<input type="checkbox" class="checkbox" name="id_%d" value="%d" onclick="add_sum(%d,this)">',
                       $fieldnr++,
-                      $row['oid'],
+                      $row['id'],
                       $form);
-      $date = sprintf('<span onclick="toggle_checkbox(%d,this)">%s</span>', $form, $d[0]);
-      printf($table_row, $color, $row['status'], $check.$date, $form, min2hour($row['time']), $form, $row['kurz'], htmlspecialchars($row['task'], ENT_COMPAT | ENT_HTML401, 'ISO-8859-1'));
+      $dt = new Datetime($d[0]);
+      $date = sprintf('<span onclick="toggle_checkbox(%d,this)">%s, %s</span>', $form, $wdays[$dt->format('w')], $d[0]);
+      printf($table_row, $color, $row['status'], $check.$date, $form, min2hour($row['time']), $form, $row['kurz'],
+            $row['id'],
+            htmlspecialchars($row['task'], ENT_COMPAT | ENT_HTML401, 'ISO-8859-1'));
       $color = !$color;
     }
     if (pg_num_rows($sth) > 0) {
@@ -252,18 +242,18 @@ function add_sum(form, checkbox)
 
 var task_parent = null;
 var task_title = '';
-var task_oid = 0;
+var task_id = 0;
 function edit_task(obj)
 {
-    if (task_oid) {
-       if (task_oid != obj.parentNode.children[0].children[0].value)
+    if (task_id) {
+       if (task_id != obj.parentNode.children[0].children[0].value)
            edit_task_save();
     }
 
-    if (!task_oid) {
+    if (!task_id) {
        task_parent = obj;
        task_title = obj.innerHTML;
-       task_oid = obj.parentNode.children[0].children[0].value;
+       task_id = obj.parentNode.children[0].children[0].value;
 
        var input = $('<input>');
        input.val(obj.innerHTML.replace('&gt;', '>').replace('&lt;', '<').replace('&amp;', '&'));
@@ -279,24 +269,22 @@ function edit_task_save()
     if (!task_parent) return;
 
     if (task_parent.children[0].value != task_title)
-       $.invoke('Sales/Text', {id: task_oid, text: task_parent.children[0].value});
+       $.invoke('Stempel/Task', {id: task_id, content: task_parent.children[0].value});
 
     task_parent.innerHTML = task_parent.children[0].value;
     task_parent = null;
     task_title = '';
-    task_oid = 0;
+    task_id = 0;
 }
 
 function edit_task_finish(obj)
 {
-    if (task_oid)
+    if (task_id)
        edit_task_save();
 }
 
 function toggle_checkbox(form, obj)
 {
-    edit_task_finish(obj);
-
     var row = $(obj).parents('tr:first');
     var checkbox = row.find('input[type="checkbox"]')
     checkbox.prop('checked', !checkbox.prop('checked'));
@@ -308,7 +296,7 @@ function toggle_checkbox(form, obj)
 function filter_change(e)
 {
     var form = $(this).attr('id').split('_')[1];
-    var filter = $('input#filter_'+form).val();
+    var filter = $('input#filter_'+form).val().toLowerCase();
 
     var cnum = 0;
     $('table#table_'+form+' tbody tr').not('.deleted').each(function(i,e){
@@ -352,7 +340,7 @@ function status_change(e)
            new_status = $(this).val();
     });
 
-    $.invoke('Sales/SetStatus', {status: new_status, ids: ids}, function(data){
+    $.invoke('Stempel/SetStatus', {status: new_status, ids: ids}, function(data){
        for (var i=0; i < ids.length; i++) {
            show_message('Positionen aktualisiert');
            var checkbox = form.find('input.checkbox[value="'+ids[i]+'"]');
@@ -372,6 +360,7 @@ function status_change(e)
 $(function(){
     $('div.jscode input.filter').keyup(filter_change);
     $('div.jscode img.filter').click(filter_clear);
+    make_editable('table.smallfont tr span.edit');
 });
 </protect>
 </script>