mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
Rewritten help.php by Tim Hunt with minor fixes - SC#292; merged from MOODLE_16_STABLE
This commit is contained in:
parent
962f8a9b4e
commit
6be7abc726
1 changed files with 163 additions and 128 deletions
177
help.php
177
help.php
|
@ -1,6 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
/**
|
|
||||||
* help.php - Displays help page.
|
* help.php - Displays help page.
|
||||||
*
|
*
|
||||||
* Prints a very simple page and includes
|
* Prints a very simple page and includes
|
||||||
|
@ -12,56 +11,111 @@
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
* @package moodlecore
|
* @package moodlecore
|
||||||
*/
|
*/
|
||||||
|
require_once('config.php');
|
||||||
|
|
||||||
|
// Get URL parameters.
|
||||||
|
$file = optional_param('file', '', PARAM_PATH);
|
||||||
|
$text = optional_param('text', 'No text to display', PARAM_CLEAN);
|
||||||
|
$module = optional_param('module', 'moodle', PARAM_ALPHAEXT);
|
||||||
|
$forcelang = optional_param('forcelang', '', PARAM_SAFEDIR);
|
||||||
|
|
||||||
require_once('config.php');
|
// Start the output.
|
||||||
|
print_header();
|
||||||
|
print_simple_box_start('center', '96%');
|
||||||
|
|
||||||
$file = optional_param('file', '', PARAM_PATH);
|
// We look for the help to display in lots of different places, and
|
||||||
$text = optional_param('text', 'No text to display', PARAM_CLEAN);
|
// only display an error at the end if we can't find the help file
|
||||||
$module = optional_param('module', 'moodle', PARAM_ALPHAEXT);
|
// anywhere. This variable tracks that.
|
||||||
$forcelang = optional_param('forcelang', '', PARAM_ALPHAEXT);
|
$helpfound = false;
|
||||||
|
|
||||||
print_header();
|
if (!empty($file)) {
|
||||||
|
// The help to display is from a help file.
|
||||||
|
|
||||||
print_simple_box_start('center', '96%');
|
// Get the list of parent languages.
|
||||||
|
|
||||||
$helpfound = false;
|
|
||||||
if (empty($forcelang)) {
|
if (empty($forcelang)) {
|
||||||
$langs = array(current_language(), get_string('parentlanguage'), 'en_utf8'); // Fallback
|
$langs = array(current_language(), get_string('parentlanguage'), 'en_utf8'); // Fallback
|
||||||
} else {
|
} else {
|
||||||
$langs = array($forcelang);
|
$langs = array($forcelang);
|
||||||
}
|
}
|
||||||
if (!empty($file)) {
|
|
||||||
|
// Work through the possible languages, starting with the most specific.
|
||||||
foreach ($langs as $lang) {
|
foreach ($langs as $lang) {
|
||||||
if (empty($lang)) {
|
if (empty($lang)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Work out which directory the help files live in.
|
||||||
|
if ($lang == 'en_utf8') {
|
||||||
|
$helpdir = $CFG->dirroot;
|
||||||
|
} else {
|
||||||
|
$helpdir = $CFG->dataroot;
|
||||||
|
}
|
||||||
|
$helpdir .= "/lang/$lang/help";
|
||||||
|
|
||||||
|
// Then which file in there we should be serving.
|
||||||
if ($module == 'moodle') {
|
if ($module == 'moodle') {
|
||||||
if ($lang == 'en_utf8') {
|
$filepath = "$helpdir/$file";
|
||||||
$filepath = $CFG->dirroot .'/lang/'. $lang .'/help/'. $file;
|
|
||||||
} else {
|
} else {
|
||||||
$filepath = $CFG->dataroot .'/lang/'. $lang .'/help/'. $file;
|
$filepath = "$helpdir/$module/$file";
|
||||||
}
|
|
||||||
} else {
|
// If that does not exist, try a fallback into the module code folder.
|
||||||
if ($lang == 'en_utf8') {
|
|
||||||
$filepath = $CFG->dirroot .'/lang/'. $lang .'/help/'. $module .'/'. $file;
|
|
||||||
} else {
|
|
||||||
$filepath = $CFG->dataroot .'/lang/'. $lang .'/help/'. $module .'/'. $file;
|
|
||||||
if (!file_exists($filepath)) {
|
if (!file_exists($filepath)) {
|
||||||
$filepath = $CFG->dirroot .'/lang/en_utf8/help/'. $module .'/'. $file;
|
$filepath = "$CFG->dirroot/mod/$module/lang/$lang/help/$module/$file";
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!file_exists($filepath)) {
|
|
||||||
$filepath = $CFG->dirroot.'/mod/'.$module.'/lang/'. $lang .'/help/'. $module .'/'. $file;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_exists($filepath) and is_file($filepath) and is_readable($filepath)) {
|
// Now, try to include the help text from this file, if we can.
|
||||||
|
if (file_exists_and_readable($filepath)) {
|
||||||
$helpfound = true;
|
$helpfound = true;
|
||||||
@include($filepath); // The actual helpfile
|
@include($filepath); // The actual helpfile
|
||||||
|
|
||||||
|
// Now, we process some special cases.
|
||||||
if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) {
|
if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) {
|
||||||
// include file for each module
|
include_help_for_each_module($file, $langs, $helpdir);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The remaining horrible hardcoded special cases should be delegated to modules somehow.
|
||||||
|
if ($module == 'moodle' and ($file == 'resource/types.html')) { // RESOURCES
|
||||||
|
include_help_for_each_resource($file, $langs, $helpdir);
|
||||||
|
}
|
||||||
|
if ($module == 'moodle' and ($file == 'assignment/types.html')) { // ASSIGNMENTS
|
||||||
|
include_help_for_each_assignment_type();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Having found some help, we break out of the loop over languages.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// The help to display was given as an argument to this function.
|
||||||
|
echo '<p>'.s($text).'</p>'; // This param was already cleaned
|
||||||
|
$helpfound = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
print_simple_box_end();
|
||||||
|
|
||||||
|
// Display an error if necessary.
|
||||||
|
if (!$helpfound) {
|
||||||
|
notify('Help file "'. $file .'" could not be found!');
|
||||||
|
}
|
||||||
|
|
||||||
|
// End of page.
|
||||||
|
close_window_button();
|
||||||
|
echo '<p align="center"><a href="help.php?file=index.html">'. get_string('helpindex') .'</a></p>';
|
||||||
|
|
||||||
|
$CFG->docroot = ''; // We don't want a doc link here
|
||||||
|
print_footer('none');
|
||||||
|
|
||||||
|
// Utility function =================================================================
|
||||||
|
|
||||||
|
function file_exists_and_readable($filepath) {
|
||||||
|
return file_exists($filepath) and is_file($filepath) and is_readable($filepath);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Some functions for handling special cases ========================================
|
||||||
|
|
||||||
|
function include_help_for_each_module($file, $langs, $helpdir) {
|
||||||
|
global $CFG;
|
||||||
|
|
||||||
if (!$modules = get_records('modules', 'visible', 1)) {
|
if (!$modules = get_records('modules', 'visible', 1)) {
|
||||||
error('No modules found!!'); // Should never happen
|
error('No modules found!!'); // Should never happen
|
||||||
|
@ -78,24 +132,26 @@
|
||||||
if (empty($lang)) {
|
if (empty($lang)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($lang == 'en_utf8') {
|
|
||||||
$filepath = $CFG->dirroot .'/lang/'. $lang .'/help/'. $mod->name .'/'. $file;
|
$filepath = "$helpdir/$mod->name/$file";
|
||||||
} else {
|
|
||||||
$filepath = $CFG->dataroot .'/lang/'. $lang .'/help/'. $mod->name .'/'. $file;
|
// If that does not exist, try a fallback into the module code folder.
|
||||||
|
if (!file_exists($filepath)) {
|
||||||
|
$filepath = "$CFG->dirroot/mod/$mod->name/lang/$lang/help/$mod->name/$file";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_exists($filepath)) {
|
if (file_exists_and_readable($filepath)) {
|
||||||
echo '<hr size="1" />';
|
echo '<hr size="1" />';
|
||||||
include($filepath); // The actual helpfile
|
@include($filepath); // The actual helpfile
|
||||||
break;
|
break; // Out of loop over languages.
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Some horrible hardcoded stuff follows, should be delegated to modules to handle
|
function include_help_for_each_resource($file, $langs, $helpdir) {
|
||||||
|
global $CFG;
|
||||||
|
|
||||||
if ($module == 'moodle' and ($file == 'resource/types.html')) { // RESOURCES
|
|
||||||
require_once($CFG->dirroot .'/mod/resource/lib.php');
|
require_once($CFG->dirroot .'/mod/resource/lib.php');
|
||||||
$typelist = resource_get_resource_types();
|
$typelist = resource_get_resource_types();
|
||||||
$typelist['label'] = get_string('resourcetypelabel', 'resource');
|
$typelist['label'] = get_string('resourcetypelabel', 'resource');
|
||||||
|
@ -105,20 +161,21 @@
|
||||||
if (empty($lang)) {
|
if (empty($lang)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($lang == 'en_utf8') {
|
|
||||||
$filepath = $CFG->dirroot .'/lang/'. $lang .'/help/resource/type/'. $type .'.html';
|
$filepath = "$helpdir/resource/type/$type.html";
|
||||||
} else {
|
|
||||||
$filepath = $CFG->dataroot .'/lang/'. $lang .'/help/resource/type/'. $type .'.html';
|
if (file_exists_and_readable($filepath)) {
|
||||||
}
|
|
||||||
if (file_exists($filepath)) {
|
|
||||||
echo '<hr size="1" />';
|
echo '<hr size="1" />';
|
||||||
include($filepath); // The actual helpfile
|
@include($filepath); // The actual helpfile
|
||||||
break;
|
break; // Out of loop over languages.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($module == 'moodle' and ($file == 'assignment/types.html')) { // ASSIGNMENTS
|
|
||||||
|
function include_help_for_each_assignment_type() {
|
||||||
|
global $CFG;
|
||||||
|
|
||||||
require_once($CFG->dirroot .'/mod/assignment/lib.php');
|
require_once($CFG->dirroot .'/mod/assignment/lib.php');
|
||||||
$typelist = assignment_types();
|
$typelist = assignment_types();
|
||||||
|
|
||||||
|
@ -127,27 +184,5 @@
|
||||||
echo get_string('help'.$type, 'assignment');
|
echo get_string('help'.$type, 'assignment');
|
||||||
echo '<hr size="1" />';
|
echo '<hr size="1" />';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo '<p>'.s($text).'</p>'; // This param was already cleaned
|
|
||||||
$helpfound = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
print_simple_box_end();
|
|
||||||
|
|
||||||
if (!$helpfound) {
|
|
||||||
//$file = clean_text($file); // Keep it clean!
|
|
||||||
notify('Help file "'. $file .'" could not be found!');
|
|
||||||
}
|
|
||||||
|
|
||||||
close_window_button();
|
|
||||||
|
|
||||||
echo '<p align="center"><a href="help.php?file=index.html">'. get_string('helpindex') .'</a></p>';
|
|
||||||
|
|
||||||
$CFG->docroot = ''; // We don't want a doc link here
|
|
||||||
|
|
||||||
print_footer('none');
|
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue