Overview
--------
The Support module allows you to manage Tickets in any number of queues,
referred to by the module as "Clients".  Each Support Client gets a logically
distinct ticket queue, and a ticket can only be assigned to a single Client at
a time. Drupal users must be granted access to Clients to see tickets in a
given Client queue, and can either be granted limited access to only see the
tickets they created themselves or are explicitly assigned to them, or complete
access to see all tickets assigned to the Client.

Tickets can only be assigned to up to one Drupal User at a time.  Tickets always
have a Priority (low, normal, high, critical) and a State (new, active, pending,
closed).

Support Clients can be optionally integrated with email allowing tickets to be
created and updated by email. Notificiation emails can be generated by the
support module when tickets are created or updated.  A Drupal User must be
subscribed to a ticket to receive email notifications. There is no limit to the
number of Users that can subscribe to an individual ticket. Inidividual Clients
can be configured to auto-subscribe specific Drupal Users to new tickets.

In Drupal terms, a Ticket is a Content Type, so Tickets are Drupal Nodes. Ticket
Updates are Drupal Comments.

You must create at least one Client to use the Support module. There is no
inherent maximum limit to the number of clients you can create. Read on for
step by step directions to get started with the Support module.



Installation
------------

1) Enable the module.

2) Edit 'Administer >> Content management >> Content types >> Support ticket'
 a) Set the desired Submission form settings (such as Title field label, Body
    field label, Minimum number of words, etc)
 b) Set the desired Workflow settings
 c) Set the desired Comment settings (recommended):
    - make comments read/write
    - make default display mode 'flat list - expanded'
    - make default display order 'Date - oldest first'
    - increase default comments per page
    - do not display comment controls
    - disable the comment subject field
    - display comment submission form below post or comments

3) Go to "Administer >> Support >> Clients >> Add client" and create one or
   more Support clients.

   If you only want to track tickets online, and send out notifications as
   tickets are created and updated, simply define the 'Client name' and 'Path'.
   If you want the ability to create and update tickets via email, you will
   need to open the 'Inbound email integration' section, check 'Integrate
   email', and fill out the rest of the information in that section.  If
   integrating inbound email, you will need to create an email account for
   each client -- support will use this account to send and receive email.
   More information can be found in MAIL.txt.

4) If creating multiple Support clients, go to "Administer >> User management
   >> Roles" and create one role for each Support client.  (This is an optional
   step and is only required if you want to prevent one client from viewing and
   updating the tickets of another client.  If you are using this ticketing
   system internally, this may not be important to you.)

5) Go to "Administer >> User management >> Permissions" and assign the desired
   permissions.  A user will need at least one "access CLIENT tickets"
   permission and "create tickets" permission to be able to create tickets.
   Users can only create and update tickets for clients they can access.

   Users with "can suppress notification" permissions have the option to
   manually disable a notification email from being sent out.  An email will
   still get sent to admins telling them that an update has been made but not
   showing the contents of the update.  This feature allows passwords and other
   sensitive information to be added to tickets without being sent out as a
   plain text email.

   Users with "can assign tickets to self" permissions are able to assign a
   ticket to themselves, or to assign the ticket to nobody.

   Users with "can assign tickets to any user" permissions are able to assign
   a ticket to themselves or to another user.  Only users with permission to 
   view a given ticket can be assigned to it.

   Users with "can subscribe other users to notifications" permissions are able
   to subscribe other users to email notifications when a ticket is updated.
   Users without this permission can only subscribe themselves.  Only users
   with permission to view a given ticket can be subscribed to notifications
   for it.

   Users with "download mail via support/fetch" permissions can access the path
   "support/fetch" which will cause the Support module to download all client
   email.  Mail is also fetched when Drupal's cron is run, but this allows mail
   to be checked at a different frequency than cron is run, if desired.  If you
   are using Support's mail integration features and you are running Drupal's
   cron, you do not ever need to access support/fetch.

   Users with "view other users tickets" permissions can view all tickets for
   any client that they have "access CLIENT NAME tickets" permissions.  Users
   that do not have this permission can only view tickets that they themselves
   have created. Users with "administer support", "edit any ticket" and/or
   "delete any ticket" permissions can always "view other users tickets" whether
   or not they are explicitly granted this permission.

   Users with "edit multiple tickets" permissions will be able to add updates
   and change the state and priority of multiple tickets from the client
   overview pages.

   When creating and modifying tickets, users with "can select client"
   permissions can assign the ticket to any client that they have permission
   to access tickets for.

   When creating and modifying tickets, users with "can select priority"
   permissions can set the priority of the ticket.

   When creating and modifying tickets, users with "can select state" 
   permissions can set the state that the ticket is currently in, based on
   the workflow defined in the support_states database table.  By default, this
   means that new tickets must be in the 'new' state, and only upon updating a
   ticket can the user set the state to 'active', 'pending', or 'closed'.

   Users with "can administer state" permissions can change the state of any
   ticket from any state to any other state, ignoring the workflow defined in
   the support_states database table.

   Users with "move ticket" permissions and permission to edit a ticket see a
   new "Support ticket" fieldset with a "Move ticket" field allowing them to
   specify a parent node id which will cause the ticket and any updates to be
   moved and become updates on the specified node id.  Note that this only
   allows for moving an entire ticket and all its updates, not specific updates.

   Users with "administer support" permissions can access and update all
   clients and client tickets, and automatically have all support permissions
   available to them.

   NOTE: If you have integrated email for any of your clients and you wish to
   save email attachments then the user running Drupal's cron (usually the
   anonymous user) must have "upload files" permissions.  You can set this on a
   per-content-type basis using the Upload Permissions Per Content Type module:
   http://drupal.org/project/upload_perm_per_type

--------
Optional
--------

Comment Upload:
---------------
If you would like to be able to attach files to support ticket updates, you
can install the comment_upload module:
  http://drupal.org/project/comment_upload
Once the module is enabled, visit "Administer >> User management >> Permissions"
and grant "upload files to commnts" and "view files uploaded to comments" to all
roles that should be allowed to attach files to support tickets.  Finally, visit
"Administer >> Content management >> Content types" and click "Support ticket".
In the "Comment settings" section enable "Attachments on comments".

NOTE: If you have integrated email for any of your clients and you wish to save
email attachments then the user running Drupal's cron (usually the anonymous
user) must have "upload files to comments" permissions.  You can set this on a
per-content-type basis using the Upload Permissions Per Content Type module:
http://drupal.org/project/upload_perm_per_type

Support Charts:
---------------
If you would like to generate charts from ticket statistics, you must first
install the Google Charts API module:
  http://drupal.org/project/chart

Support Timer:
--------------
If you would like to enhance the support ticket system to also be a time tracker
you can install the support_timer module:
  http://drupal.org/project/support_timer
(This project seeks one or more co-maintainers.)

Support Nag:
------------
If you would like the support ticket system to remind users about open tickets,
and to automatically update the status of old tickets, you can install the
support_nag module:
  http://drupal.org/project/support_nag
(This project seeks one or more co-maintainers.)

Support SMS:
------------
If you would like to schedule SMS notifications to be sent for tickets, you can
install the support_sms module:
  http://drupal.org/project/support_sms
(This project seeks one or more co-maintainers.)
