summaryrefslogtreecommitdiff
path: root/etc/rt-dot-el-design
diff options
context:
space:
mode:
Diffstat (limited to 'etc/rt-dot-el-design')
-rw-r--r--etc/rt-dot-el-design60
1 files changed, 60 insertions, 0 deletions
diff --git a/etc/rt-dot-el-design b/etc/rt-dot-el-design
new file mode 100644
index 0000000..01cc3c2
--- /dev/null
+++ b/etc/rt-dot-el-design
@@ -0,0 +1,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.