#ifndef CUSTOM_H
#define CUSTOM_H

/* 
** I KNOW YOU ARE IN A HURRY, BUT YOU WILL SAVE YOURSELF A LOT OF TIME
** IF YOU READ THE FOLLOWING PARAGRAPHS CAREFULLY!!!!
**
**
** This is the customization file for Manhattan.  If you haven't already, 
** you must copy this file to 'custom.h' in the 'src' directory of your Manhattan
** installation before installing Manhattan with the 'make install' command.
**
** This file contains a number of #defines that a system administrator might want 
** to change before installing the system.
** 
** It also contains lots of comments and ideas that might not be familiar to you.
** The bottom line is that you can accept all but one of the standard settings
** if you are just getting started with Manhattan.  These default settings will
** give you:
**
**   - Group and path settings (aliases) that are consistent with the INSTALL 
**     instructions
**   - Standard Apache port numbers
**   - 'cookies' are turned off - they won't be used
**   - If you're running SSL, users can connect via an https:// prefix,
**     but they WILL NOT BE FORCED to use SSL.
**   - Passwords are encrypted using MD5 encryption.
**   - The Melange chat service will run on port 6661
**   - US-style dates and times
**   - reasonable values for miscellaneous controls.
**
** THE ONE THING YOU SHOULD CHANGE is the first item on the list, EXIT_URL, so 
** users are sent to a web site of your choice when they logout of Manhattan.
**
**
**       !!!! Do NOT REMOVE THE # SYMBOLS IN THIS FILE !!!!
** This is a 'header file' for programs written in the C programming language.
** Unlike Perl, shell scripts, or other config files you may have seen, 
** a # sign does NOT denote a comment. Comments in 'C' are enclosed
** in / * and * / (without the spaces) just as you see surrounding
** this long comment.
**
** Each configurable item starts with #define ....  The # belongs there - you 
** are not activating a feature by removing the # sign, you are breaking the 
** code :-)
**
** 'C' is a compiled language.  This means you cannot simply change an item in
** this file and have the change take effect immediately.  Instead you must
** recompile the system with something like:
**
**               make clean
**               make install
**
**  
**
**/


/** EXIT_URL determines where the user will be directed after they click
*** the logout button of the "My Manhattan" program that lists all of their
*** classrooms.  You can change it to point to any page you wish, but you will
*** probably want it to point to whatever page they used to login to Manhattan in
** the first place.
*/

#define EXIT_URL "http://manhattan.sf.net"



/** The INSTALLATION_TITLE appears on the system administrator's page.
*** You might want to change this, especially if you routinely 
*** work with several installations of Manhattan, to remind the system
*** administrator which installation he is currently working with.
**/

#define INSTALLATION_TITLE "The Manhattan Virtual Classroom"






/** MELANGE_PORT specifies the TCP/IP port the melange chat service runs on.
***
*** If you are running more than one installation of Manhattan on a single
*** server, you MUST run separate copies of melange on DIFFERENT ports,
*** for each installation.
*** 
*** Note that you must have your firewall open to allow traffic on whatever 
*** port you choose to run Melange on, or people will not be able to use chat!
**/

#define MELANGE_PORT 6661





/** HTTPD_GROUP
*** has been retired from the custom.h file starting with 
*** version 3.2.
***
*** You can safely delete the HTTPD_GROUP
*** #define from your custom.h file if you are upgrading
*** to Manhattan version 3.2. or later.
***
***
*** #define HTTPD_GROUP "www"	 THIS IS NO LONGER NECESSARY
**/
				





/**  IMAGE_PATH tells where to find the images and other
***  publicly web-accessible files used by the Manhattan
***  system.  This entry MUST match the 'Alias' set up for
***  Manhattan in your Apache's httpd.conf file.  For example,
***  if your httpd.conf file contains the directive:
***
***  Alias /manhat-images/ /home/manhat/manhat-3.0.0/images
***
*** you would set the next to:
***
*** #define IMAGE_PATH "/manhat-images/"
***
*** see the INSTALL file for further information
***
*** Get this wrong and the images will be 'broken'
**/				

#define IMAGE_PATH   "/manhat-images/" 








/** ALIAS and SBIN alias must match the corresponding lines you
*** added to your Apache httpd.conf file from following the INSTALL
*** instructions.  
***
*** ALIAS is the name of the ScriptAlias that refers to
*** Manhattan's 'bin' directory.  Example: If your httpd.conf reads
*** 
***          ScriptAlias /manhat-bin/      /home/manhat/manhat-3.0.0/bin/
***
*** then the ALIAS define should be:
**
***          #define ALIAS "manhat-bin"
***
*** If your httpd.conf reads
***
***          ScriptAlias /manhat-sbin/      /home/manhat/manhat-3.0.0/sbin/
***
*** then the SBIN_ALIAS define should be:
***
***          #define SBIN_ALIAS "manhat-sbin"
***
*** A symptom of getting this wrong:
***  - administrators will not be able to "Configure Courses"
*** 
*** See additional notes on how Manhattan derives URLs below.
**/


