diff --git a/mod/data/edit.php b/mod/data/edit.php
index 73dfaad3c22..15526345708 100644
--- a/mod/data/edit.php
+++ b/mod/data/edit.php
@@ -122,8 +122,18 @@ if ($rid) {
}
$PAGE->add_body_class('mediumwidth');
-$PAGE->set_title($data->name);
-$PAGE->set_heading($course->fullname);
+if ($rid) {
+ $pagename = get_string('editentry', 'data');
+} else {
+ $pagename = get_string('newentry', 'data');
+}
+$PAGE->navbar->add($pagename);
+$titleparts = [
+ $pagename,
+ format_string($data->name),
+ format_string($course->fullname),
+];
+$PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
$PAGE->force_settings_menu(true);
$PAGE->set_secondary_active_tab('modulepage');
$PAGE->activityheader->disable();
@@ -184,11 +194,7 @@ echo '';
echo '';
echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide');
-if (!$rid){
- echo $OUTPUT->heading(get_string('newentry','data'));
-} else {
- echo $OUTPUT->heading(get_string('editentry','data'));
-}
+echo $OUTPUT->heading($pagename);
$template = $manager->get_template($mode);
echo $template->parse_add_entry($processeddata, $rid, $datarecord);
diff --git a/mod/data/export.php b/mod/data/export.php
index 1dbac6203ff..c9ee8b3dd52 100644
--- a/mod/data/export.php
+++ b/mod/data/export.php
@@ -124,13 +124,19 @@ if ($mform->is_cancelled()) {
// Build header to match the rest of the UI.
$PAGE->add_body_class('mediumwidth');
-$PAGE->set_title($data->name);
+$pagename = get_string('exportentries', 'data');
+$titleparts = [
+ $pagename,
+ format_string($data->name),
+ format_string($course->fullname),
+];
+$PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
$PAGE->set_heading($course->fullname);
$PAGE->force_settings_menu(true);
$PAGE->set_secondary_active_tab('modulepage');
$PAGE->activityheader->disable();
echo $OUTPUT->header();
-echo $OUTPUT->heading(get_string('exportentries', 'data'));
+echo $OUTPUT->heading($pagename);
groups_print_activity_menu($cm, $url);
diff --git a/mod/data/field.php b/mod/data/field.php
index 0c8d37c2f88..fd2137638e2 100644
--- a/mod/data/field.php
+++ b/mod/data/field.php
@@ -93,7 +93,6 @@ require_capability('mod/data:managetemplates', $context);
$actionbar = new \mod_data\output\action_bar($data->id, $PAGE->url);
$PAGE->add_body_class('mediumwidth');
-$PAGE->set_title(get_string('course') . ': ' . $course->fullname);
$PAGE->set_heading($course->fullname);
$PAGE->activityheader->disable();
@@ -224,7 +223,12 @@ switch ($mode) {
}
} else {
-
+ $titleparts = [
+ get_string('deletefield', 'data'),
+ format_string($data->name),
+ format_string($course->fullname),
+ ];
+ $PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
data_print_header($course,$cm,$data, false);
echo $OUTPUT->heading(get_string('deletefield', 'data'), 2, 'mb-4');
@@ -303,26 +307,34 @@ asort($menufield); //sort in alphabetical order
$PAGE->force_settings_menu(true);
$PAGE->set_pagetype('mod-data-field-' . $newtype);
+$titleparts = [
+ format_string($data->name),
+ format_string($course->fullname),
+];
if (($mode == 'new') && (!empty($newtype))) { // Adding a new field.
- data_print_header($course, $cm, $data,'fields');
+ array_unshift($titleparts, get_string('newfield', 'data'));
+ $PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
+ data_print_header($course, $cm, $data, 'fields');
echo $OUTPUT->heading(get_string('newfield', 'data'));
$field = data_get_field_new($newtype, $data);
$field->display_edit_field();
} else if ($mode == 'display' && confirm_sesskey()) { /// Display/edit existing field
- data_print_header($course, $cm, $data,'fields');
+ array_unshift($titleparts, get_string('editfield', 'data'));
+ $PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
+ data_print_header($course, $cm, $data, 'fields');
echo $OUTPUT->heading(get_string('editfield', 'data'));
$field = data_get_field_from_id($fid, $data);
$field->display_edit_field();
} else { /// Display the main listing of all fields
+ array_unshift($titleparts, get_string('managefields', 'data'));
+ $PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
$hasfields = $manager->has_fields();
-
// Check if it is an empty database with no fields.
if (!$hasfields) {
- $PAGE->set_title($data->name);
echo $OUTPUT->header();
echo $renderer->render_fields_zero_state($manager);
echo $OUTPUT->footer();
diff --git a/mod/data/field/latlong/kml.php b/mod/data/field/latlong/kml.php
index 34394402415..03f7c880866 100644
--- a/mod/data/field/latlong/kml.php
+++ b/mod/data/field/latlong/kml.php
@@ -76,15 +76,7 @@ if ($rid) {
require_course_login($course, true, $cm);
$context = context_module::instance($cm->id);
-
-/// If it's hidden then it's don't show anything. :)
-if (empty($cm->visible) and !has_capability('moodle/course:viewhiddenactivities', $context)) {
- $PAGE->set_title($data->name);
- echo $OUTPUT->header();
- notice(get_string("activityiscurrentlyhidden"));
-}
-
-/// If we have an empty Database then redirect because this page is useless without data
+// If we have an empty Database then redirect because this page is useless without data.
if (has_capability('mod/data:managetemplates', $context)) {
if (!$DB->record_exists('data_fields', array('dataid'=>$data->id))) { // Brand new database!
redirect($CFG->wwwroot.'/mod/data/field.php?d='.$data->id); // Redirect to field entry
diff --git a/mod/data/import.php b/mod/data/import.php
index 8adfb706ca7..37b52c795d4 100644
--- a/mod/data/import.php
+++ b/mod/data/import.php
@@ -76,14 +76,20 @@ if ($form->is_cancelled()) {
}
/// Print the page header
-$PAGE->navbar->add(get_string('add', 'data'));
+$pagename = get_string('uploadrecords', 'data');
+$PAGE->navbar->add($pagename);
$PAGE->add_body_class('mediumwidth');
-$PAGE->set_title($data->name);
+$titleparts = [
+ $pagename,
+ format_string($data->name),
+ format_string($course->fullname),
+];
+$PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
$PAGE->set_heading($course->fullname);
$PAGE->set_secondary_active_tab('modulepage');
$PAGE->activityheader->disable();
echo $OUTPUT->header();
-echo $OUTPUT->heading_with_help(get_string('uploadrecords', 'mod_data'), 'uploadrecords', 'mod_data');
+echo $OUTPUT->heading_with_help($pagename, 'uploadrecords', 'mod_data');
if ($formdata = $form->get_data()) {
$uploadedfilepath = $form->save_temp_file('recordsfile');
diff --git a/mod/data/index.php b/mod/data/index.php
index 22f57ac8c61..b2c603c678e 100644
--- a/mod/data/index.php
+++ b/mod/data/index.php
@@ -51,7 +51,11 @@ $strdata = get_string('modulename','data');
$strdataplural = get_string('modulenameplural','data');
$PAGE->navbar->add($strdata, new moodle_url('/mod/data/index.php', array('id'=>$course->id)));
-$PAGE->set_title($strdata);
+$titleparts = [
+ $strdataplural,
+ format_string($course->fullname),
+];
+$PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
$PAGE->set_heading($course->fullname);
echo $OUTPUT->header();
echo $OUTPUT->heading($strdataplural, 2);
diff --git a/mod/data/lang/en/data.php b/mod/data/lang/en/data.php
index c6494e451eb..70205abf1bb 100644
--- a/mod/data/lang/en/data.php
+++ b/mod/data/lang/en/data.php
@@ -422,6 +422,7 @@ $string['savesuccess'] = 'Preset saved. Preview preset';
$string['search'] = 'Search';
$string['search:activity'] = 'Database - activity information';
$string['search:entry'] = 'Database - entries';
+$string['searchresults'] = 'Entries containing "{$a}"';
$string['selectedrequired'] = 'All selected required';
$string['selectfields'] = 'Select fields';
$string['selectexportoptions'] = 'Select export options';
diff --git a/mod/data/lib.php b/mod/data/lib.php
index ae6bdd2b4f2..321aa13c5ee 100644
--- a/mod/data/lib.php
+++ b/mod/data/lib.php
@@ -2259,7 +2259,6 @@ function data_print_header($course, $cm, $data, $currenttab='', string $actionba
global $CFG, $displaynoticegood, $displaynoticebad, $OUTPUT, $PAGE, $USER;
- $PAGE->set_title($data->name);
echo $OUTPUT->header();
echo $actionbar;
diff --git a/mod/data/preset.php b/mod/data/preset.php
index 1ce4e2446d6..147cafafb58 100644
--- a/mod/data/preset.php
+++ b/mod/data/preset.php
@@ -72,7 +72,12 @@ $url = new moodle_url('/mod/data/preset.php', array('d' => $data->id));
$PAGE->add_body_class('mediumwidth');
$PAGE->set_url($url);
-$PAGE->set_title(get_string('course') . ': ' . $course->fullname);
+$titleparts = [
+ get_string('presets', 'data'),
+ format_string($cm->name),
+ format_string($course->fullname),
+];
+$PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
$PAGE->set_heading($course->fullname);
$PAGE->force_settings_menu(true);
$PAGE->activityheader->disable();
@@ -142,6 +147,17 @@ if ($action === 'preview') {
}
$preview = new preset_preview($manager, $preset, $templatename);
$preview->prepare_page($PAGE);
+ $url->params([
+ 'fullname' => $fullname,
+ 'template' => $templatename,
+ ]);
+ $PAGE->set_url($url);
+ $titleparts = [
+ get_string('preview', 'data', $preset->name),
+ format_string($cm->name),
+ format_string($course->fullname),
+ ];
+ $PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
// Print the preview screen.
echo $OUTPUT->header();
$actionbar = new action_bar($data->id, $url);
diff --git a/mod/data/templates.php b/mod/data/templates.php
index 1ed435e69a8..8ec274aaa7d 100644
--- a/mod/data/templates.php
+++ b/mod/data/templates.php
@@ -71,7 +71,39 @@ if ($useeditor !== null) {
}
$PAGE->requires->js('/mod/data/data.js');
-$PAGE->set_title($instance->name);
+switch ($mode) {
+ case 'asearchtemplate':
+ $title = get_string('asearchtemplate', 'data');
+ break;
+ case 'csstemplate':
+ $title = get_string('csstemplate', 'data');
+ break;
+ case 'jstemplate':
+ $title = get_string('jstemplate', 'data');
+ break;
+ case 'listtemplate':
+ $title = get_string('listtemplate', 'data');
+ break;
+ case 'rsstemplate':
+ $title = get_string('rsstemplate', 'data');
+ break;
+ case 'singletemplate':
+ $title = get_string('singletemplate', 'data');
+ break;
+ default:
+ if ($manager->has_fields()) {
+ $title = get_string('addtemplate', 'data');
+ } else {
+ $title = get_string('data:managetemplates', 'data');
+ }
+ break;
+}
+$titleparts = [
+ $title,
+ format_string($instance->name),
+ format_string($course->fullname),
+];
+$PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
$PAGE->set_heading($course->fullname);
$PAGE->set_pagelayout('admin');
$PAGE->force_settings_menu(true);
diff --git a/mod/data/view.php b/mod/data/view.php
index 38e7a94e2c0..306c505c0c5 100644
--- a/mod/data/view.php
+++ b/mod/data/view.php
@@ -44,6 +44,7 @@ $disapprove = optional_param('disapprove', 0, PARAM_INT); // disapproval reco
$delete = optional_param('delete', 0, PARAM_INT); //delete recordid
$multidelete = optional_param_array('delcheck', null, PARAM_INT);
$serialdelete = optional_param('serialdelete', null, PARAM_RAW);
+$confirm = optional_param('confirm', 0, PARAM_INT);
$record = null;
@@ -206,7 +207,6 @@ if ($data->jstemplate) {
/// Print the page header
// Note: MDL-19010 there will be further changes to printing header and blocks.
// The code will be much nicer than this eventually.
-$title = $courseshortname.': ' . format_string($data->name);
if ($PAGE->user_allowed_editing() && !$PAGE->theme->haseditswitch) {
// Change URL parameter and block display string value depending on whether editing is enabled or not
@@ -226,7 +226,21 @@ if ($mode == 'asearch') {
}
$PAGE->add_body_class('mediumwidth');
-$PAGE->set_title($title);
+$titleparts = [
+ format_string($data->name),
+ format_string($course->fullname),
+];
+if (!empty(trim($search))) {
+ // Indicate search results on page title when searching.
+ array_unshift($titleparts, get_string('searchresults', 'data', s($search)));
+} else if (!empty($delete) && empty($confirm)) {
+ // Displaying the delete confirmation page.
+ array_unshift($titleparts, get_string('deleteentry', 'data'));
+} else if ($record !== null || $mode == 'single') {
+ // Indicate on the page tile if the user is viewing this page on single view mode.
+ array_unshift($titleparts, get_string('single', 'data'));
+}
+$PAGE->set_title(implode(moodle_page::TITLE_SEPARATOR, $titleparts));
$PAGE->set_heading($course->fullname);
$PAGE->force_settings_menu(true);
if ($delete && confirm_sesskey() && (data_user_can_manage_entry($delete, $data, $context))) {
@@ -271,7 +285,7 @@ if ($data->intro and empty($page) and empty($record) and $mode != 'single') {
/// Delete any requested records
if ($delete && confirm_sesskey() && (data_user_can_manage_entry($delete, $data, $context))) {
- if ($confirm = optional_param('confirm',0,PARAM_INT)) {
+ if ($confirm) {
if (data_delete_record($delete, $data, $course->id, $cm->id)) {
echo $OUTPUT->notification(get_string('recorddeleted','data'), 'notifysuccess');
}