home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / lib / X11 / willow / doc / Customization < prev    next >
Encoding:
Text File  |  1995-07-12  |  36.4 KB  |  785 lines

  1.  
  2.                                                   September 6, 1994
  3.  
  4.                  Customizing Willow for Your Site
  5.  
  6.      ##########################################################
  7.      #           Send your questions and comments to:         #
  8.      #                willow@cac.washington.edu               #
  9.      # Or, if you wish to share them with other Willow users: #
  10.      #             willow-info@cac.washington.edu             #
  11.      ##########################################################
  12.  
  13.  
  14. Contents
  15. ========
  16.   Section 0: Introduction
  17.   Section 1: X Resources
  18.   Section 2: Remote Execution of Willow
  19.   Section 3: Executing Willow via Mosaic/www
  20.   Section 4: Database Configuration File
  21.   Section 5: Manual Login Databases
  22.   Section 6: Using Help Files
  23.   Section 7: Multi-Media Extensions
  24.   Section 8: Socketed Drivers
  25.   Section 9: Writing Database Drivers  
  26.  
  27. Section 0: Introduction
  28. =======================
  29.   This document is a description of how to customize Willow for use at
  30.   your site. There are four levels of customization. First, a user may
  31.   want to customize certain aspects of Willow, such as colors, or
  32.   default e-mail addresses, etc. That type of customization can be
  33.   handled through the Options menu, and/or the X-Resource system. The
  34.   available resources are documented in the file willow.X, and are not
  35.   described in detail here. 
  36.  
  37.   The second level of customization is site-wide behavioral defaults.
  38.   A system administrator may wish to pre-set some of the resources
  39.   described in willow.X for all of her users. In addition, there are
  40.   some resources which are only applicable to site-wide
  41.   customizations.  Those are described here, in the "X Resources"
  42.   section. Most system administrators will not need to read any
  43.   further than this.
  44.  
  45.   For a large user-community, you may decide that it is worthwhile to
  46.   take advantage of the X-Window system's remote execution
  47.   capabilities to configure Willow to run on central servers and
  48.   display remotely on the users' terminals. This is discussed in
  49.   "Remote Execution of Willow".
  50.  
  51.   Another interesting possibility is to let your users use Mosaic or
  52.   some other World Wide Web client to browse through your available
  53.   databases. The browser can be configured to launch a Willow process
  54.   with the appropriate database configuration at the user's command.
  55.   This is discussed in "Executing Willow via Mosaic/www".
  56.  
  57.   The third level of customization is to either change the way Willow
  58.   interacts with the existing databases, or to make the existing
  59.   database drivers talk to new databases. What you need to know in
  60.   order to do this is described in the "Database Configuration File"
  61.   section. You may also find "Manual Login Databases", "Using Help
  62.   Files" and "Multi-Media Extensions" useful for adding your new
  63.   database. Specific issues involved in writing a config file entry
  64.   for a Z39.50 database are discussed in a separate document --
  65.   "Z39.50_Supplement".
  66.  
  67.   It is also possible to configure Willow so that certain database
  68.   drivers are run remotely via network sockets, rather than executed
  69.   locally on the same machine as Willow. This is discussed under
  70.   "Socketed Drivers".
  71.   
  72.   The fourth level of customization is to do your own custom
  73.   programming and write a new database driver to speak to a database
  74.   which is not already in Willow's repertoire. See the section
  75.   "Writing Database Drivers" for (sketchy) information on this
  76.   process.
  77.   
  78.   If you are interested in customization beyond the first two levels,
  79.   I strongly suggest that you read the willow technical report
  80.   (Tech-Report.ps) first, since that document explains the overall
  81.   architecture and how all the pieces fit together.
  82.  
  83.  
  84. Section 1: X Resources
  85. ======================
  86.   Following are the X resources which you are most likely to be
  87.   interested in setting on a system-wide basis. You should also take a
  88.   look at the file willow.X which describes the X resources an
  89.   end-user is most likely to be interested in (colors, size,
  90.   save-preferences, etc.). 
  91.  
  92.   Note that the user can do some customization herself via Willow's
  93.   Options menu. If these settings are saved, they are written to a
  94.   file called .willowrc in the user's home directory.
  95.  
  96.   Willow*willowDir : /usr/lib/X11/willow/
  97.     The base willow directory. You can use this resource to move the
  98.     Willow distribution somewhere other than /usr/lib/X11/willow. It
  99.     can also be useful if you want to have more than one version of
  100.     Willow running on your system for some reason.
  101.  
  102.     Note that it is simpler to just put the willow distribution
  103.     wherever you want it and then use a symbolic link from the default
  104.     location -- /usr/lib/X11 -- to point to the real location.
  105.  
  106.   Willow*databaseConfigFile: db.conf
  107.     This resource tells Willow the name of the database configuration
  108.     file it should open up.  If the value is just a simple file name,
  109.     that file is searched for in the willowDir directory. If the value
  110.     starts with a '/', then it is assumed to be a complete path name.
  111.     See the "Database Configuration File" section of this document for
  112.     more information on this file.
  113.  
  114.   Willow*interfaceMode: normal
  115.     There are three modes that the Willow interface can run in:
  116.     normal, anonymous, and managed. Normal is used for the situation
  117.     where Willow is running on a departmental or personal unix
  118.     machine, and all the individual users have personal accounts on
  119.     that machine.
  120.     
  121.     If this resource is set to anonymous, Willow comes up in a mode
  122.     that is appropriate for anonymous, account-less use. Any features
  123.     that require a personal account on the unix machine are disabled.
  124.     On the Options menu, "Connection" and "Print" are removed. Saving
  125.     of results must be done through ftp or email, and search
  126.     strategies can only be saved via ftp. This is the mode that Willow
  127.     on the willow.u.washington.edu campus server runs in. See "Remote
  128.     Execution of Willow" for more information.
  129.     
  130.     Managed mode is used in conjunction with the Session Manager
  131.     environment we are running on the walk-up X-Terminals in the UW
  132.     libraries. Willow starts completely unmapped, and the Quit button
  133.     is gone.
  134.  
  135.   Willow*printCommand : lpr
  136.     The default print command used by Willow. For example, you could
  137.     change it to "lpr -Pprinter1" if you have a printer called
  138.     "printer1" which you want people to use. This can be over-ridden
  139.     through the options menu on a user by user basis (in normal mode
  140.     only).
  141.     
  142.     If printCommand is set to "none" then printing is disabled. In
  143.     normal mode, printing can then be re-enabled via the options menu.
  144.  
  145.   Willow*printDialog: True
  146.     If this resource is set to False, Willow will not pop up the
  147.     "Printing..." dialog box after you press the "Print" button. This
  148.     can be useful if you have set Willow*printCommand to be an X
  149.     program with its own interface that pops up.
  150.  
  151.   Willow*animationDelay : 200 
  152.     How many milliseconds Willow waits between each frame of animation
  153.     (the spinning globe and about-box). If it is set to 0, animation
  154.     is turned off.
  155.  
  156.   Willow*browseDelay: 250
  157.     How many milliseconds Willow waits after a keystroke in the
  158.     list-browser before sending the request to the driver. If another
  159.     keystroke comes first, count is reset. This saves wear and tear on
  160.     the list-browse server, and actually makes the browser feel more
  161.     responsive. 
  162.  
  163.   Willow*debug: 0
  164.     Setting debug to 1 causes Willow to echo every packet it receives
  165.     from the driver, setting to 2 causes it to also echo every packet
  166.     it sends, and setting it to 3 causes Willow to start xcodecenter
  167.     instead of the driver (to allow codecenter debugging of the driver
  168.     program). The value of debug is also passed on to the driver
  169.     program, via the -debug parameter, which causes similar echoing on
  170.     that side.
  171.  
  172.   Setting Up Willow on a Root Menu
  173.   You might want to set up a system-menu to start willow in the user's
  174.   choice of the four sizes. The following fragment can be used as part
  175.   of your system.mwmrc if you are using mwm. See willow.X for a
  176.   description of the size resource.
  177.  
  178.   Menu WillowMenu
  179.   {
  180.     "Willow"        f.title
  181.     ""              f.separator
  182.     "Small"         f.exec "willow -xrm \"Willow*size: small\" &"
  183.     "Medium"        f.exec "willow -xrm \"Willow*size: medium\" &"
  184.     "Large"         f.exec "willow -xrm \"Willow*size: large\" &"
  185.     "Extra-Large"   f.exec "willow -xrm \"Willow*size: extra-large\" &"
  186.   }
  187.  
  188.  
  189. Section 2: Remote Execution of Willow
  190. =====================================
  191.   As a huge institution with a very heterogenous collection of
  192.   X-capable terminals and workstations, we have found that it makes
  193.   the most sense to run Willow on a centrally maintained cluster of
  194.   machines, which display the Willow session on the user's terminal.
  195.   There are several advantages to this approach. New releases only
  196.   have to be compiled on a single architecture, and they do not have
  197.   to be distributed to a large number of sites, and virtually all
  198.   hardware resource requirements are offloaded to an easily expandable
  199.   central cluster.
  200.  
  201.   This approach only works well when the application can effectively
  202.   be run anonymously, i.e. if the user does not have to have a
  203.   personal account on the server machine. As discussed in "X
  204.   Resources", Willow can be run with "Willow*interfaceMode:
  205.   anonymous", which turns off everything that requires access to a
  206.   personal account on the machine Willow actually runs on. All
  207.   result-saving etc. can be done via e-mail or ftp, and the user can
  208.   set any personal customizations via .Xdefault.  Following is a brief
  209.   overview of how the UW installation works.
  210.  
  211.   UW Users can request an anonymous willow on their X displays via an
  212.   rsh command like this:
  213.      rsh willow.u -l willow <mydisplayname>:0
  214.  
  215.   We have also added a demo account with that can be started in a
  216.   similar fashion, and is accessible by anyone on the internet:
  217.      rsh willow.u.washington.edu -l demo <mydisplayname>:0
  218.  
  219.   On most campus machines /usr/local/bin/willow is just a script which
  220.   executes the above rsh command. Most users never know it is being
  221.   run remotely.
  222.  
  223.   Design Overview:
  224.   1. Note that instead of a typical rsh 'command string' after the -l
  225.      <accountname>, we have users supply their display name.  This is
  226.      because the specified account always runs only 1 predefined
  227.      command script.  This helps make the servers more secure.
  228.  
  229.   2. The DNS name 'willow.u' is randomly assigned to 1 of several Dec
  230.      5000's. Currently, the pool has 2 such machines.  More can be
  231.      added as load increases, or machines can be removed from the
  232.      'willow.u' alias if they develop hardware problems. This allows
  233.      hardware changes to be somewhat transparent to the user
  234.      community.
  235.  
  236.   3. We use dedicated hosts so system problems are isolated and so the
  237.      machines can be tuned for just running willow.
  238.  
  239.   4. We use the public domain 'tcpwrapper' software on the servers to
  240.      restrict IP connections and to provide info about where
  241.      connections are from. This allows us to make sure only UW based
  242.      systems can access the system.  Note that the demo account has
  243.      much less stringent requirements than the willow account.
  244.  
  245.   5. We wanted the flexibility of a script to control the login
  246.      process but we didn't want a script to be the account's shell
  247.      (again for security reasons).  Hence, we wrote a small C program
  248.      which is used as the account's shell.  This shell binary simply
  249.      invokes our startup script and passes all the rsh arguments to
  250.      the script.  We only currently use 1 argument -- the display to
  251.      send willow to.
  252.       
  253.   6. The startup script does a few basic checks before starting the
  254.      requested program.  It logs who/when/where the connection was
  255.      from, and also logs to which display the output will connect to.
  256.      If a connection is rejected due to IP checking or a malformed
  257.      display name was specified, the script outputs a message and
  258.      dies.
  259.  
  260.      If the script decides it is ok to start the process, the willow
  261.      process is exec'ed on the requested display.
  262.  
  263.   Feel free to contact us for more information, and/or source code and
  264.   scripts used in this process.
  265.  
  266.  
  267. Section 3: Executing Willow via Mosaic/www
  268. ==========================================
  269.   Willow is designed to be compatible with the World Wide Web (WWW)
  270.   and the Mosaic browser in particular. The situation is analogous to
  271.   the way image files work in that system. With those, you click on a
  272.   hypertext link which causes a file with a .gif extension to be
  273.   downloaded. Mosaic knows that when it has a gif file, it should
  274.   start the "xv" program to view it. Similarly, you can pick a WWW
  275.   hypertext link which causes a file containing a single db.conf entry
  276.   to be downloaded (with the extension .dbcf), and if you have
  277.   configured Mosaic properly, it will know to start a Willow to "view"
  278.   that file. Live demonstrations of this are available via Mosaic at
  279.   the Willow Information Center, URL:
  280.     http://www.cac.washington.edu/willow/
  281.  
  282.   The mime type for .dbcf file is "application/x-willow". At the
  283.   client end you need to adjust your mailcap file so that Mosaic knows
  284.   what to do with a file of type x-willow, so add the line:
  285.     application/x-willow; willow -cf %s
  286.  
  287.   The "-cf" flag tells Willow to read a particular file as its
  288.   db.conf, rather than the standard /usr/lib/X11/willow/db.conf.
  289.  
  290.   If you offer your own .dbcf files via a www server, you need to tell
  291.   your server that files with the .dbcf extension should be sent out
  292.   as type x-willow. To do so (at least for NCSA's httpd server) add
  293.   the following line to srm.conf:
  294.     AddType application/x-willow dbcf
  295.  
  296.   Full documentation on mime types and mailcap files is available via
  297.   Mosaic's help menu.
  298.  
  299.  
  300. Section 4: Database Configuration File
  301. ======================================
  302.   The database configuration file tells Willow which databases are
  303.   available, and how to present them. By default it is called
  304.   "db.conf" and lives in the Willow home directory. If you want to
  305.   change the way Willow interacts with an already-configured database,
  306.   or have one of the already-existing drivers talk to a new database,
  307.   you must make a new db.conf entry for it. I suggest you take a quick
  308.   look at the db.conf that comes with Willow before reading further.
  309.  
  310.   Supplementary information about using the Z39.50 driver can be found
  311.   in a separate document -- "Z39.50_Supplement". Information on how to
  312.   make Willow prompt the user for a user-id and password is found in
  313.   "Manual Login Databases".
  314.  
  315.   Following is a field by field description of db.conf. Blank lines,
  316.   and lines starting with a '#' or '!' are ignored. Most fields
  317.   require an equal sign followed by a value, but some do not. For
  318.   them, just having the field appear is equivalent to setting its
  319.   value to true. If the field is not there, then the value is false.
  320.  
  321.   Before the individual database descriptions is an optional section
  322.   for configuring Willow's hierarchical Database menu. There are four
  323.   fields available. If a menu configuration section does not appear,
  324.   Willow will automatically create a single-level Database menu, with
  325.   all the databases that appear in in the db.conf file.
  326.  
  327.   begin_menu = UW Bibliographic Databases
  328.     The begin_menu field indicates that a new sub-menu should be
  329.     started at this point. The value is used as a label for the button
  330.     which triggers the sub-menu. Also the menu configuration section
  331.     must start with a begin_menu field. For this first menu, the value
  332.     is ignored, since it is always attached to the Database button on
  333.     Willow's menu bar.
  334.  
  335.   end_menu
  336.     Marks the end of a sub-menu or the entire menu description
  337.     section. Every begin_menu must have a corresponding end_menu.
  338.  
  339.   item = UW-LCAT
  340.     The item field is used to indicate a database entry for the
  341.     current sub-menu. The label must correspond to a db_tag field in a
  342.     database description further down in the db.conf file. See below
  343.     for a description of db_tag. The same tag value can exist in more
  344.     than one place in your menu hierachy.
  345.  
  346.   separator
  347.     Indicates that a separator line should be drawn in the current
  348.     position in the menu structure. Note that Willow always creates a
  349.     separator at the top of the root Database menu, right after the
  350.     "No Database (Disconnect)" item.
  351.  
  352.   Following the menu section comes a series of database descriptions. 
  353.   
  354.   db_tag = UW-LCAT
  355.     The first field of a database description must be db_tag. It is a
  356.     unique identifier for the current database. It is for internal use
  357.     only, and is never shown to the user.
  358.   
  359.   db_name = UW Libraries Catalog
  360.     This is a possibly shortened version of the database's display
  361.     name. Its value appears in the connection status box.
  362.  
  363.   db_long = UW Libraries Catalog
  364.     A possibly longer version of the database's display name, this is
  365.     what actually appears in the Databases menu.
  366.  
  367.   driver = uwbrs
  368.     Name of driver program to be executed to connect to this database.
  369.     If the value is just a simple program name, then that program must
  370.     exist in <willow directory>/drivers. Willow will launch that
  371.     program locally, and communicate with it via a Unix pipe. 
  372.  
  373.     If the value of this field is of the form <program>:<host>:<port>,
  374.     i.e. 
  375.        driver = uwbrs:cac.washington.edu:4321
  376.     Then Willow will contact the specified machine and port, and
  377.     communicate with the driver program remotely over a network
  378.     socket. See "Socketed Drivers" for more information.
  379.  
  380.   db_int_name = LCAT
  381.     This is the database name as known to the host database system. It
  382.     is not displayed to the user at all. This name is also passed into
  383.     the help subsystem for displaying database-specific help. See
  384.     "Using Help Files" for more information.
  385.  
  386.   title_fields     = ME:19,SD:60,YR:4
  387.     Specification of database-fields to use in the title-line display
  388.     of the summary window. The value of this field is passed directly
  389.     to the driver, so its format could vary. For the UW-BRS driver,
  390.     the syntax is two-character field abbreviation, followed by colon
  391.     and width in characters, with no blanks between fields.
  392.   
  393.   summary_fields   = ME,DT,PI,SH,MH,OH,HO,OR,PR
  394.     Specification of database-fields to use in the summary text
  395.     display area of the summary window. The value of this field is
  396.     passed directly to the driver, so its format could vary. For the
  397.     UW-BRS driver, the syntax is a comma-separated list of
  398.     two-character field abbreviations, with no blanks between fields.
  399.   
  400.   extension_fields = UI,LH,IT
  401.     Specification of database-fields to use for external extension
  402.     programs. The value of this field is passed directly to the
  403.     driver, so its format could vary. For the UW-BRS driver, the
  404.     syntax is a comma-separated list of two-character field
  405.     abbreviations, with no blanks between fields. See the "Multi-Media
  406.     Extensions" section of this document for a description of how
  407.     extensions work.
  408.   
  409.     Note that the fields listed here for UW Catalog are not used in a
  410.     true extension, but extension_fields gives us a handy way of
  411.     specifying fields that are used internally by the driver, in this
  412.     case for circulation-status queries.
  413.   
  414.   extension_label   = Article View
  415.   extension_program = some_program
  416.     See "Multi-Media Extensions" for more information on this pair of
  417.     fields.
  418.   
  419.   basic_mode =
  420.     If this field appears, regardless of value, display this DB in
  421.     "Basic Searching" mode when it first comes up. Individual users
  422.     can override this by setting the noBasicMode resource (see
  423.     willow.X). 
  424.   
  425.   no_info =
  426.     If this field appears, regardless of value, do not display the
  427.     database info screen when it comes back from the driver.
  428.   
  429.   env_name = class
  430.   env_val  = uw
  431.   env_name = app_pool
  432.   env_val  = willow_secure
  433.     The env_name/env_val fields allow you to send an arbitrary list of
  434.     name/value string pairs to the database driver. An env_name must
  435.     be immediately followed by its env_val. These particular
  436.     name/value pairs are used by the UW license manager for granting a
  437.     login ticket. See "Manual Login Databases" for information about
  438.     the ManualLogin env_name. A "LicenseHost" env_val is also
  439.     available if you have your own copy of the UW license manager
  440.     running. 
  441.   
  442.   use_prev_next =
  443.     If this field appears, regardless of value, display Prev/Next
  444.     match words buttons on the Record Retrieval window.
  445.   
  446.   Following the above fields, which apply to an entire database, come
  447.   the specifications for the search fields. Do not get confused by the
  448.   overload on the word "field" here. These are fields in the db.conf
  449.   file which are used to describe the searchable fields that exist in
  450.   the database Willow is going to talk to.
  451.  
  452.   Willow knows about two types of fields. First are text fields. These
  453.   appear in a vertical column on the left-hand side of the Search
  454.   window (in advanced searching mode), and each has a corresponding
  455.   text-area for the user to enter a value. Each text-field name is
  456.   actually a pop-up menu which contains all the available fields. The
  457.   second type are limit fields. These appear at the bottom of the
  458.   Search window, and the user can simply turn them on and off with a
  459.   check-box.
  460.  
  461.   First come the descriptions of all the text fields. To describe a
  462.   text field requires two db.conf fields, but there are several
  463.   additional optional fields as well.
  464.   
  465.   t_field_name = Title
  466.     The value of t_field_name is the string that actually appears on
  467.     the Search window next to the type-in box. t_field_name is
  468.     required. 
  469.   
  470.   t_field_cmd  = .TI.
  471.     The value of t_field_cmd is passed to the driver along with
  472.     whatever the user has put into the text box. In the case of the UW
  473.     BRS driver this is normally a two-character field abbreviation
  474.     wrapped in periods. However it can be any value whatsoever, as
  475.     long as the driver will know what to do with it. t_field_cmd is
  476.     required. 
  477.   
  478.   dflt_at = 1
  479.   dflt_at = 2
  480.     This field indicates in which, if any, of the six available text
  481.     field positions this field should be displayed. Use multiple lines
  482.     with dflt_at if the field should be shown more than once. If there
  483.     is no dflt_at for this text_field then it will only be accessible
  484.     to the user if she pops-up one of the field/menus and changes the
  485.     field value. Each of "dflt_at = 1" through "dflt_at = 6" must be
  486.     used exactly once across all the text fields of each database.
  487.   
  488.   list_name = Exact Titles
  489.     Which, if any, browse-list(s) should be associated with this text
  490.     field.  If there are multiple lists, then have multiple list_name
  491.     lines.
  492.     
  493.   basic_field =
  494.     If this field appears, regardless of value, then this text field
  495.     should be shown in basic searching mode. If basic_mode was not set
  496.     above, then this field is ignored.
  497.   
  498.   basic_only = 
  499.     If this field appears, regardless of value, then this text field
  500.     should be shown *only* in basic searching mode, not in advanced.
  501.   
  502.   is_limit =
  503.     If this field appears, regardless of value, then this text field
  504.     is actually searched as a limit field. This is probably only
  505.     relevant for the BRS database driver.
  506.  
  507.   t_range_type = YEAR
  508.     Text fields can also be used for numeric/date searching. If
  509.     t_range_type is set, then instead of the text-typein area next to
  510.     the field name, there will be buttons to allow the user to pick a
  511.     range. There are four possible values, DAY, MONTH, YEAR, and
  512.     NUMERIC, which correspond to the type of dialog that will be
  513.     presented to the user.
  514.   
  515.   t_year_range    = 1989-1994
  516.     This field is only applicable if t_range_type is set to YEAR. If
  517.     so, and t_year_range is not set, then the user will have to type
  518.     in the years she wants manually. If it is set, then the indicated
  519.     range will be available on a pop-up menu.
  520.   
  521.   After specifications for the text fields come the specifications for
  522.   the limit fields. No more than four limit fields can be specified
  523.   per database. There are only two db.conf fields applicable to limit
  524.   fields. 
  525.   
  526.   l_field_name = English Only
  527.     This is the label that should be displayed next to the on/off
  528.     check box.
  529.   
  530.   l_field_cmd = LG = ENG
  531.     This is a string that gets passed verbatim to the driver if the
  532.     limit is turned on by the user.
  533.  
  534.  
  535. Section 5: Manual Login Databases
  536. =================================
  537.   Willow and its drivers can be configured to prompt the the user for
  538.   login information for secure databases. However Willow knows nothing
  539.   about the concept of user-ids and passwords.
  540.  
  541.   Instead, there is a general purpose mechanism for the driver to ask
  542.   questions directly to the user. The driver passes the text of the
  543.   question to Willow, and Willow displays it to the user in a dialog,
  544.   then sends the response back to the driver. The question can require
  545.   a response of yes/no, typed-in text, or masked text (where Willow
  546.   displays asterisks instead of the characters the user enters).
  547.  
  548.   The driver supplies an identifying tag for each question, such as
  549.   "Password" or "UserID", or whatever. Willow remembers the last
  550.   response the user made for each question for each database. If the
  551.   question is asked again during a session, Willow will enter the
  552.   user's previous response as a default. Thus for manual-login
  553.   databases you don't have to keep re-entering the same user-id and
  554.   password. If the user selects Save from the Options menu the
  555.   responses are recorded in the .willowrc file (along with the other
  556.   options the user has set). Responses are *not* recorded on disk for
  557.   masked-text queries (to avoid storing passwords in plain-text
  558.   files).
  559.  
  560.   There is also a resource "Willow*userInfo" which lets the user
  561.   predefine default answers in her .Xdefaults. See the file willow.X
  562.   for more information on this resource.
  563.  
  564.   To cause the uwbrs and z3950 drivers to ask for a user-id and
  565.   password, use the db.conf env_name "ManualLogin". I.e.
  566.     env_name        = ManualLogin
  567.     env_val         = Yes
  568.  
  569.   It does not actually matter what appears as the env_val to go with
  570.   ManualLogin. See "Database Configuration File" for more information
  571.   on the db.conf file. Note that for the z3950 driver it is possible
  572.   to just hard-code the user-id and password into the db.conf file by
  573.   using the auth_id env_name. See the file "Z39.50_Supplement" for
  574.   more information.
  575.  
  576.     
  577. Section 6: Using Help Files
  578. ===========================
  579.   Willow uses a custom-designed hierarchical help browser which
  580.   displays bitmap image files. Though Willow comes with a set of generic
  581.   help-screens, it also is capable of displaying database-specific
  582.   help. If you add new databases you may want to create your own
  583.   custom help screens to document the subtleties of searching them.
  584.  
  585.   The help files live in willow/help. The files with a .txt extension
  586.   are the help control files. Basically these files list the help
  587.   topics that will be shown to the user and the names of the bitmap
  588.   files that correspond to each topic. They can also point to other
  589.   txt files, this allows a topic to expand into a sub-menu.
  590.  
  591.   A different root-level txt file is read in depending on which Help
  592.   button the user presses on willow. Pressing help on the Search
  593.   window reads in search.txt. Pressing help on the Search window in
  594.   Basic Searching mode reads in basic.txt, while summary.txt and
  595.   full-record.txt correspond to the help buttons on the Summary and
  596.   Full-Record windows.
  597.  
  598.   The first character on a line in txt file determines what the help
  599.   system will do with it. You may want to look at help/search.txt for
  600.   examples of how these contructs are used:
  601.   # Denotes a comment. The line is ignored.
  602.   ! Starts a new help topic. The rest of line is displayed to the user
  603.     in the menu portion of the help window.
  604.   $ Means a directive, as follows:
  605.     $ help filename        
  606.       Calls subtopic file 'filename', i.e. read in a new .txt file.
  607.     $ picture filename 
  608.       Includes bitmap file 'filename' to correspond to previous topic
  609.       line. See below for more information on bitmap files.
  610.     $ if symbol
  611.       Tests if 'symbol' is defined in the symbol list passed in from
  612.       Willow. Currently Willow passes in two symbols -- the value of
  613.       the db_tag field from db.conf of the currently connected
  614.       database, and a string representation of the size that Willow is
  615.       currently running -- small, medium, large, or extra-large. See
  616.       willow.X for more information on how Willow determines its size.
  617.       It is also possible to test multiple symbols separated by a '|'
  618.       symbol. 
  619.     $ ifnot symbol
  620.       Tests if 'symbol' is not defined in the symbol list.
  621.     $ else
  622.     $ else if symbol
  623.       Companions to the $ if construct.
  624.     $ endif
  625.       Terminates an $ if construct.
  626.  
  627.   The bitmap files live in the sub-directories of help. CROS and
  628.   CROS-s contain the regular and small sized bitmap files for
  629.   cross-database help, i.e. screens that all databases share. GENERIC
  630.   is the general purpose help which is used when there is no database
  631.   specific help available. The rest of the directories correspond to
  632.   the names of the available databases.
  633.  
  634.   The bitmap files start out as standard xbm files, then they are
  635.   converted to a more compact binary format (using the xbmtobin
  636.   program found in willow/tools/xbmtobin). As discussed in
  637.   willow/README, these help screens are then compressed using the Free
  638.   Software Foundation's gzip file compression program (hence the .gz
  639.   extension). Willow can use "gunzip" to uncompress them on the fly,
  640.   or, you can pre-gunzip them all if you want save CPU but use extra
  641.   disk space.
  642.  
  643.   The original xbm files can be created by any number of tools. At UW,
  644.   we create the master help documents in FrameMaker, then use xgrab to
  645.   capture xbm images of the pages. Contact us if you would like more
  646.   information about the tools we have developed to make this process a
  647.   little less painful than it sounds.
  648.  
  649.   At some future date we hope to develop a help system that will allow
  650.   us to store the images in a mark-up language such as SGML, and
  651.   create screen images on the fly.
  652.  
  653.  
  654. Section 7: Multi-Media Extensions
  655. =================================
  656.   Willow now has the capability to work with multi-media extension
  657.   programs. This interface is still under development, and no
  658.   databases which use it are currently offered to the public. However
  659.   it is available for you to use if you wish.
  660.  
  661.   The basic idea is that you can use Willow to feed certain
  662.   data-fields of your retrieved records to an arbitrary list of
  663.   external programs. For example:
  664.   * As part of Elsevier Publication's TULIP project, UW Willow users
  665.     will soon be able to view bitmap images of the actual pages from
  666.     the journal articles they find in a Materials Science
  667.     bibliographic database.
  668.   * Even though Willow currently only handles standard ASCII text in a
  669.     single font, UW Library Catalog users will soon (?) be able to use
  670.     an external program to view bibliographic records in the proper
  671.     language for Chinese, Japanese, or Korean holdings.
  672.   * Eventually UW Willow users will be able to use an external forms
  673.     editor to request library staff to actually xerox and campus-mail
  674.     the text of interesting articles after the user finds the citation
  675.     in one of our bibliographic databases. Forms will also be
  676.     available on-line for inter-library loans of books the UW does not
  677.     have. 
  678.   * Other possibilities include using external programs to give the
  679.     user sound samples, images, animations, etc. associated with
  680.     retrieved records.
  681.  
  682.   To use an external extension program, you use the extension_fields,
  683.   extension_label, and extension_program fields in the db.conf file (as
  684.   discussed above). For example,
  685.     extension_fields  = ID,SO,II,TI,MF
  686.     extension_label   = Article View
  687.     extension_program = /usr/local/bin/uw_xviewer
  688.     extension_label   = Document Delivery
  689.     extension_program = /usr/local/bin/uw_doc_deliverer
  690.  
  691.   If any extension_label fields exists for a given database, then the
  692.   "Retrieve Full" button on the Summary window becomes a pull-down
  693.   menu, labeled "Retrieve ->". The first item on the menu does the
  694.   normal Willow full-record retrieval. For each extension_label, an
  695.   additional menu-item is created. When one of those items is
  696.   selected, the corresponding extension_program is executed. Then for
  697.   each title currently selected in the Summary window, the program is
  698.   fed, through its stdin, the values of the database fields listed in
  699.   extension_fields.
  700.  
  701.  
  702. Section 8: Socketed Drivers
  703. ===========================
  704.   As discussed in Tech-Report.ps, Willow and its database driver
  705.   generally run on the same machine, and communicate via a Unix pipe.
  706.   However it is also possible for the Willow and the driver program to
  707.   run on different machines, and communicate via a network socket.
  708.   This capability was developed to facilitate the porting of Willow to
  709.   non-Unix platforms. That way the Willow interface can be ported to
  710.   the Macintosh for example, but the driver programs can continue to
  711.   run on a Unix host, and do not need to be ported. Also, this
  712.   architecture would allow somebody to write a customized database
  713.   driver, and let outside users get at their data without having to
  714.   download and install a new driver.
  715.  
  716.   Whether Willow execs a local driver or connects over a socket is
  717.   controlled by the db.conf file (see "Database Configuration File").
  718.   If the name of the driver is followed by a ":<host name>:<port>"
  719.   then it is socket connection.
  720.  
  721.   Socketed drivers are designed to be launched by inetd. If you are
  722.   interested in configuring some socketed drivers yourself, see the
  723.   man pages for "inetd", "inetd.conf", and "services" for general
  724.   information. In your /etc/services you will need an entry along the
  725.   following lines for each driver type you want to offer. This
  726.   establishes a mapping between a port number and a named service.
  727.  
  728.     willow-uwbrs  1234/tcp    # willow uwbrs driver
  729.  
  730.   Then in inetd.conf, you will need a line like this, to establish a
  731.   mapping between the named service and an actual program to execute,
  732.   with arguments. Note that this should actually be a single long
  733.   line. 
  734.  
  735.     willow-uwbrs stream tcp nowait /usr/local/willow/drivers/uwbrs \
  736.       uwbrs -socketed -class_file /usr/local/willow/class.text 
  737.  
  738.   The command line flags available for the drivers are as follows:
  739.     -socketed:  This tells the driver that it is running under a
  740.                 socket instead of a pipe.
  741.     -debug <n>: If n is greater than 0, some debugging information is
  742.                 printed out as the driver runs.
  743.     -outfile <file>: Tells the driver to log echo and debug
  744.                 information to a named file rather than stdout/stderr.
  745.         This is the only way to see output from a socketed
  746.         driver. 
  747.     -cfg_path <path>: Tells the driver what directory to look for
  748.                 auxiliary files in. This is only used by the z3950
  749.         driver. 
  750.     -class_file <file>: Tells the driver the name of the class file
  751.                 used for determining where a client connection is
  752.                 coming from. This is used at the UW to make sure
  753.                 people from outside the UW do not gain access to our
  754.                 UW-only databases by "laundering" a connection through
  755.                 a socketed driver. See getclass.c in the uwbrs source
  756.                 for more details.
  757.  
  758.   One major caveat here -- at least under Ultrix, in your inetd.conf
  759.   file you are only allowed to specify five arguments to the program
  760.   you are starting, and the first must be the program's own name.
  761.  
  762.  
  763. Section 9: Writing Database Drivers  
  764. ===================================
  765.   As discussed in Tech-Report.ps, a database driver is the program
  766.   that translates back and forth between the Willow user interface and
  767.   a particular host database system. Right now, there are exactly two
  768.   database drivers in existence -- one which speaks the standard
  769.   Z39.50 database access protocol, and one which speaks to the BRS
  770.   search engine, as installed and customized at the UW. It is our hope
  771.   that Z39.50 will really take off, and more and more database vendors
  772.   will offer compatibility with this standard. If the database you
  773.   would like Willow to talk to does speak Z39.50, then you merely need
  774.   to set-up a db.conf entry and use the existing driver.
  775.  
  776.   However, if your database does not speak Z39.50, and the prospects
  777.   for making it do so do not look good, then you can write your own
  778.   custom driver program to allow Willow to speak to it. Since we do
  779.   not know if many people are going to be interested in doing this, we
  780.   have not yet expended a great deal of effort to make this process as
  781.   easy as it could be. If you do want to do it, you should start by
  782.   looking at the uwbrs source code. Figure out as much as you can by
  783.   yourself, then contact us for more help as needed.
  784.  
  785.