#define ALIAS "manhat-bin"
#define SBIN_ALIAS "manhat-sbin"






/** HTTP_PORT
*** 
*** It is recommended that you run Manhattan on a 'secure server'
*** using SSL.  Try a google search for 'apache ssl' to learn more
***
*** An Apache server running ssl allows users to connect to Manhattan
*** using the https:// prefix (instead of http://).  The usernames/
*** passwords typed in (and everything else) will be encrypted.
***
*** If you do not use ssl, it is possible for others on the Internet
*** to steal usernames/passwords.
***
*** Getting SSL working is definitely worth your time.
***
**
*** If you choose not to use SSL  AND if your Manhattan installation 
*** requires a PORT other than the default of '80', you can modify the 
*** HTTP_PORT below.  You should also set INCLUDE_SERVER_PORT_IN_URLS
*** (later in this file) to '1'
***
*** The HTTP_PORT setting is completely ignored if you enable USE_HTTPS
*** below.
***
*** This whole idea of support for non-standard server-ports has NOT 
*** been tested, but it *should* work.
**/

#define HTTP_PORT 80             /* change ONLY if you are NOT using SSL 
                                 ** and if your installation requires a 
                                 ** port other than 80 
                                 ** If you change this, also set 
                                 ** INCLUDE_SERVER_PORT_IN_URLS (below)
                                 ** to '1'
                                 */







/*** SSL settings
*** If your installation is using SSL (recommended), you'll want USE_HTTPS to be set to 1 below.
***
*** Setting USE_HTTPS to '1' does two things:
***
***  1) Any time Manhattan has to generate it's own URL back to one of its
***     programs, it will use the https:// prefix
***  2) On every access to a Manhattan program, the actual port used by the connection
***     is compared to the value of HTTPS_PORT (below).  If they don't match, the user
***     will be shown a message stating that "This is a secure server.  You must use the
***     https:// prefix." or similar.
***
*** The standard port for a SSL connection is 443.  If for some reason you've changed this in your
*** Apache installation, you should change HTTPS setting below.  If you do use a non-standard
*** HTTPS_PORT, you should probably also set the INCLUDE_SERVER_PORT_IN_URLS to '1'.
***
*** Support for non-standard HTTPS_PORT settings has NOT been tested, but it *should* work.
***
***/

#define USE_HTTPS 0      /* set to 1 to ONLY allow connections on HTTPS_PORT */
#define HTTPS_PORT 443   /* change from default 443 only if your 
                         ** installation doesn't use this default port for ssl 
                         ** If you do change this value, you might also have to
                         ** set INCLUDE_SERVER_PORT_IN_URLS (below) to '1'
                         */








/** INCLUDE_SERVER_PORT_IN_URLS
**
*** Manhattan sometimes has to generate a URL back to one of it's own
*** programs.  This happens, for example, when a person visits an attached website.
***
***
***  Recipe for generating a URL:
***
***      if USE_HTTPS (see above) is set 
***              start the URL with 'https://'
***      else
***              start the URL with 'http://'
***
***      add the value of the ServerName setting from your httpd.conf file
***
***      if INCLUDE_SERVER_PORT_IN_URLS is set
***       {
***         if USE_HTTPS is set
***             add a colon : followed by the value of HTTPS_PORT
***         else
***             add a colon : followed by the value of HTTP_PORT
***       }
***
***      add a slash / followed by the value of ALIAS (above)
***
***
***
*** Example:
***   Suppose your ServerName (as defined in Apache's httpd.conf file) is  
***                www.wiggly.edu
***   and all of the other relevant settings are as follows:
***
***             ALIAS is set to '/manhat2-bin/'
***             USE_HTTPS is set to '1'
***             HTTPS_PORT is set to '443'
***             INCLUDE_SERVER_PORT_IN_URLS is set to '0'
***
***  Then, when Manhattan needs to generate a URL to a specific program, that URL will
***  start with:
***                   https://www.wiggly.edu/manhat2-bin/
***
***
***  For most out-of-the-box installations of Apache, INCLUDE_SERVER_PORT_IN_URLS can be left at '0'
***
*** Note that you must get the appropriate ServerName setting in Apache's httpd.conf file correct.
*** Manhattan does NOT actually look for the ServerName setting in your httpd.conf file.  Instead
*** Apache automatically makes the ServerName setting available via an environment variable to all
*** CGI programs.
**/

#define INCLUDE_SERVER_PORT_IN_URLS 0    /* include either the HTTPS_PORT or HTTP_PORT in Manhattan-generated URLs */










