diff --git a/admin/templates/settings_search_results.mustache b/admin/templates/settings_search_results.mustache index 78b62053374..df82b0ff616 100644 --- a/admin/templates/settings_search_results.mustache +++ b/admin/templates/settings_search_results.mustache @@ -22,7 +22,7 @@ Context variables required for this template: * actionurl - Url to post to * hasresults - True if there are results - * results - List of results containing url, title, settings (array of raw html) + * results - List of results containing url, title, path (array of strings), settings (array of raw html) * showsave - Show save buttons Example context (json): @@ -30,7 +30,7 @@ "actionurl": "/", "hasresults": true, "results": [ - { "url": "/", "title": "Match!", "settings": [ "blah blah blah" ] } + { "url": "/", "title": "Match!", "path": ["Administration", "Match!"], "settings": [ "blah blah blah" ] } ] } }} @@ -41,9 +41,15 @@
+

{{#str}}searchresults, admin{{/str}}

{{#hasresults}} {{#results}} -

{{#str}}searchresults, admin{{/str}} - {{{title}}}

+

{{{title}}}

+
{{#settings}}
diff --git a/lib/adminlib.php b/lib/adminlib.php index 4b909cf7d67..d6cd9ace66e 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -8179,6 +8179,15 @@ function admin_search_settings_html($query) { continue; } + // Locate the page in the admin root and populate its visiblepath attribute. + $path = array(); + $located = $adminroot->locate($page->name, true); + if ($located) { + foreach ($located->visiblepath as $pathitem) { + array_unshift($path, (string) $pathitem); + } + } + $sectionsettings = []; if (!empty($settings)) { foreach ($settings as $setting) { @@ -8198,6 +8207,7 @@ function admin_search_settings_html($query) { $tpldata->results[] = (object) [ 'title' => $heading, + 'path' => $path, 'url' => $headingurl->out(false), 'settings' => $sectionsettings ]; diff --git a/theme/boost/scss/moodle/admin.scss b/theme/boost/scss/moodle/admin.scss index cfc4a678fd7..4faa33e8c3a 100644 --- a/theme/boost/scss/moodle/admin.scss +++ b/theme/boost/scss/moodle/admin.scss @@ -804,3 +804,26 @@ #overriderolestable .overriddenpermission { @extend .table-warning; } + +#page-admin-search { + .adminpagetitle { + margin-bottom: 0; + border-bottom: none; + } + .adminpagepath { + display: flex; + flex-wrap: wrap; + list-style: none; + padding: 0; + margin: 0 0 1.5rem 0; + li { + @extend .text-muted; + @extend .small; + + li:before { + padding-right: 0.5rem; + padding-left: 0.5rem; + content: "#{$breadcrumb-divider}"; + } + } + } +} diff --git a/theme/boost/style/moodle.css b/theme/boost/style/moodle.css index fd959e4dbe7..504ca108bf7 100644 --- a/theme/boost/style/moodle.css +++ b/theme/boost/style/moodle.css @@ -2691,7 +2691,8 @@ hr { border-top: 1px solid rgba(0, 0, 0, 0.1); } small, -.small { +.small, +#page-admin-search .adminpagepath li { font-size: 80%; font-weight: 400; } @@ -8448,7 +8449,7 @@ a.dimmed_text:visited, .usersuspended a:visited, .dimmed_category, .dimmed_category a, .tag_feed .media .muted a, #page-admin-qtypes .disabled, -#page-admin-qbehaviours .disabled, #page-admin-plugins #plugins-control-panel .pluginname .componentname, #page-admin-plugins #plugins-control-panel .version .versionnumber, #page-admin-plugins #plugins-control-panel .notes .requiredby, #plugins-check-page .page-description, #plugins-check-page #plugins-check .requires-ok, #plugins-check-page #plugins-check .displayname .plugindir, #plugins-check-page #plugins-check-available-dependencies .displayname .component, .block .minicalendar td.weekend, .section .activity .stealth, .course-content .section-summary .section-summary-activities .activity-count, .course-content ul li.section.hidden .sectionname > span, +#page-admin-qbehaviours .disabled, #page-admin-plugins #plugins-control-panel .pluginname .componentname, #page-admin-plugins #plugins-control-panel .version .versionnumber, #page-admin-plugins #plugins-control-panel .notes .requiredby, #plugins-check-page .page-description, #plugins-check-page #plugins-check .requires-ok, #plugins-check-page #plugins-check .displayname .plugindir, #plugins-check-page #plugins-check-available-dependencies .displayname .component, #page-admin-search .adminpagepath li, .block .minicalendar td.weekend, .section .activity .stealth, .course-content .section-summary .section-summary-activities .activity-count, .course-content ul li.section.hidden .sectionname > span, .course-content ul li.section.hidden .content > div.summary, .course-content ul li.section.hidden .activity .activityinstance, #course-category-listings .listitem[data-visible="0"], #course-category-listings .listitem[data-visible="0"] > div > a, #course-category-listings .listing-pagination-totals.dimmed, .fitem.disabled .fp-btn-choose, .form-defaultinfo, .form-label .form-shortname, .formsettingheading .form-horizontal, .no-felement.fstatic, .path-backup .backup_progress .backup_stage { @@ -10977,6 +10978,21 @@ div.editor_atto_toolbar button .icon { .modal.modal-in-page { z-index: 0; } +#page-admin-search .adminpagetitle { + margin-bottom: 0; + border-bottom: none; } + +#page-admin-search .adminpagepath { + display: flex; + flex-wrap: wrap; + list-style: none; + padding: 0; + margin: 0 0 1.5rem 0; } + #page-admin-search .adminpagepath li + li:before { + padding-right: 0.5rem; + padding-left: 0.5rem; + content: "/"; } + .blockmovetarget .accesshide { position: relative; left: initial; } diff --git a/theme/boost/templates/core_admin/settings_search_results.mustache b/theme/boost/templates/core_admin/settings_search_results.mustache index 4ecdcd66a61..66531548b66 100644 --- a/theme/boost/templates/core_admin/settings_search_results.mustache +++ b/theme/boost/templates/core_admin/settings_search_results.mustache @@ -15,7 +15,24 @@ along with Moodle. If not, see . }} {{! - Settings. + @template core_admin/settings_search_results + + Admin setting search results template. + + Context variables required for this template: + * actionurl - Url to post to + * hasresults - True if there are results + * results - List of results containing url, title, path (array of strings), settings (array of raw html) + * showsave - Show save buttons + + Example context (json): + { + "actionurl": "/", + "hasresults": true, + "results": [ + { "url": "/", "title": "Match!", "path": ["Administration", "Match!"], "settings": [ "blah blah blah" ] } + ] + } }}
@@ -24,9 +41,15 @@
+

{{#str}}searchresults, admin{{/str}}

{{#hasresults}} {{#results}} -

{{#str}}searchresults, admin{{/str}} - {{{title}}}

+

{{{title}}}

+
    + {{#path}} +
  • {{.}}
  • + {{/path}} +
{{#settings}}
diff --git a/theme/bootstrapbase/less/moodle/admin.less b/theme/bootstrapbase/less/moodle/admin.less index ce5e5c3a8c4..26f41d8c2a6 100644 --- a/theme/bootstrapbase/less/moodle/admin.less +++ b/theme/bootstrapbase/less/moodle/admin.less @@ -858,3 +858,26 @@ img.iconsmall { #page-admin-registration-index form .mark { background-color: @warningBackground; } + +#page-admin-search { + .adminpagetitle { + margin-bottom: 0; + border-bottom: none; + } + .adminpagepath { + list-style: none; + margin: 0 0 10px 0; + li { + .muted; + display: inline; + font-size: @fontSizeSmall; + + li:before { + content: "◀\00a0"; + /*rtl:remove*/ + content: "▶\00a0"; /* stylelint-disable-line declaration-block-no-duplicate-properties */ + color: #ccc; + font-size: @fontSizeSmall; + } + } + } +} diff --git a/theme/bootstrapbase/style/moodle.css b/theme/bootstrapbase/style/moodle.css index 7edf35ac46c..036a994c4df 100644 --- a/theme/bootstrapbase/style/moodle.css +++ b/theme/bootstrapbase/style/moodle.css @@ -5575,6 +5575,27 @@ img.iconsmall { #page-admin-registration-index form .mark { background-color: #fcf8e3; } +#page-admin-search .adminpagetitle { + margin-bottom: 0; + border-bottom: none; +} +#page-admin-search .adminpagepath { + list-style: none; + margin: 0 0 10px 0; +} +#page-admin-search .adminpagepath li { + color: #999; + display: inline; + font-size: 11.9px; +} +#page-admin-search .adminpagepath li + li:before { + content: "◀\00a0"; + /*rtl:remove*/ + content: "▶\00a0"; + /* stylelint-disable-line declaration-block-no-duplicate-properties */ + color: #ccc; + font-size: 11.9px; +} /* calendar.less */ .calendar_event_category { background-color: #d8bfd8;