Web site customization
Customizing the default web site
When you create a BOINC project using 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
- Edit the main page (
<?php
require_once("../inc/util.inc");
page_head("Title");
... content
page_tail();
?>
-
Customize page headers and footers (see below).
-
Set config options (see below).
-
Give the web site a graphical identity (fonts, color scheme). Do this using CSS stylesheets.
Try to do a good job; your web site has a large impact on your project's ability to 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 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.
HEAD_EXTRA
:
Put this text at the start of the <head> element on each web page.
Use this e.g. for the scripts used by Web analytics engines.
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 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.
NO_COMPUTING
:
If set to true, this project doesn't do computing; remove web content accordingly.
USER_HOME
:
Filename of user home page; default is "home.php".
WELCOME_PAGE
:
Filename of the welcome page; default is "welcome.php".
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.
POSTAL_CODE
:
If set to true, ask users for their postal code and store in DB.
This is not the default because it can be seen as a privacy issue.
NO_USER_URL
:
If set to true, don't ask for or show the URL of personal web site.
NO_USER_COUNTRY
:
If set to true, don't ask for or show user's country.
Certificate-related constants
Users can view and download 'certificates' showing when they joined
and how much credit they have.
These are generated by cert1.php
, cert_team.php
, and cert_all.php
.
You can add project-specific content using these constants:
CERT_SIGNATURE
:
Signature image filename
CERT_DIRECTOR_NAME
:
Name of project director
CERT_PROJECT_LOGO
:
Project logo image filename
CERT_INSTITUTION_LOGO
:
Institution logo image filename
Variables
$banned_email_domains
:
An array of strings. An account's email address may not end with any of these strings.
Customizing web content
You can customize web site content by defining the functions below. NOTE: IF YOU NEED TO CUSTOMIZE ANYTHING ELSE, LET US KNOW. MODIFYING BOINC PHP FILES SHOULD BE AVOIDED AT ALL COSTS.
project_banner()
:
Prints page header
project_footer()
:
Prints page footer
Optional functions:
donations_intro()
:
Show donation information.
Describe what the project uses donations for, and show guidelines for donations.
If function is not defined, standard donation information is displayed.
Called from 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_result($result)
:
Print project-specific text on result page
project_rules_policies()
:
Show general rules and policies
(e.g. don't run BOINC on someone else's computer without permission).
If return value is true, standard rules and policies are appended.
If function is not defined, default rules and policies are displayed.
project_user_credit($user)
:
Print table row for project-defined credit info.
project_user_links($user)
:
Return HTML to be shown after user name (e.g. donation icons).
project_user_page_private($user)
:
Print project-specific content on private user page
project_user_summary_public($user)
:
Print project-specific table row 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
show_user_donations_private($user)
:
Print table row describing donations, shown only to user.
show_user_page_private($user)
:
Print project-specific info at bottom of private user page.
project_forum_index_intro()
:
Print a project-specific intro on the forum index page.
Sending email
Various BOINC functions (e.g. notifications and mass emails) send emails to volunteers. You can choose among 3 mechanisms for sending emails.
PHPMailer
PHPMailer
is a 3rd-party PHP library for sending emails.
To use it,
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 define the function make_php_mailer()
in your project.inc
.
It must return a PHPMailer object with authentication information
(see ServerIntro#PHPMailer),
The Linux 'mail' command
To use this, set the constant EMAIL_USE_CMD
in your
project.inc
.
The PHP mail() function
If you do neither of the above, BOINC will use
the PHP mail()
function.