/** COOKIES
*** Manhattan can work with or without cookies.
***
*** If cookies are disabled, the URL for each visited page
*** will include something like id=ae45rDdxiz8serDs
***
*** That randomly generated string is the session key, which
*** is passed from program to program.
***
*** If cookies are enabled, the session key seen in the URLs
*** is simply id=0  This signals Manhattan to get the session key
*** from the cookie stored on the user's system.
***
*** If seeing the session keys on the URL bothers you, and you're 
*** OK with the entire 'cookie' idea, go ahead and try it.
***
*** If you're new to Manhattan, maybe you should start with all of
*** the following set to '0' (no cookies)
***
*** Note that if you enable cookies for "students and teachers", a
*** user will NOT be able to use the same browser to login as two
*** different people.  This is commonly done when you are giving 
*** a demo of Manhattan, and you want to login as the teacher in
*** one browser window, and as a student in the class in another 
*** browser window.  If "students and teachers" cookies are enabled,
*** you can login as two different people from the same PC by using 
*** two browsers - 'teacher' uses Internet Explorer, and 'student' uses
*** Netscape, for example.
***
*** If SECURE_COOKIES and/or SUPER_SECURE_COOKIES are set to '1'
*** Manhattan will simply add the string 'secure' to the cookie.
*** This is supposed to tell the browser to send the cookie only
*** to secure websites.  If you are using a secure server (SSL), you
*** should probably use secure cookies.  
***
**/



/** cookie settings for teachers and students
**/
#define COOKIES_ENABLED 0       /* should cookies be used at all? */
#define REQUIRE_COOKIES 0       /* if COOKIES_ENABLED is set, should cookies be required?
                                ** if this is set to '0' a session will proceed without cookies
                                ** if the user's browser doesn't support them, or if 'cookies' are
                                ** turned off.
                                */
#define SECURE_COOKIES 0        /* if cookies are used, should they be 'secure' cookies?
                                ** If set the browser will send the cookie only if it's to a secure
                                ** https:// site.  Try setting this to 
                                ** '1' if you are using cookies and SSL
                                ***/





/** cookie settings for the web-based administrative programs
*** The web-based admin programs use separate cookies settings.
*** You may want to enable these to use cookies for these 
*** super-users, and leave cookies disabled for everyone else.
***
**  See comments for teacher and student cookie settings above
**/
#define SUPER_COOKIES_ENABLED 0
#define SUPER_REQUIRE_COOKIES 0 
#define SUPER_SECURE_COOKIES 0









/*** CHECK IP ADDRESSES?
**** When a user first logs in, their current IP address is
**** stored in a session file on the server.
****
**** If IP_CHECK_ENABLED is set to '1', on each visit to
**** a Manhattan page (CGI program)  the user's current IP
**** address is compared to their original IP address when 
**** they first logged in.
****
**** If the two don't match, the user is not allowed to proceed.
****
**** The rational for this feature is to prevent someone who
**** has stolen a 'session' key (see COOKIES above) from using
**** that key to gain access from another computer.
****
****      --- THIS DOES NOT WORK FOR AMERICA ONLINE ---
**** Good idea, but this check DOES NOT WORK with America Online (AOL).
**** It turns out that AOL can change a user's IP address at any time
**** while they are browsing the web. (Try a google search for 
**** 'aol ip address changes' to learn more.)  The bottom line is that
**** if you enable this feature for teachers and students, those using 
**** AOL (or other ISPs that behave similarly) will get kicked out often.
****
**** You may want to, however, turn the feature ON (set to '1') for the
**** super-users, if you know that those running the web-based admin programs
**** will not be using AOL or similarly behaving ISPs
***/


#define IP_CHECK_ENABLED 0         /* for teachers and students -leave set to '0' 
                                   ** or AOL users will get kicked out! 
                                   */

#define SUPER_IP_CHECK_ENABLED 0   /* for those logging into the web-based admin programs - 
                                   ** you can set this to '1' for increased security if 
                                   ** admins are not using AOL (or similar)
                                   */







/*** Perform DNS Lookups?
**** If set to '1', Manhattan will attempt to lookup a user's
**** host name via a call to gethostbyaddr() when the person
**** logs in.  This host name will be written to the login logs
**** available to the system administrator.
****
**** Users will benefit as well, since when they login, they'll
**** see the host name (e.g. my.isp.net) they last used to login
**** instead of simply an IP address (e.g. 200.23.33.99).
****
**** Note that this lookup is performed only once - when a user
**** first logs in - and not on every page access.
****
**** Try leaving this turned on to start.
***/

#define ENABLE_DNS_LOOKUPS 1






