#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'