]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-7442 Changed search order for help files to be more consistent with language...
authordwoolhead <dwoolhead>
Fri, 12 Jan 2007 12:29:42 +0000 (12:29 +0000)
committerdwoolhead <dwoolhead>
Fri, 12 Jan 2007 12:29:42 +0000 (12:29 +0000)
help.php

index 330712ff710b80b38c0c1a6f1886f4830e6e7a04..216db38431656dfa851a2d84200e8b23888b0dd4 100644 (file)
--- a/help.php
+++ b/help.php
@@ -37,8 +37,10 @@ if (!empty($file)) {
         // _local language packs take precedence
         $xlangs = array();
         foreach ($langs as $lang) {
-            $xlangs[] = $lang . '_local';
-            $xlangs[] = $lang;
+            if (!empty($lang)) {
+                $xlangs[] = $lang . '_local';
+                $xlangs[] = $lang;
+            }
         }
         $langs = $xlangs;
         unset($xlangs);
@@ -46,53 +48,59 @@ if (!empty($file)) {
         $langs = array($forcelang);
     }
 
-    // Work through the possible languages, starting with the most specific.
-    foreach ($langs as $lang) {
-        if (empty($lang)) {
-            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') {
-            $filepath = "$helpdir/$file";
-        } else {
-            $filepath = "$helpdir/$module/$file";
-
-            // If that does not exist, try a fallback into the module code folder.
-            if (!file_exists($filepath)) {
-                $filepath = "$CFG->dirroot/mod/$module/lang/$lang/help/$module/$file";
-            }
+// Define possible locations for help file similar to locations for language strings
+// Note: Always retain module directory as before
+    $locations = array();
+    if ($module == 'moodle') {
+        $locations[$CFG->dataroot.'/lang/'] = $file;
+        $locations[$CFG->dirroot.'/lang/'] = $file;
+    } else {
+        $modfile = $module.'/'.$file;
+        $locations[$CFG->dataroot.'/lang/'] = $modfile;
+        $locations[$CFG->dirroot.'/lang/'] = $modfile;
+
+        if (strpos($module, 'block_') === 0) {  // It's a block help file
+            $block = substr($module, 6);
+            $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;
         }
+    }
 
-        // Now, try to include the help text from this file, if we can.
-        if (file_exists_and_readable($filepath)) {
-            $helpfound = true;
-            @include($filepath);   // The actual helpfile
+    // Work through the possible languages, starting with the most specific.
+    while (!$helpfound && (list(,$lang) = each($langs)) && !empty($lang)) {
 
-            // Now, we process some special cases.
-            if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) {
-                include_help_for_each_module($file, $langs, $helpdir);
-            }
+        while (!$helpfound && (list($locationprefix,$locationsuffix) = each($locations))) {
+            $filepath = $locationprefix.$lang.'/help/'.$locationsuffix;
 
-            // 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();
+            // Now, try to include the help text from this file, if we can.
+            if (file_exists_and_readable($filepath)) {
+                $helpfound = true;
+                @include($filepath);   // The actual helpfile
+
+                // Now, we process some special cases.
+                $helpdir = $locationprefix.$lang.'/help';
+                if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) {
+                    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;
         }
+        reset($locations);
     }
 } else {
     // The help to display was given as an argument to this function.
@@ -161,7 +169,7 @@ function include_help_for_each_resource($file, $langs, $helpdir) {
     global $CFG;
 
     require_once($CFG->dirroot .'/mod/resource/lib.php');
-    $typelist = resource_get_resource_types();
+    $typelist = resource_get_types();
     $typelist['label'] = get_string('resourcetypelabel', 'resource');
 
     foreach ($typelist as $type => $name) {