]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-14286: Help popup now includes title of help page in window <title>
authorsam_marshall <sam_marshall>
Thu, 10 Apr 2008 11:50:52 +0000 (11:50 +0000)
committersam_marshall <sam_marshall>
Thu, 10 Apr 2008 11:50:52 +0000 (11:50 +0000)
help.php

index 1ec4ab06ccc2ad583ffae334ce85ab6f1cfa9652..5d034a5aaeaedc486e3e733b493a3cc725b3d64b 100644 (file)
--- a/help.php
+++ b/help.php
@@ -20,15 +20,14 @@ $module = optional_param('module', 'moodle', PARAM_ALPHAEXT);
 $forcelang = optional_param('forcelang', '', PARAM_SAFEDIR);
 $skiplocal = optional_param('skiplocal', 0, PARAM_INT);     // shall _local help files be skipped?
 
-// Start the output.
-print_header(get_string('help'));
-print_simple_box_start();
-
 // We look for the help to display in lots of different places, and
 // only display an error at the end if we can't find the help file
 // anywhere. This variable tracks that.
 $helpfound = false;
 
+// Buffer output so that we can examine it later to extract metadata (page title)
+ob_start();
+
 if (!empty($file)) {
     // The help to display is from a help file.
 
@@ -118,6 +117,33 @@ if (!empty($file)) {
     $helpfound = true;
 }
 
+// Finish buffer
+$output=ob_get_contents();
+ob_end_clean();
+
+// Determine title
+$title=get_string('help'); // Default is just 'Help'
+$matches=array();
+// You can include a <title> tag to override the standard behaviour:
+// 'Help - title contents'. Otherwise it looks for the text of the first
+// heading: 'Help - heading text'. If there aren't even any headings
+// you just get 'Help'
+if(preg_match('~^(.*?)<title>(.*?)</title>(.*)$~s',$output,$matches)) {
+    // Extract title
+    $title=$title.' - '.$matches[2]; 
+    // Strip title from output
+    $output=$matches[1].$matches[3];
+} else if(preg_match('~<h[0-9]+(\s[^>]*)?>(.*?)</h[0-9]+>~s',$output,$matches)) {
+    // Use first heading as title (obviously leave it in output too). Strip
+    // any tags from inside
+    $matches[2]=preg_replace('~<[^>]*>~s','',$matches[2]);
+    $title=$title.' - '.$matches[2];
+}
+
+// Do the main output.
+print_header($title);
+print_simple_box_start();
+print $output;
 print_simple_box_end();
 
 // Display an error if necessary.