/** Should passwords be encrypted and if so, what encryption method 
*** should be used?
*** 
***                    PLEASE READ THIS DESCRIPTION CAREFULLY!
***
*** If ENCRYPT_PASSWORDS is COMMENTED OUT all passwords will be stored on the
*** server in "plain text".  This is a generally a bad idea, but the capability
*** is provided here, in case for some reason you disagree.
***
*** NOTE that the ENCRYPT_PASSWORDS define is different from others in this custom.h file
*** in that you must COMMENT OUT the line if you want your passwords to be stored in 
*** plain text.  Setting ENCRYPT_PASSWORDS to '0' will NOT store your passwords as plain text!
*** You must comment out the line completely, by preceding it with two forward slashes:
*** 
***   // #define ENCRYPT_PASSWORDS 1
***
*** if you want to store plain text passwords.
***
***
*** If you wisely choose to encrypt passwords (by leaving #define ENCRYPT_PASSWORDS 1 in this file)
*** you can have Manhattan use either MD5 encryption (best choice) or DES encryption (weaker)
***
*** Manhattan will attempt to use MD5 encryption if USE_MD5_ENCRYPTION is set to '1', 
*** else DES encryption will be used.  Note that IT IS (REMOTELY) POSSIBLE THAT YOUR SYSTEM 
**** DOES NOT SUPPORT MD5 encryption, which is why the option to use DES encryption is included.
***
*** It is also possible that your server does not support any encryption at all.  The Manhattan
*** code relies on the existence of the 'crypt' library, and the crypt() function within that
*** library. Type 'man 3 crypt' from a shell prompt to read all about it.
***
*** Due to export restrictions, crypt() and the crypt library may not be available in some countries
*** in which case, you probably can't get Manhattan to compile in the first place.  Do a Google
*** search for 'crypt libc export restrictions' to learn more.
***
*** In addition, it is unclear whether MD5 encryption is available in all GNU versions of the
*** crypt library.  On some systems (eg. Redhat 8) 'man crypt' lists MD5 encryption as a 'GNU extension'
*** available in glibc2.
***
*** On other systems (Redhat 6.2) no mention is made of MD5 encryption in the crypt manpage- but it
*** seems to work anyway (?)
***
*** Recommendation:
***   1) Exit to your src directory.
***   2) Type the command: make md5
***          If you get errors about not being able to find the crypt library, you're missing the 
***          crypt library and Manhattan won't compile until you get it.
***          Otherwise:
***   3) Type the command ./md5
***
***   This program should tell you whether or not MD5 encryption is available on your system.
***
***
***                 !!!DON'T CHANGE THE ENCRYPTION METHOD ON A PRODUCTION SERVER!!!!
*** YOU CANNOT CHANGE ENCRYPTION METHODS ON A PRODUCTION SERVER!!!!  Once you add one or more users
*** with one form of encryption (or no encryption at all) you cannot later change these settings
*** and expect people including yourself to be able to login!!!!!  
**/

#define ENCRYPT_PASSWORDS 1       /* COMMENT OUT this line to store passwords in plain text */
#define USE_MD5_ENCRYPTION 1      /* set to '0' to use the weaker DES encryption **/





/** How many characters of a person's ID number become part of their username?
*** When a new user is added to Manhattan (by adding them to a course) their
*** username (what they type along with their password) is automatically determined
*** as follows:
***
*** The first letter of their first name, followed by the first letter of their last
*** name, followed by LAST_N_DIGITS_OF_ID of their ID number, converted to lowercase.
*** For example, if LAST_N_DIGITS_OF_ID is set to '4' Mary Johnson, who has the student
*** ID number of 12345678 will get the username mj5678.
*** 
*** See the source file in src/manhat-lib/shared_authenticate.c
***
*** You should probably decide on this once and for all BEFORE you start adding classrooms
*** to your system.
**/

#define LAST_N_DIGITS_OF_ID  4   /* usernames are initials followed by the 
                                 ** last 'n' digits of their ID number
                                 */







/** WHEN DOES A IDLE USER's SESSION EXPIRE?
***
*** The unfortunate truth is that many users never logout.
*** If a student is working with Manhattan in a public lab, and
*** if they don't logout of Manhattan, it's possible for the next
*** person using that computer to gain control of their account.
***
*** The MAX_KEY_EXPIRE setting indicates the number of SECONDS 
*** a session can remain idle before the session is considered 
*** invalid.
*** 
*** Suppose MAX_KEY_EXPIRE is set to 1440 (seconds or 4 hours)
*** 
*** Users must click on a Manhattan command button (or link) at
*** least once every 4 hours.  If more than 4 hours elapses, the
*** next time you click on a command, you'll get a message stating
*** "It's been more than 14400 seconds since you last clicked on 
*** a command, so you've been logged out." (or similar).
***
*** That seems fair, but problems can arise with people with "always on"
*** Internet connections.  Suppose you start composing a LONG message at
*** 8 in the morning, and get back to it at 2PM.  When you click the 
*** "Send Message" button, you'll get a nasty suprise and your message 
*** won't be sent.
***
*** You can set this value as high as you want.  In my experience, no
*** one has complained about the 4 hour time limit.  Telling students/
*** teachers about the rules you set might be a good idea. 
***
*** The MAX_KEY_EXPIRE setting is also used by the "Who's on Manhattan?"
*** feature of the web-based admin program.  This program automatically
*** deletes session files that are older than MAX_KEY expire.  Anyone
*** who holds a key that is 'younger' than MAX_KEY_EXPIRE is considered
*** logged in and will appear on the list of active users.
***
*** Similarly, MAX_KEY_EXPIRE is also used by the "Clean up" program in
*** the web-based admin program.  Any temporary file in Manhattan's /tmp
*** directory will be deleted by this utility if it's older than MAX_KEY_EXPIRE
*** seconds (since it couldn't be owned by a logged-in user).
**/



