Fix stempel editing and status changes
authorJoey Schulze <joey@infodrom.org>
Mon, 7 Aug 2017 20:54:29 +0000 (22:54 +0200)
committerJoey Schulze <joey@infodrom.org>
Sat, 6 Oct 2018 17:30:26 +0000 (19:30 +0200)
class/sales.class.php
src/InfoCon/stempel/status.wml

index 92a530f..b5a535d 100644 (file)
@@ -63,21 +63,5 @@ class Sales extends DatabaseTable {
     return $this->modify('paid', 0);
   }
 
-  public function ajaxText(Array $data)
-  {
-    return $this->modify('description', $data['text']);
-  }
-
-  public function ajaxSetStatus(Array $data)
-  {
-    if (count($data['ids'])) {
-      $sql = sprintf('UPDATE stempel SET status = %d WHERE oid IN (%s)',
-                    $data['status'], implode(',',$data['ids']));
-      return $this->execute($sql);
-    }
-
-    return true;
-  }
-
 }
 
index 9247bb2..8e4d8c7 100644 (file)
@@ -9,22 +9,6 @@
   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()
   {
       $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'],
@@ -254,6 +238,49 @@ function add_sum(form, checkbox)
     sum.html('&euro;' + ((newval/60)*rate.val()).toFixed(2));
 }
 
+var task_parent = null;
+var task_title = '';
+var task_id = 0;
+function edit_task(obj)
+{
+    if (task_id) {
+       if (task_id != obj.parentNode.children[0].children[0].value)
+           edit_task_save();
+    }
+
+    if (!task_id) {
+       task_parent = obj;
+       task_title = obj.innerHTML;
+       task_id = obj.parentNode.children[0].children[0].value;
+
+       var input = $('<input>');
+       input.val(obj.innerHTML.replace('&gt;', '>').replace('&lt;', '<').replace('&amp;', '&'));
+       input.css('fontSize', '100%').css('width', '100%').css('background', 'yellow');
+       obj.innerHTML = '';
+       $(obj).append(input);
+       input.focus();
+    }
+}
+
+function edit_task_save()
+{
+    if (!task_parent) return;
+
+    if (task_parent.children[0].value != task_title)
+       $.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_id = 0;
+}
+
+function edit_task_finish(obj)
+{
+    if (task_id)
+       edit_task_save();
+}
+
 function toggle_checkbox(form, obj)
 {
     var row = $(obj).parents('tr:first');
@@ -311,7 +338,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]+'"]');