====== Node Status ======
The sysop can customize the strings used to represent the state of [[server:Terminal]] Server nodes and the actions of users when a node is in-use.

These strings are stored, along with all of Synchronet's other configurable text, in the ''[[dir:ctrl]]/[[custom:text.dat]]'' file (located in the ''ctrl'' directory of your installation). Rather than editing the ''text.dat'' file directly --- which would be over-written by a Synchronet upgrade --- customize the relevant string IDs by over-riding them in a ''[[dir:ctrl]]/[[custom:text.ini]]'' file, as described below.

===== Static =====
To replace node status or activity strings with //static// custom or translated text, create or modify a ''[[dir:ctrl]]/[[custom:text.ini]]'' file and in the root section, set the desired ''NodeStatus*'' or ''NodeActivity*'' ''[[custom:text.dat]]'' string IDs to your desired custom/translated string.

  * NodeStatusWaitingForCall
  * NodeStatusLogon
  * NodeStatusNewUser
  * NodeStatusOffline
  * NodeStatusEventWaiting
  * NodeStatusEventRunning
  * NodeStatusEventLimbo
  * NodeStatusLogout

  * NodeActivityMainMenu
  * NodeActivityReadingMsgs
  * NodeActivityReadingMail
  * NodeActivitySendingMail
  * NodeActivityReadingTextFiles
  * NodeActivityReadingSentMail
  * NodeActivityPostingMsg
  * NodeActivityAutoMsg
  * NodeActivityXtrnMenu
  * NodeActivityRunningXtrn
  * NodeActivitySettings
  * NodeActivityFileMenu
  * NodeActivityDownloadingFile
  * NodeActivityUploadingFile
  * NodeActivityBiXferFile
  * NodeActivityListingFiles
  * NodeActivityLoggingOn
  * NodeActivityLocalChat
  * NodeActivityChatChannel
  * NodeActivityGlobalChat
  * NodeActivityChatMenu
  * NodeActivitySysop
  * NodeActivityQWKmenu
  * NodeActivityNodeChat
  * NodeActivityPagingNode
  * NodeActivityRetrievingFile
  * NodeActivityCustom

**Note**:\\
These strings may be contain [[custom:Ctrl-A codes]] for customized attributes, but not [[custom:atcodes|@-codes]] for variable expansion or any other purpose.

===== Dynamic =====
To replace "in-use" node action/activity strings //dynamically// (during run-time, e.g. while a user is connected to a terminal server node), use the Baja or JavaScript ''replace_text'' functionality to replace the ''NodeAction*'' ''[[custom:text.dat]]'' string corresponding with the current node action value (e.g. set the ''NodeActionCustom'' string when setting the current node action value to ''NODE_CUSTOM'' from ''[[dir:load]]/nodedefs.js'') before using the appropriate ''sync'' or ''nodesync'' function to write the changes to the ''node.dab'' and ''node.exb'' files.

  * NodeActionMainMenu
  * NodeActionReadingMsgs 
  * NodeActionReadingMail
  * NodeActionSendingMail
  * NodeActionReadingTextFiles
  * NodeActionReadingSentMail
  * NodeActionPostingMsg
  * NodeActionAutoMsg
  * NodeActionXtrnMenu
  * NodeActionSettings
  * NodeActionFileMenu
  * NodeActionDownloadingFile
  * NodeActionUploadingFile
  * NodeActionBiXferFile
  * NodeActionListingFiles
  * NodeActionLoggingOn
  * NodeActionLocalChat
  * NodeActionMultiChat
  * NodeActionGuruChat
  * NodeActionChatMenu
  * NodeActionSysop
  * NodeActionQWKmenu
  * NodeActionPrivateChat
  * NodeActionPagingNode
  * NodeActionRetrievingFile
  * NodeActionCustom

**Note**:\\
These strings may contain [[custom:Ctrl-A codes]] (for custom attributes) or [[custom:atcodes|@-codes]] (for variable expansion).

==== Backward Compatibility ====
In versions prior to 3.20, Synchronet treated the NodeAction* ''text.dat'' strings [[https://synchro.net/docs/customization.html#NodeActionText|quite differently]], supported some very specific format specifiers for the inclusion of variables such as user name, age, etc. and was used to replace the entire node status text. As of v3.20, Synchronet now treats the contents of these ''text.dat'' strings as **only** the user activity portion of the node status (nothing else) and supports optional [[atcodes|@-codes]] for additional variables if any are desired. Most of these ''text.dat'' string IDs were renamed slightly as well.

===== Display =====
The displayed node list to users of the terminal server is done using the [[module:nodelist]] module which relies heavily on the ''[[dir:load]]/presence_lib.js'' library.

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

{{tag>node localization text.dat}}