#define MAX_KEY_EXPIRE 14400     /* number of seconds an account can be idle 
                                 ** before a key is expired
                                 */



/** MAX_CLIPBOARD_EXPIRE is used by the Adminstrator's Server
*** "Delete temporary files" program.  All clipboards older than this number
*** of seconds will automatically be deleted whenever the 
*** Administrator selects "Delete temporary files" from the Server menu.
*** This value should be set high, say for at least three days
***/



#define MAX_CLIPBOARD_EXPIRE 259200     /*  Clipboard content older than this number of seconds
                                        **  will be deleted when the Admin chooses to Delete temporary files
                                        **  Suggest at least 259200, which is 3 days 
                                        */  





/*** TIME AND DATE FORMAT STRINGS
****
**** If you're OK with USA-style dates and times, you can skip this
**** section.
****
**** The following #defines are used as the format specifier
**** in the C strftime() function:

 size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
                           
**** and thus control how dates and times are displayed in various places
**** throughout the system.  Use 'man strftime' from your shell prompt to
***  learn more.
****                           
****  You probably will want to modify these only if your country 
****  writes dates differently from Manhattan's country of origin, which is
****  The United States of America
****
****  For each FORMAT, the comment refers to the example of
****  Wednesday, the 9th day of January in the year 2002 at 45 minutes 
****  after 3 in the afternoon.
**/



#define MAX_TIMESTRING 80  /* IMPORTANT: Maximum # of characters generated by 
		           ** any format below must not exceed this value 
                           */

#define DOW_DATE_TIME_FORMAT "%a %m/%d/%Y %I:%M %p"   			/* Wed 01/09/2002 03:45 PM */
#define DOW_DATE_FORMAT "%a %m/%d/%Y"                 			/* Wed 01/09/2002 */
#define LONG_DOW_DATE_FORMAT "%A %B %e %Y"            			/* Wednesday January 9 2002 */
#define TIME_FORMAT "%I:%M %p"                        			/* 03:45 PM */
#define TIME_DATE_FORMAT "%I:%M %p %m/%d/%Y"          			/* 03:45 PM 01/09/2002 */   
#define SPLIT_DOW_DATE_TIME_FORMAT "%a<br />%m/%d/%Y<br />%I:%M %p" 	/* Wed<br>01/09/2002<br>03:45 PM */
#define DATE_FORMAT "%m/%d/%Y"                        			/* 01/09/2002 */
#define RFC822_DATE_FORMAT "%a, %d %b %Y %H:%M:%S %z"                   /* used as PubDate for Podcasts module RSS
                                                                        ** Mon, 13 Mar 2006 23:37:46 +0000
                                                                        */









/* HIDE_ANONYMOUS_TIMES controls whether or not the date and time a message
** posted to the Anonymous Discussion group is displayed.  Under certain 
** circumstances it is possible to deduce the identity of the person posting
** an otherwise anonymous message when the date and time the message was 
** posted is known.  Set to '1' to hide the times (recommended) or set to
** '0' to display the time anonymous messages were posted
**/

#define HIDE_ANONYMOUS_TIMES 1








/* Should the teacher be allowed to reset a student's password? 
***
** You should probably leave this set to '1'  Otherwise
** students will need to call YOU to reset their password via the
** web-based admin program every time they forget their password.
*/

#define ALLOW_PASSWORD_RESET 1







/* Should students (or teachers) be allowed to change their own passwords? 
** For most installations, leave this set to '1'.  If this is 
** set to '0' students will NOT see any "Change your password"
** buttons.  This was originally put in here to support a specific need
** at a K-12 school.
**
** More recently, it's used at Western New England College as a way to
** remove the "Change Password" buttons and links within Manhattan, since
** we're now using an external method of authenticating.
**
** YOU SHOULD PROBABLY LEAVE BOTH OF THESE SET TO '1'
*/

#define ALLOW_STUDENT_CHANGE_PASSWORD 1
#define ALLOW_TEACHER_CHANGE_PASSWORD 1





