summaryrefslogtreecommitdiff
path: root/etc/rt-dot-el-design
blob: 01cc3c2606b56f3fb015e7b15c382f163097cf5b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
-*- outline -*-

This document outlines *a* design concept for an RT mode for
GNU/Emacs.

** Functional modules

* Module "TicketSQL compiler": Symbolic expression domain specific 
  language to TicketSQL query compiler. Accept as input a sexp
  representing a query and output a query in TicketSQL format. For
  example: [(:and (:owner "Ben Bitdiddle") (:status "open"))] =>
  ["Owner='Ben Bitdiddle' and Status='open'"].

* Module "TicketSQL runner": Run a TicketSQL query against the server
  and return the result. Accept as input a TicketSQL query and return
  a list of ticket-id ticket-subject pairs or nil if no matches were
  found.

* Module "ticket retriever": Retrieve all of the data related to a
  particular ticket. Accept as input a ticket-id and return a string
  containing all of the information and history corresponding to the
  ticket with ticket-id.

* Module "CLI command interface": Send ticket-modifying commands to
  the server, receive and process the results.

* Module "local storage": Store and retrieve arbitrary information
  about tickets. The storage is keyed to the RT ticket number.

** User interface modules

* Module "ticket browser": (requires "TicketSQL runner") Interactive
  interface to choose a ticket out of a list of tickets. The query
  which generated the list is displayed at the top, followed by the
  number of tickets listed, followed by a list of tickets. Tickets are
  displayed according to a modular display function. The tickets are
  sorted according to a default sorting function (reverse
  chronological order).

* Module "ticket viewer": (requires "TicketSQL retriever") Interactive
  interface to display all of the information and history
  corresponding to the ticket with ticket-id. Ticket display provides
  a number of convinience functions. The buffer is read-only and
  provides font-locking to easily identify section borders. The
  keyboard space-bar invokes `scroll-up'. The "n" and "p" keys jump to
  the next and previous section borders respectively.

** Software interfaces

* Module "rt-liber-Gnus": (requires "ticket viewer") Allows the user 
  to open the current ticket in a Gnus mail buffer. Fills in the
  "Subject:" and "To:" fields appropriately. Has the ability to import
  the text of a certain section (automatically quoted). Optionally can
  add a "sorry we are late" text if the ticket is old or other
  greetings, salutations and signatures.

* Module "command": (requires "CLI command interface") The user can 
  send commands to the RT system to change the status of tickets via
  this interface. The user interface is updated as needed to reflect
  the change.