changeset 625:5eca657134a5

tj: Implement command to set/reset default ID for TJs.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 11 Feb 2021 10:32:51 +0200
parents e7c88d4e917c
children 319c2e73860c
files config.tj.example tj.tcl
diffstat 2 files changed, 61 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/config.tj.example	Thu Feb 11 10:02:55 2021 +0200
+++ b/config.tj.example	Thu Feb 11 10:32:51 2021 +0200
@@ -24,6 +24,7 @@
   "remind" {^(remind|muist)}
   "list" {^(list|listaa?)$}
   "delete" {^(del|delete|poista)$}
+  "default" {^(def|default|vakio)$}
   "show" {^(show|näytä|nayta)$}
 }
 
@@ -71,14 +72,18 @@
   "help" "@cmd@ \[#<id>\] \[nimi\]"
   "help_set" "@cmd@ set \[#<id>\] <\[-\]päivät \[+/-<tunnit>\] | dd.mm.yyyy \[hh:mm\]> [<kuvaus>]"
   "help_list" "@cmd@ list \[nimi\] -- listaa TJ:t (muiden listaus vain admineille)"
-  "help_delete" "@cmd@ delete #<id>"
+  "help_delete" "@cmd@ del #<id> -- poistaa TJ:n annetulla ID:llä"
+  "help_default" "@cmd@ def #<id> -- asettaa käyttäjän vakio TJ-ID:n"
 
   "help_remind_add" "@cmd@ muistuta <id>"
   "help_remind_delete" "@cmd@ poista <id>"
 
+  "err_no_such_id" "@nick@:llä ei ole tuollaista TJ-ID:tä '@1@'."
   "err_invalid_user" "pyh, mene pois."
   "err_unknown_user" "en tunne käyttäjää @1@"
 
+  "default_set" "@nick@:n vakio-id asetettu: '@1@'."
+
   "list_item" "#@1@/@2@: @3@ : \002@4@\002 / @5@"
 
   "tj_set" "@3@:n @2@-TJ asetettu @5@ (@6@): @4@"
--- a/tj.tcl	Thu Feb 11 10:02:55 2021 +0200
+++ b/tj.tcl	Thu Feb 11 10:32:51 2021 +0200
@@ -88,8 +88,8 @@
 }
 
 
+# ------------------------------------------------------------------------
 proc tj_get_id {rstr rindex rid} {
-  global tj_default_id
   upvar $rindex uindex
   upvar $rid uid
 
@@ -98,12 +98,23 @@
     incr uindex
     return 1
   } else {
-    set uid $tj_default_id
     return 0
   }
 }
 
 
+proc tj_get_default_id {uhand} {
+  global tj_default_id
+
+  set uid [getuser $uhand XTRA "tj_default_id"]
+  if {$uid == "" || $uid == "{}" || $uid == "*"} {
+    return $tj_default_id
+  } else {
+    return $uid
+  }
+}
+
+
 proc tj_ctime {ustamp} {
   return [clock format $ustamp -format [tj_qm "datefmt"]]
 }
@@ -167,6 +178,7 @@
 }
 
 
+# ------------------------------------------------------------------------
 proc tj_display_tjs {upublic unick uchan uname uid uclock} {
 
   set nresults 0
@@ -230,6 +242,7 @@
       set rdesc ""
     } else {
       set rdesc $tj_default_desc
+      set uid [tj_get_default_id $uhand]
     }
 
     if {![utl_arg_get $rarglist rindex rarg 1]} {
@@ -392,7 +405,6 @@
       set uname $uhand
     }
 
-
     set usql "SELECT COUNT(*) FROM tj WHERE uuser='[utl_escape $uname]'"
     if {[catch {set nitems [tj_dbh onecolumn $usql]} uerrmsg]} {
       tj_msg $upublic $unick $uchan "err_sql" [list $uerrmsg]
@@ -434,11 +446,40 @@
     }
 
     tj_msg $upublic $unick $uchan "items_deleted" [list $uid $nitems]
+
+  } elseif {[tj_cmd_match "default" $rcmd]} {
+    # !tj default #<id>
+    # Check for #id prefix
+    if {![utl_arg_get $rarglist rindex rarg 0] || ![tj_get_id $rarg rindex uid]} {
+      tj_msg $upublic $unick $uchan "help_default"
+      return 1
+    }
+
+    if {$uid == "" || $uid == "{}" || $uid == "*"} {
+      set uid $tj_default_id
+    } else {
+      set usql "SELECT COUNT(*) FROM tj WHERE uuser='[utl_escape $uhand]' AND uid='[utl_escape $uid]'"
+      if {[catch {set nids [tj_dbh onecolumn $usql]} uerrmsg]} {
+        tj_msg $upublic $unick $uchan "err_sql" [list $uerrmsg]
+        tj_log "$uerrmsg on SQL:\n$usql"
+        return 1
+      }
+
+      if {$nids < 1} {
+        tj_msg $upublic $unick $uchan "err_no_such_id" [list $uid]
+        return 1
+      }
+    }
+
+    setuser $uhand XTRA "tj_default_id" $uid
+
+    tj_msg $upublic $unick $uchan "default_set" [list $uid]
+
   } elseif {[tj_cmd_match "show" $rcmd]} {
     # !tj show [#<id>] <name>
     # Check for #id prefix
     if {[utl_arg_get $rarglist rindex rarg 0]} {
-      tj_get_id $rarg rindex uid
+      set notdefault [tj_get_id $rarg rindex uid]
     }
 
     if {![utl_arg_get $rarglist rindex rarg 0]} {
@@ -452,14 +493,19 @@
       return 1
     }
 
+    if {!$notdefault} {
+      set uid [tj_get_default_id $uname]
+    }
+
     tj_display_tjs $upublic $unick $uchan $uname $uid $uclock
   } else {
     # !tj [#<id>] [name]
+    set notdefault 0
     set uname $uhand
     set rindex 0
     if {[utl_arg_get $rarglist rindex rarg 0]} {
       # Check for #id prefix
-      tj_get_id $rarg rindex uid
+      set notdefault [tj_get_id $rarg rindex uid]
 
       if {[utl_arg_get $rarglist rindex rarg 0]} {
         set uname [tj_correct_handle $rarg]
@@ -468,8 +514,10 @@
           return 1
         }
       }
-    } else {
-      set uid $tj_default_id
+    }
+
+    if {!$notdefault} {
+      set uid [tj_get_default_id $uname]
     }
 
     tj_display_tjs $upublic $unick $uchan $uname $uid $uclock