/** MYMANHATTAN_LOGS_INTO_ALL 
*** has been retired from the custom.h file starting with 
*** version 3.2.
***
*** You can safely delete the MYMANHATTAN_LOGS_INTO_ALL
*** #define from your custom.h file if you are upgrading
*** to Manhattan version 3.2. or later.
***
*** The MYMANHATTAN_LOGS_INTO_ALL was previously used to 
*** control whether or not you wanted 'red stars' to mark
*** courses with unread messages on the user's "My Manhattan"
*** pages.  Starting with v. 3.2, this is automatically done,
*** for one 'semester' group of courses at a time.
***
*** #define MYMANHATTAN_LOGS_INTO_ALL 0
**/


/** Should users be allowed to send a Post Office message to themselves?
*** You should probably set this to 0.
*** If users are allowed to send themselves Post Office messages, they
*** will very quickly figure out that this is a good way to store files 
*** on your server.  This is good, if the files are related to their 
*** studies.  It's not so good if the files are gigabytes of illegally
*** downloaded music files.
***
*** When this is set to '0' the user's name does not appear in the 
*** 'to' and 'cc' lists within the Post Office, and other checks are made
*** to ensure people aren't hacking their way around the restriction.
**/


#define ALLOW_POST_OFFICE_MSGS_TO_SELF 0





/** Should a red star be displayed on all classroom Main Menus
*** when there is someone in chat?  If this is set to '1', 
*** a red star will appear on the Chat button in all classrooms
*** whenever there is someone in chat.  Note that this red star
*** will appear when there is ANYONE in chat, whether or not they
*** are in YOUR classroom's channel.  Because of this, it is best 
*** to leave this value set to 0 to disable the feature.
*** When the feature is enabled, it tends to cause people
*** to enter the chat system just to see who's there.  They then
*** log out as soon as they realize there's no one there they want
*** to talk to.
***
*** Someday this might be improved to show the red star only when
*** there's someone in YOUR chat room.
**/

#define SHOW_REDSTAR_ON_CHAT_BUTTON 0



/** The next two #defines control what the teacher sees, and therefore, 
*** what the teacher can do, when they "Add a new student" or 
*** "Add a new teacher" from the Configuration menu of a classroom.
*** 
*** Teachers can always use add a student or teacher to their classroom
*** by searching for, then selecting from a list of users who already 
*** have centralized Manhattan accounts.  That's a default setting.
***
*** But suppose the student a teacher wants to add doesn't already have
*** a Manhattan account?  Do you want that teacher to create an entirely 
*** new account for that student?
***
*** If you set ALLOW_TEACHER_CREATE_NEW_ACCOUNT to '1', teachers will 
*** get a form that prompts them for First, Last names and the ID number 
*** of the entirely new person they want to add to the central database of 
*** users.  This form will appear only after they do a search for the
*** student, and appears whether or not the search was successful.
***
*** If this feature is turned off, by setting ALLOW_TEACHER_CREATE_NEW_ACCOUNT
*** to 0, teachers will only be able to add existing users to their classrooms.
*** They'll have to contact the system  administrator - that's you - if they 
*** need to add an entirely new student or teacher to their classroom.
***
*** The second decision to make is whether or not you want to enable teachers 
*** to get a list of students/teachers in any centralized course on the server, 
*** so they can select students from that list to add to their classroom.  This 
*** feature is useful in certain (typically K-12) environments.  It allows a 
*** teacher,  for example, to quickly add some or all students in  Mrs. Smith's 
*** Biology class to their own class.
***
*** A good reason to disable this feature is to protect the privacy of 
*** students/teachers.  When this feature is turned on, any teacher on the system 
*** can see who is enrolled in every Manhattan course on the system.  That is, a 
*** teacher can browse through the course rosters of courses other than their own.
*** 
*** Set ALLOW_TEACHER_SELECT_USER_BY_COURSE to 1 to enable this feature, 
*** and to 0 to disable this feature.
***
*** Note that both of these options are always enabled for the System Administrator.
***  That is, using Manhattan's Administration system, you can enter the configuration 
*** menu for any course - click on "Configure Courses".  When YOU "Add a student" or 
*** "Add a teacher", both of these features will be enabled, regardless of the settings 
*** in this file.
***
*** Also note that these settings apply only to centralized courses - "normal" 
*** and "course templates". Teachers can always freely add students/teachers to 
*** standalone courses, even by inventing names and ID numbers.  Teachers of 
*** standalone courses can NOT see any lists of centralized users.
**/

#define ALLOW_TEACHER_CREATE_NEW_ACCOUNT 0     /* Allow teachers to create 
                                               ** entirely new Manhattan accounts? 
                                               */

#define ALLOW_TEACHER_SELECT_USER_BY_COURSE 0  /* Allow teachers to browse other course 
                                               ** rosters to select users to add? 
                                               */




/** LOGIN LOGS
*** Manhattan records stores login records in a text file 
*** ../users/logs/log.txt
***  Data is added to this file whenever"
***     - a user logs in successfully
***     - a user tries to login with an incorrect password
***     - a user changes his password
***     - a user has had his password reset by a teacher or admin.
***
***  The logs can be viewed by the super-user using the Login Logs option
***  on the admin menu.
***  Each time ANY administrator logs in, the size of the current log.txt
***  file is checked.  If the current log.txt file is larger in bytes than
***  the next #define, the log.txt file is renamed (the log is rotated) and
***  a new, empty log.txt file is created.
***
***  Note that log rotation only occurs WHEN AN ADMINISTRATOR LOGS IN.  If 
***  you don't log in for a LONG time, and you've got a busy server, the log.txt
***  file can get larger than you want it to!
**/

#define MAX_LOGIN_LOG_SIZE 250000    /* size, in bytes, when login logs will get rotated */




/** Personal (Bio) Info
*** Manhattan's People module allows students and teachers to enter their 
*** own email address,website address, and a few (or more) words about 
*** themselves for other people in their classes to see.
***
*** For normal (centralized) courses, you can have a button on the "My Manhattan" 
*** page (the one people see when they first login) that allows them to view/edit 
*** this information.  If you'd like that button to appear within My Manhattan, set 
*** the next entry to '1', else set it to '0'.
***
*** Regardless of how the value is set, students/teachers can still view/edit this 
*** bio info from within a course's People module (if the teacher has enabled 
*** that module)
**/

#define ENABLE_VIEW_EDIT_BIO_BUTTON 1    /* show a "View/edit Personal Info" button 
                                         ** on the My Manhattan pages? 
                                         */




/** SPELL CHECKER
*** Starting with version 2.2, Manhattan includes the spell checking 
*** capabilities of James Shimada's "Speller Pages" project.  See
*** http://spellerpages.sourceforge.net
***
*** The spell checker depends on the existence of one of two spell 
*** checking programs that are  found on most Unix-like systems.
***
*** The two spelling utilities supported are called 'ispell' and
*** 'aspell'.  'ispell' is the original spell checker that's been 
*** around forever.  'aspell' is a newer program, intended to 
*** eventually replace 'ispell'.
***
*** Try typing 'aspell' at a command prompt.  If it spits back usage
*** instructions, then you've got aspell installed, and should use
*** the first set of #defines below.  If typing 'aspell' gives a
*** command not found error, then try typing 'ispell'.  If you've
*** got ispell, but not aspell, try using the second set of #defines
*** below.  If you don't have either aspell, or ispell you should 
*** install one of them (aspell is much preferred see -
*** http://aspell.sourceforge.net ), or else the spell-check feature
*** won't work.
**/

#define SPELL_CHECK_ENABLED 1  /* if set to 0, the spell-check feature
                               ** will be completely disabled.
                               */

/** Uncomment ONE of the two following sets of defines!  ***/


/* recommended #defines if you have 'aspell' installed */
#define ASPELL_PATH "aspell"
#define ASPELL_ARGS "-a --lang=en_US"

/** these #defines should work if you have 'ispell' installed **/

// commented-out #define ASPELL_PATH "ispell"
// commented-out #define ASPELL_ARGS "-a"



/** SUPPORT for old versions of Post Office
*** The Post Office module was refurbished starting with version
*** 2.4.  The delivery of Post Office messages is handled differently
*** Despite the many internal changes, the introduction of Manhattan
*** 2.4 was backward compatible with (most) prior versions.
***
*** The next define controls whether Manhattan should look for messages
*** created with earlier versions of Manhattan when users enter the Post
*** Office.  
***
***EVERYTHING WILL ALWAYS WORK FINE if the following is set
** to '1', however your server will have to work a *tiny* bit harder every time
** a user enters the Post Office.
**
** IF you are sure that no Post Office messages have been created with 
** Manhattan versions before 2.4, you can set the following to '0'.
** When set to zero, Manhattan skips a step looking for old-style messages,
** reducing overhead a tiny bit.
**
** Manhattan Post Office messages will ALWAYS work if the next is set to '1'.
** Setting it to '0' simply eliminates a few function calls that check for
** pre 2.4 Post Office messages.
*/



#define SUPPORT_PRE24_POST_OFFICE_MSGS 1   /* Change to 0 only if you are certain all Post Office messages were
                                           ** written using Manhattan 2.4 or later
                                           */




#define SUPPORT_PRE32_USER_INBOXES 1       /* Change to 0 only if you are certain this installation contains no 
                                           ** messages written using any version of Manhattan earlier than 3.2
                                           */



