#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
%m/%d/%Y
%I:%M %p" /* Wed
01/09/2002
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'