MDL-7442 Changed search order for help files to be more consistent with language files (backwards compatible)

This commit is contained in:
dwoolhead 2007-01-12 12:29:42 +00:00
parent a840456731
commit 20cc8f6066

View file

@ -37,47 +37,56 @@ if (!empty($file)) {
// _local language packs take precedence // _local language packs take precedence
$xlangs = array(); $xlangs = array();
foreach ($langs as $lang) { foreach ($langs as $lang) {
if (!empty($lang)) {
$xlangs[] = $lang . '_local'; $xlangs[] = $lang . '_local';
$xlangs[] = $lang; $xlangs[] = $lang;
} }
}
$langs = $xlangs; $langs = $xlangs;
unset($xlangs); unset($xlangs);
} else { } else {
$langs = array($forcelang); $langs = array($forcelang);
} }
// Work through the possible languages, starting with the most specific. // Define possible locations for help file similar to locations for language strings
foreach ($langs as $lang) { // Note: Always retain module directory as before
if (empty($lang)) { $locations = array();
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') {
$filepath = "$helpdir/$file"; $locations[$CFG->dataroot.'/lang/'] = $file;
$locations[$CFG->dirroot.'/lang/'] = $file;
} else { } else {
$filepath = "$helpdir/$module/$file"; $modfile = $module.'/'.$file;
$locations[$CFG->dataroot.'/lang/'] = $modfile;
$locations[$CFG->dirroot.'/lang/'] = $modfile;
// If that does not exist, try a fallback into the module code folder. if (strpos($module, 'block_') === 0) { // It's a block help file
if (!file_exists($filepath)) { $block = substr($module, 6);
$filepath = "$CFG->dirroot/mod/$module/lang/$lang/help/$module/$file"; $locations[$CFG->dirroot .'/blocks/'.$block.'/lang/'] = $block.'/'.$file;
} else if (strpos($module, 'report_') === 0) { // It's a report help file
$report = substr($module, 7);
$locations[$CFG->dirroot .'/'.$CFG->admin.'/report/'.$report.'/lang/'] = $report.'/'.$file;
$locations[$CFG->dirroot .'/course/report/'.$report.'/lang/'] = $report.'/'.$file;
} else if (strpos($module, 'format_') === 0) { // Course format
$format = substr($module,7);
$locations[$CFG->dirroot .'/course/format/'.$format.'/lang/'] = $format.'/'.$file;
} else { // It's a normal activity
$locations[$CFG->dirroot .'/mod/'.$module.'/lang/'] = $module.'/'.$file;
} }
} }
// Work through the possible languages, starting with the most specific.
while (!$helpfound && (list(,$lang) = each($langs)) && !empty($lang)) {
while (!$helpfound && (list($locationprefix,$locationsuffix) = each($locations))) {
$filepath = $locationprefix.$lang.'/help/'.$locationsuffix;
// Now, try to include the help text from this file, if we can. // Now, try to include the help text from this file, if we can.
if (file_exists_and_readable($filepath)) { 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. // Now, we process some special cases.
$helpdir = $locationprefix.$lang.'/help';
if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) { if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) {
include_help_for_each_module($file, $langs, $helpdir); include_help_for_each_module($file, $langs, $helpdir);
} }
@ -89,11 +98,10 @@ if (!empty($file)) {
if ($module == 'moodle' and ($file == 'assignment/types.html')) { // ASSIGNMENTS if ($module == 'moodle' and ($file == 'assignment/types.html')) { // ASSIGNMENTS
include_help_for_each_assignment_type(); include_help_for_each_assignment_type();
} }
// Having found some help, we break out of the loop over languages.
break;
} }
} }
reset($locations);
}
} else { } else {
// The help to display was given as an argument to this function. // The help to display was given as an argument to this function.
echo '<p>'.s($text).'</p>'; // This param was already cleaned echo '<p>'.s($text).'</p>'; // This param was already cleaned
@ -161,7 +169,7 @@ function include_help_for_each_resource($file, $langs, $helpdir) {
global $CFG; global $CFG;
require_once($CFG->dirroot .'/mod/resource/lib.php'); require_once($CFG->dirroot .'/mod/resource/lib.php');
$typelist = resource_get_resource_types(); $typelist = resource_get_types();
$typelist['label'] = get_string('resourcetypelabel', 'resource'); $typelist['label'] = get_string('resourcetypelabel', 'resource');
foreach ($typelist as $type => $name) { foreach ($typelist as $type => $name) {