[[PageOutline]] = Web site customization = == Customizing the default web site == When you create a BOINC project using [MakeProject make_project], a web site is created for you. This consists of a front page (`html/user/index.php`), which links to pages where users can log in, edit preferences, create profiles, and so on. Before your project goes public, you'll want to change this web site as follows: * Add and alter content: * Edit the main page (`index.php`). * Add new pages, linked to from the main page. These might describe your project's research, its leadership team, etc. Typically these are .php files of the form {{{ }}} * Customize page headers and footers (see below). * Set config options (see below). * Give the web site a graphical identity (fonts, color scheme). Do this [StyleSheets using CSS stylesheets]. Try to do a good job; your web site has a large impact on your project's ability to [VolunteerRecruit recruit and retain participants]. == Web configuration file == The file `html/project/project.inc` serves as a configuration file for your web site. It exists in a separate directory (html/project) so that you can put all project-specific web files there (create symbolic links from `html/inc` and `html/user`). You should put this directory under version control (SVN or CVS). The file `project.inc` is generated by [MakeProject make_project] with default values. Edit this file to customize the constants and functions it contains. === Constants === '''PROJECT''':: The name of your project '''URL_BASE''':: Base URL for web pages (usually same as master_url defined in config.xml). '''SECURE_URL_BASE''':: (optional) URL prefix for forms with passwords. If your web server supports HTTPS, set this accordingly. '''STYLESHEET''':: Name of stylesheet file (such as `white.css`) '''STYLESHEET2''':: Name of an optional project supplied stylesheet. '''SHORTCUT_ICON''':: Path (relative to html/user) of icon file shown in web browser tabs. '''IMAGE_PATH''':: relative path to user-uploaded profile images (default: ../user_profile/images/) '''IMAGE_URL''':: url path to above defined path, is appended to URL_BASE (default: user_profile/images/) '''PROFILE_PATH''':: relative path to user profiles (default: ../user_profile/) '''PROFILE_URL''':: url path to user profiles, is appended to URL_BASE (default: user_profile/) '''LANGUAGE_FILE''':: name of a text file that contains language names that are shown in a selection box to the user at his profile. File is expected in html/user. (default: languages.txt) '''COPYRIGHT_HOLDER''':: Name of copyright holder '''SYS_ADMIN_EMAIL''':: Users are directed here if they have complaints about message-board moderation. '''UOTD_ADMIN_EMAIL''':: Messages about user-of-the-day running low are sent here. '''UOTD_THRESHOLD''':: Send email if # of UOTD candidates falls below this (default 7) '''POST_REPORT_EMAILS''':: Moderation-related emails (such as user complaints) are sent here. '''INVITE_CODES''':: Regular expression used for [AccountControl controlling account creation]. '''EMAIL_FROM''':: 'from' address for emails '''EMAIL_FROM_NAME''':: 'from' name for emails '''COUNTRY_FLAGS''':: If defined, show country flags in forums. Steps: * Download flag images from http://www.famfamfam.com/lab/icons/flags/famfamfam_flag_icons.zip * Put the .png's in html/user/flags/ * Put `define("COUNTRY_FLAGS", 1);` in your html/project/project.inc '''FORUM_QA_MERGED_MODE''':: Set this to true to merge Message boards and Q&A section '''NO_MYSQLI''':: Set this to true if your web site includes custom PHP script that use the old (and now deprecated) mysql_* MySQL interface. The following constants, if defined as '''true''', turn off web features involving user-supplied content. This eliminates having to deal with spammers. '''DISABLE_TEAMS''':: Turn off team-related features. '''DISABLE_PROFILES''':: Turn off profile-related features. '''DISABLE_FORUMS''':: Turn off forums. Project admins can still post and edit news items; there's a link to this in the project admin page. '''DISABLE_BADGES''':: Don't show badges. Certificate-related constants: '''CERT_SIGNATURE''':: Signature image filename '''CERT_DIRECTOR_NAME''':: Name of project director '''CERT_PROJECT_LOGO''':: Project logo image filename (if any) '''CERT_INSTITUTION_LOGO''':: Institution logo image filename (if any) Variables: '''$banned_email_domains''':: An array of strings. An account's email address may not end with any of these strings. === Functions === '''project_banner()''':: Prints page header '''project_footer()''':: Prints page footer '''donations_intro()''':: Displays customized donation information. Useful to describe what the project uses donations for, and project specific guides for donations. If function is not defined, standard donation information is displayed.html/user/donations.php. '''project_form_post_info($forum)''':: return a string describing instructions for a particular forum (e.g. how to post in Questions and problems). '''project_forum_post_rules()''':: return a string describing message board policies. '''project_rules_policies()''':: Displays customized project rules and policies. If return value is ''true'', standard rules and policies are appended. If function is not defined, default rules and policies are displayed. '''project_user_links($user)''':: Return project-specific text to be shown after user name. '''project_user_page_private()''':: Prints project-specific text on private user page '''project_user_summary()''':: Prints project-specific text on user page '''project_workunit($wu)''':: Prints project-specific text on workunit page '''server_status_project_info()''':: Prints project-specific info on server status page (server_status.php). '''show_profile_heading1(), show_profile_heading2()''':: Text on user profile page '''show_profile_question1(), show_profile_question2()''':: Text on user profile page To use [https://github.com/PHPMailer/PHPMailer PHPMailer] (the preferred way to send emails to participants), you must download PHPMailer and put it in PROJECT/html/inc/phpmailer (i.e. the files class.smtp.php and class.phpmailer.php should be in that directory). Then modify the following function: '''make_php_mailer()''':: return a PHPMailer object with authentication information (see ServerIntro#PHPMailer), used when the above is set to true. If you do not define '''make_php_mailer()''' then e-mail to participants can still be sent, but it will use PHP's simpler '''mail()''' function.