/** EDITOR WIDTH
*** Manhattan messages are typed into an HTML 'textarea', which appears as
*** a rectangular box on the user's screen.  Since the earliest versions of
*** Manhattan, the width of this box was set to '70'.  This was a reasonable 
*** value, since it fit well on all monitor resolutions and printers.
*** Some teachers might want to use a wider text box.  Wider text areas have
*** the advantage of enabling users to type in long URLs (http://.....) on a
*** single line, so they get properly converted to 'clickable' links in the 
*** delivered message.  A wider text area is also useful for teaching computer
*** programming, since 'source code' can be pasted in without wrapping.
***
*** The downside of a wider text area is that the text boxes won't display 
*** well for users with low resolution monitors.  Also printing messages
*** can be a problem, since most printers will cut off the right side of long
*** lines.
***
*** The following set of #defines allow you to decide, at install time, whether
*** or not you want teachers to be able to select from one of four width settings.
*** The option appears under the first item of the Configuration Menu for teachers -
*** on the same page used to select modules
**/

#define ENABLE_EDITOR_WIDTH_SELECTION 0   /* Allow teachers to choose from one of the
                                          ** four text area widths listed below?   When
                                          ** set to '0', teachers don't get a choice, and
                                          ** all editor widths become 
                                          ** EDITOR_WIDTH_STANDARD
                                          **/

/** next four determine the choices available to the
*** teacher, when ENABLE_EDITOR_WIDTH_SELECTION (above) is
** set to '1'
*/

#define EDITOR_WIDTH_STANDARD 70      /* This is the standard editor width - you probably
                                      ** should leave this set to 70 - 
                                       */

#define EDITOR_WIDTH_MEDIUM   85      /* 'Medium' width */
#define EDITOR_WIDTH_LARGE    105     /* 'Wider' width */
#define EDITOR_WIDTH_XLARGE   120     /* 'Widest' width */





/** THEMES 
*** Starting with version 3, Manhattan uses the Clearsilver HTML templating toolkit
*** see http://www.clearsilver.net.  This toolkit allows Manhattan to have more 
*** than one 'theme', which can be an entirely different look and feel.  
***
*** A theme is a collection of Clearsilver template files, image files, possibly
*** CSS stylesheets, and language files.  These files are stored in directories
*** named ../images/theme_N where N is an integer.  
***
*** The next item defines the default theme - that is, what theme should be used
*** for the "My Manhattan" page (the page that lists all of a user's courses) and
*** for within a classroom when a teacher has not specified an alternate theme.
***
*** NOTE that Manhattan 3.0, 3.1  ships with only one theme, theme_0, so you really don't
*** have a choice if this is version 3.0 or 3.1
***
*** Recommendation: unless you have a theme you'd like to make standard on your 
*** installation, leave the next value set to '0'
***
**/

#define DEFAULT_THEME 0





/** TEXTAREA WRAP="HARD"
*** Users compose messages within an HTML element called a 
*** textarea.  Prior to version 3 of Manhattan, the attribute
*** wrap="hard" was included in the html for all textareas.  The new
*** versions don't require this attribute, which is no longer part of
*** the HTML standard, but we thought it would be a good idea to allow
*** an installer to switch back to the older method.
***
*** Recommendation: leave the next value set to '0'
**/

#define USE_TEXTAREA_HARD_WRAP 0   /* if set to '0' <textarea wrap="virtual"> 
                                   ** otherwise     <textarea wrap="hard">
                                   */




/** Do you want the run time of Manhattan's CGI programs to appear
*** as a comment at the bottom of all HTML pages it produces?
***
*** Once you get Manhattan installed, view the HTML source for a
*** page it produces.  You'll see two HTML comments at the very bottom,
*** 
*** for example:
***
***   <!-- 0.003 -->
***   <!-- 0.002:0 ->
***
*** The first comment is controlled by the next #define, and is the 
*** time in seconds the actual C program took to execute, before it
*** passes control to the Clearsilver library that actually generates
*** the HTML.
***
*** The second comment is written by the Clearsilver library, regardless
*** of how the next #define is set.  It indicates the time in seconds
*** it took to parse the Clearsilver template and send the HTML back
*** through Apache.  The ':0' following the time means that the HTML
*** was not compressed before it was delivered to your browser, which is
*** always the case within Manhattan.
***
*** Recommendation:  Leave the next value set to '1', since the execution
*** time could be useful, and calculating the time adds a negligible amount
*** of overhead.
**/

#define RECORD_RUN_TIME 1          /* record execution time of programs to the HDF data set? */





/** EXPERIMENTAL STUFF
*** There are a few not-fully-developed features that we find are 
*** best kept hidden until all the bugs are worked out.
***
*** The following #defines control whether or not to display the links
*** within the Administrative system
**/

#define ENABLE_FACULTY_COURSE_REQUEST 0      /* currently useful for Western New England College only
                                             ** Allow faculty to request courses online?
                                             */
                                             
#define MANHATTAN_SERVER_IP "X.X.X.X"         /* currently useful for Western New England College only
                                              ** Certain programs related to the automatic creation of courses
                                              ** will only work if called from this IP address
                                              */

  
  
#endif
