====== Message List ======

This module (''msglist.js'') can be used as a full-screen scrolling user interface for listing messages (public posts and private email messages) and reading and replying to messages.

{{:module:msglist_screenshot.png?600|}}

This module was first demonstrated in this [[https://www.youtube.com/watch?v=5mwimlWJOko|video]].

===== Dependencies =====

For full/proper function of this module, you'll need a recent v3.17c dev-build (as of March, 2020) of Synchronet, or later.

This module may require an update of your Synchronet ''exec/[[dir:load]]'' directory to get the latest ''.js'' load-libraries, including the newly added ''age.js''.

The following menu files are used by this module:
  * ''[[dir:text]]/menu/msglist.asc''
  * ''[[dir:text]]/menu/msgview.asc''

===== Install =====

==== System Modules ====

Run ''[[util:jsexec]] msglist.js -install''.

This procedure this will configure the "Read Mail" and "List Msgs" modules in [[util:SCFG]]->System->Loadable Modules with command-lines that call this module to handle those system functions from all built-in menus and stock command shells.

==== Menu Command ====

If you wish to allow your BBS users to list sub-board messages directly from a Baja command shell menu (e.g. using the 'L' command key from the main or message menu) add the following command key handler to the desired command shell source (''.src'') file(s):

for Synchronet v3.18 or later:

<code>
cmdkey L
    msg_list
    end_cmd

</code>

for Synchronet v3.17 or older:

<code>
cmdkey L
   exec_bin "msglist"
   end_cmd
</code>

... and then recompile the source file with [[util:baja]] (e.g. ''baja default.src'').

In Synchronet v3.20, the default command shell (''default.js'') already has main menu ''L'' command key mapped to the BBS message list function.

===== Configure =====

The behavior of this module is sysop-configurable through the use of command-line arguments and the ''[[config:modopts.ini]]'' file.

==== Command-Line Options ====

^ Option        ^ Description ^
| ''-preview''  | Enable the message preview pane by default |
| ''-nospam''   | Don't load SPAM-tagged messages |
| ''-spam''     | Only load SPAM-tagged messages |
| ''-unread''   | Only load unread messages |
| ''-sent''     | List sent mail |
| ''-all''      | List all mail | 
| ''-reverse''  | Reverse the default message list order |
| ''-sort=//property//'' | Specify a property name to sort list by |
| ''-new=//days//''      | List only messages added/imported in last number of days |
| ''-fmt=//format//''    | Specify list format string |
| ''-p=//prop-list//''   | Specify comma-separated list of property names for columns |
| ''-hdr''               | Include a header when executed offline (e.g. via''[[util:jsexec]]''). |
| ''-count''             | Display only total number of messages |
| ''-all_subs''          | List all sub-boards |
| ''-hide_zero''         | Don't list subs with no (new) messages |
==== modopts.ini ====

The ''[msglist]'' section of the ''[[config:modopts.ini]]'' file may be created by the sysop to customize the look-and-feel of this module.

If a ''[msglist:<code>]'' section exists, then those settings will take precedence when the module is being used to list/view messages in the message base with the specified internal //code// (e.g. ''[msglist:mail]'' for the mail message base).

^ Option ^ Default ^ Description ^
| ''reverse_mail''   | true  | List mail messages in reverse chronological order (newest first) by default |
| ''reverse_msgs''   | true  | List sub-board messages in reverse chronological order (newest first) by default |
| ''cache_msg_text'' | false | Cache message text in memory |
| ''large_msg_threshold'' | 64 KBytes | Message text larger than this value will not be cached in memory |
| ''preview_label'' | "\xd9 Preview" | Displayed string |
| ''preview_label_terminator'' | " \xc0" | Displayed string |
| ''preview_lines_fmt'' | " lines %u-%u" | Displayed string |
| ''preview_total_lines_fmt'' | " of %u" | Displayed string |
| ''preview_separator'' | '\xC4' | Character for Preview Pane separator |
| ''preview_properties'' | date,attributes,subject | Properties to display in the Preview Pane separator |
| ''preview_properties_fmt'' | "\xd9 %s \xc0" | Displayed string format |
| ''preview_properties_maxlen'' | 10 | Maximum length of a previewed property value |
| ''preview_properties_separator'' | ", " | Separator to use between previewed property values |
| ''hide_redundant_properties'' | true | Repeated property columns are automatically hidden |
| ''date_fmt'' | %Y-%m-%d | Format of dates displayed in list |
| ''date_time_fmt'' | system default | Format of date/time displayed in list |
| ''pause'' | true | Pause for a key-press after posting a message, or set to a duration (in seconds), or ''false'' |
| ''beep'' | true | Console alerts/beeps are enabled |
| ''view_lines_fmt'' | "%slines %u-%u" | Displayed string |
| ''view_total_lines_fmt'' | " of %u" | Displayed string |
| ''view_line_range_fmt'' | "\x01n\x01h\x01k[%s]" | Displayed string |
| ''preparing_preview_fmt'' | "%25s" | Displayed string |
| ''reading_message_text'' | "\x01[Reading message text ..." | Displayed string |
| ''preparing_hex_dump'' | "\x01[Preparing hex-dump ..." | Displayed string |
| ''translating_charset'' | "\x01[Translating charset ..." | Displayed string |
| ''wrapping_lines'' | "\x01[Wrapping lines ..." | Displayed string |
| ''splitting_lines'' | "\x01[Splitting lines ..." | Displayed string |
| ''area_name_fmt'' | "\x01n\x01k\x017%s / %s\x01h" | Displayed string |
| ''area_nums_fmt'' | "[message %u of %u]" | Displayed string |
| ''attr_spam'' | "Sp" | Displayed string |
| ''attr_attach'' | "Att" | Displayed string |
| ''attr_delete'' | "Del" | Displayed string |
| ''attr_new''    | "New" | Displayed string |
| ''attr_replied'' | "Re" | Displayed string |
| ''attr_read''    | "Rd" | Displayed string |
| ''attr_perm''    | "Perm" | Displayed string |
| ''attr_anon''    | "Anon" | Displayed string |
| ''attr_locked''  | "Lck" | Displayed string |
| ''attr_kill''    | "Kill" | Displayed string |
| ''attr_noreply'' | "NoRe" | Displayed string |
| ''attr_mod''     | "Mod" | Displayed string |
| ''attr_valid''   | "Valid" | Displayed string |
| ''attr_private'' | "Priv" | Displayed string |
| ''attr_poll''    | "Poll" | Displayed string |
| ''attr_sent''    | "Sent" | Displayed string |
| ''attr_intransit'' | "InTransit" | Displayed string |
| ''attr_sep''       | " " | Displayed string |

===== See Also =====
  * [[:module:|module index]]

{{tag>messages}}
