diff --git a/core/modules/system/src/SystemManager.php b/core/modules/system/src/SystemManager.php
index e5d3a18..4504f05 100644
--- a/core/modules/system/src/SystemManager.php
+++ b/core/modules/system/src/SystemManager.php
@@ -110,7 +110,7 @@ public function listRequirements() {
// Check run-time requirements and status information.
$requirements = $this->moduleHandler->invokeAll('requirements', array('runtime'));
- usort($requirements, function($a, $b) {
+ uasort($requirements, function ($a, $b) {
if (!isset($a['weight'])) {
if (!isset($b['weight'])) {
return strcasecmp($a['title'], $b['title']);
diff --git a/core/modules/system/src/Tests/System/CronRunTest.php b/core/modules/system/src/Tests/System/CronRunTest.php
index ec35b72..26a56a3 100644
--- a/core/modules/system/src/Tests/System/CronRunTest.php
+++ b/core/modules/system/src/Tests/System/CronRunTest.php
@@ -121,7 +121,7 @@ public function testManualCron() {
$this->assertResponse(403);
$this->drupalGet('admin/reports/status');
- $this->clickLink(t('run cron manually'));
+ $this->clickLink(t('Run cron'));
$this->assertResponse(200);
$this->assertText(t('Cron ran successfully.'));
}
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index f9c49c7..16d605d 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -146,7 +146,7 @@ function template_preprocess_status_report(&$variables) {
),
);
- foreach ($variables['requirements'] as $i => $requirement) {
+ foreach ($variables['requirements'] as $key => $requirement) {
// Always use the explicit requirement severity, if defined. Otherwise,
// default to REQUIREMENT_OK in the installer to visually confirm that
// installation requirements are met. And default to REQUIREMENT_INFO to
@@ -160,8 +160,8 @@ function template_preprocess_status_report(&$variables) {
else {
$severity = $severities[REQUIREMENT_INFO];
}
- $variables['requirements'][$i]['severity_title'] = $severity['title'];
- $variables['requirements'][$i]['severity_status'] = $severity['status'];
+ $variables['requirements'][$key]['severity_title'] = $severity['title'];
+ $variables['requirements'][$key]['severity_status'] = $severity['status'];
}
}
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index d705b5c..4b86c01 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -497,14 +497,19 @@ function system_requirements($phase) {
],
];
}
- $cron_url = \Drupal::url('system.cron', ['key' => \Drupal::state()->get('system.cron_key'), ['absolute' => TRUE]]);
$requirements['cron']['description'][] = [
[
- '#markup' => t('You can run cron manually.', [':cron' => \Drupal::url('system.run_cron')]),
+ '#type' => 'link',
+ '#prefix' => '(',
+ '#title' => t('more information'),
+ '#suffix' => ')',
+ '#url' => Url::fromRoute('system.cron_settings'),
],
[
- '#prefix' => '
',
- '#markup' => t('To run cron from outside the site, go to @cron', [':url' => $cron_url, '@cron' => $cron_url]),
+ '#prefix' => '
',
+ '#type' => 'link',
+ '#title' => t('Run cron'),
+ '#url' => Url::fromRoute('system.run_cron'),
],
];
}
diff --git a/core/themes/seven/css/components/colors.css b/core/themes/seven/css/components/colors.css
index 54358d8..a602adc 100644
--- a/core/themes/seven/css/components/colors.css
+++ b/core/themes/seven/css/components/colors.css
@@ -3,14 +3,11 @@
*/
.color-success {
color: #325e1c;
- background-color: #f3faef;
}
.color-warning {
color: #734c00;
- background-color: #fdf8ed;
}
.color-error {
color: #a51b00;
- background-color: #fcf4f2;
}
diff --git a/core/themes/seven/css/components/system-status-counter.css b/core/themes/seven/css/components/system-status-counter.css
new file mode 100644
index 0000000..04d3209
--- /dev/null
+++ b/core/themes/seven/css/components/system-status-counter.css
@@ -0,0 +1,97 @@
+/**
+ * @file
+ * Styles for the system status counter component.
+ */
+
+.system-status-counter {
+ border: 1px solid #e6e4df;
+ border-radius: 3px;
+ display: inline-block;
+ width: 100%;
+ white-space: nowrap;
+}
+.system-status-counter__status-icon {
+ display: inline-block;
+ height: 45px;
+ width: 2.815rem;
+ width: 45px;
+ width: 2.815rem;
+ vertical-align: middle;
+ border-right: 1px solid #e6e4df; /* LTR */
+ border-left: 0; /* LTR */
+ background-color: #faf9f5;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, .1) inset;
+}
+[dir="rtl"] .system-status-counter__status-icon {
+ border-right: 0;
+ border-left: 1px solid #e6e4df;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, .1) inset;
+}
+.system-status-counter__status-icon:before {
+ content: "";
+ background-size: 25px;
+ background-size: 1.5625rem;
+ background-position: 50% center;
+ background-repeat: no-repeat;
+ width: 100%;
+ height: 100%;
+ display: block;
+}
+
+.system-status-counter__status-icon--error:before {
+ background-image: url(../../../stable/images/core/icons/e32700/error.svg);
+}
+.system-status-counter__status-icon--warning:before {
+ background-image: url(../../../stable/images/core/icons/e29700/warning.svg);
+}
+.system-status-counter__status-icon--checked:before {
+ background-image: url(../../../stable/images/core/icons/73b355/check.svg);
+}
+
+.system-status-counter__status-title {
+ display: inline-block;
+ vertical-align: middle;
+ text-transform: uppercase;
+ padding: 0 6px;
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1em;
+ font-weight: bold;
+}
+.system-status-counter__details {
+ font-size: 12px;
+ font-weight: normal;
+ text-transform: none;
+}
+
+@media screen and (min-width: 60em) {
+ .system-status-counter__status-icon,
+ .system-status-counter {
+ height: 85px;
+ height: 5.3125rem;
+ }
+ .system-status-counter__status-icon {
+ width: 85px;
+ width: 5.3125rem;
+ }
+ .system-status-counter__status-title {
+ font-size: 20px;
+ font-size: 1.25rem;
+ padding: 10px 3%;
+ }
+ .toolbar-vertical.toolbar-tray-open .system-status-counter__status-title {
+ font-size: 16px;
+ font-size: 1rem;
+ }
+ .system-status-counter__status-icon:before {
+ background-size: 35px;
+ background-size: 2.1875rem;
+ }
+}
+
+@media screen and (min-width: 76em) {
+ .toolbar-vertical.toolbar-tray-open .system-status-counter__status-title {
+ font-size: 20px;
+ font-size: 1.25rem;
+ }
+}
diff --git a/core/themes/seven/css/components/system-status-report-counters.css b/core/themes/seven/css/components/system-status-report-counters.css
new file mode 100644
index 0000000..a8e6db3
--- /dev/null
+++ b/core/themes/seven/css/components/system-status-report-counters.css
@@ -0,0 +1,26 @@
+/**
+ * @file
+ * Styles for the system status report counters.
+ */
+
+.system-status-report-counters__item {
+ margin: 10px 0;
+ width: 100%;
+}
+
+@media screen and (min-width: 60em) {
+ .system-status-report-counters__item {
+ margin-bottom: 20px;
+ }
+ .system-status-report-counters {
+ flex-wrap: wrap;
+ display: flex;
+ justify-content: space-between;
+ }
+ .system-status-report-counters__item--half-width {
+ width: 49%;
+ }
+ .system-status-report-counters__item--third-width {
+ width: 32%;
+ }
+}
diff --git a/core/themes/seven/css/components/system-status-report.css b/core/themes/seven/css/components/system-status-report.css
index aeac1d3..498ad52 100644
--- a/core/themes/seven/css/components/system-status-report.css
+++ b/core/themes/seven/css/components/system-status-report.css
@@ -3,13 +3,251 @@
* Seven styles for the System Status Report.
*/
-.system-status-report__entry {
+.system-status-general-info {
+ border: 1px solid #ccc;
+}
+.system-status-general-info__header {
+ background-color: #f5f5f2;
+ padding: 10px;
+ margin: 0;
+ overflow: hidden;
+}
+
+.system-status-general-info__item {
border-top: 1px solid #ccc;
- border-bottom: inherit;
+ padding: 10px 10px 20px;
+ box-sizing: border-box;
+ overflow-x: auto;
+}
+
+.system-status-general-info__item-icon {
+ display: inline-block;
+ height: 45px;
+ width: 45px;
+ vertical-align: top;
+}
+.system-status-general-info__item-icon:before {
+ content: "";
+ background-size: 35px;
+ background-position: 50% center;
+ background-repeat: no-repeat;
+ width: 100%;
+ height: 100%;
+ display: block;
+}
+.system-status-general-info__item-icon--d8:before {
+ background-image: url(../../../stable/images/core/icons/cccccc/d8-logo.svg);
+}
+.system-status-general-info__item-icon--clock:before {
+ background-image: url(../../../stable/images/core/icons/cccccc/clock.svg);
+}
+.system-status-general-info__item-icon--server:before {
+ background-image: url(../../../stable/images/core/icons/cccccc/server.svg);
+}
+.system-status-general-info__item-icon--php:before {
+ background-image: url(../../../stable/images/core/icons/cccccc/php-logo.svg);
+ background-size: 45px;
+}
+.system-status-general-info__item-icon--database:before {
+ background-image: url(../../../stable/images/core/icons/cccccc/database.svg);
+ background-size: 30px;
}
-.system-status-report__entry:first-child {
- border-top: 1px solid #bebfb9;
+
+.system-status-general-info__item-details {
+ box-sizing: border-box;
+ display: inline-block;
+ width: calc(100% - 60px);
+ padding-left: 10px; /* LTR */
+ position: relative;
+}
+[dir="rtl"] .system-status-general-info__item-details {
+ padding-right: 10px;
+ padding-left: 0;
+}
+.system-status-general-info__item-title {
+ margin-bottom: 0;
+}
+.system-status-general-info__run-cron {
+ position: inherit;
+ margin-top: .5em;
+}
+@media screen and (min-width: 48em) {
+ .system-status-general-info__items {
+ display: flex;
+ flex-wrap: wrap;
+ }
+ .system-status-general-info__item {
+ flex: 1;
+ flex-basis: 33%;
+ width: 33%;
+ }
+ .system-status-general-info__item:nth-child(2) {
+ flex: 2;
+ flex-basis: 66%;
+ }
+ .system-status-general-info__item:nth-child(2),
+ .system-status-general-info__item:nth-child(4),
+ .system-status-general-info__item:nth-child(5) {
+ border-left: 1px solid #ccc; /* LTR */
+ }
+ [dir="rtl"] .system-status-general-info__item:nth-child(1),
+ [dir="rtl"] .system-status-general-info__item:nth-child(3) {
+ border-left: 1px solid #ccc;
+ }
+ [dir="rtl"] .system-status-general-info__item:nth-child(2),
+ [dir="rtl"] .system-status-general-info__item:nth-child(5) {
+ border-left: 0;
+ }
+ .system-status-general-info__run-cron {
+ position: absolute;
+ top: 1em;
+ right: 1em; /* LTR */
+ margin-top: 0;
+ }
+ [dir="rtl"] .system-status-general-info__run-cron {
+ left: 1em;
+ right: auto;
+ }
+}
+@media screen and (min-width: 60em) {
+ .system-status-general-info__item-icon {
+ width: 55px;
+ height: 55px;
+ }
+ .system-status-general-info__item-icon:before {
+ background-size: 35px;
+ }
+ .system-status-general-info__item-icon--php:before {
+ background-size: 55px;
+ }
}
-.system-status-report__entry:last-child {
+
+.system-status-report__entry {
+ border: 0;
+ border-top: 1px solid #ccc;
+ margin: 0;
+}
+.system-status-report__entry:last-of-type {
border-bottom: 1px solid #bebfb9;
}
+/* Account for native and poly-filled details element */
+.system-status-report__status-title {
+ position: relative;
+ padding: 1em 1em 1em 3em; /* LTR */
+ box-sizing: border-box;
+}
+.system-status-report__status-title .details-title {
+ color: inherit;
+ text-transform: none;
+}
+html:not(.details) .system-status-report__status-title {
+ padding-left: 0;
+}
+.system-status-report__status-title .details-title {
+ padding-left: 3em; /* LTR */
+}
+[dir="rtl"] .system-status-report__status-title .details-title {
+ padding-right: 3em;
+ padding-left: 0;
+}
+[dir="rtl"].details .system-status-report__status-title {
+ padding: 1em 3em 1em 1em;
+}
+.collapse-processed > .system-status-report__status-title:before {
+ float: right; /* LTR */
+}
+.system-status-report__status-title::-webkit-details-marker {
+ float: right; /* LTR */
+}
+[dir="rtl"] .collapse-processed > .system-status-report__status-title:before {
+ float: left;
+}
+[dir="rtl"] .system-status-report__status-title::-webkit-details-marker {
+ float: left;
+}
+
+/* Make poly-filled details and summary elements behave correctly. */
+.system-status-report summary:first-child ~ * {
+ display: none;
+}
+.system-status-report details[open] > *,
+.system-status-report details > summary:first-child {
+ display: block;
+}
+
+.system-status-report__status-title .details-title:before,
+.details .system-status-report__status-icon:before {
+ content: "";
+ background-repeat: no-repeat;
+ background-size: contain;
+ background-position: top center;
+ height: 16px;
+ width: 16px;
+ position: absolute;
+ left: 10px; /* LTR */
+ top: 1em;
+ display: inline-block;
+ vertical-align: top;
+ margin-right: 10px; /* LTR */
+}
+[dir="rtl"] .system-status-report__status-title .details-title:before,
+[dir="rtl"].details .system-status-report__status-title:before {
+ left: auto;
+ right: 10px;
+ margin-right: 0;
+}
+.system-status-report__status-icon--error .details-title:before,
+.details .system-status-report__status-icon--error:before {
+ background-image: url(../../../stable/images/core/icons/e32700/error.svg);
+}
+.system-status-report__status-icon--warning .details-title:before,
+.details .system-status-report__status-icon--warning:before {
+ background-image: url(../../../stable/images/core/icons/e29700/warning.svg);
+}
+
+.system-status-report__entry__value {
+ box-sizing: border-box;
+ padding: 0 1em 1em 3em; /* LTR */
+}
+[dir="rtl"] .system-status-report__entry__value {
+ padding-right: 3em;
+ padding-left: 1em;
+}
+
+@media screen and (max-width: 48em) {
+ .system-status-report {
+ word-wrap: break-word;
+ }
+}
+
+@media screen and (min-width: 48em) {
+ .system-status-report__entry::after {
+ display: table;
+ content: '';
+ clear: both;
+ }
+ .system-status-report details > summary:first-child {
+ width: 18rem;
+ float: left; /* LTR */
+ }
+ [dir="rtl"] .system-status-report details > summary:first-child {
+ float: right;
+ }
+ .collapse-processed > .system-status-report__status-title:before {
+ display: none;
+ }
+ .system-status-report__status-title::-webkit-details-marker {
+ display: none;
+ }
+ .system-status-report__entry__value {
+ width: calc(100% - 35ch - 1em);
+ float: right;
+ display: block;
+ padding-left: 0; /* LTR */
+ padding-top: 1em;
+ }
+ [dir="rtl"] .system-status-report__entry__value {
+ padding-left: 0;
+ padding-right: 3em;
+ }
+}
diff --git a/core/themes/seven/css/components/system.admin.css b/core/themes/seven/css/components/system.admin.css
new file mode 100644
index 0000000..8233c05
--- /dev/null
+++ b/core/themes/seven/css/components/system.admin.css
@@ -0,0 +1,356 @@
+/**
+ * @file
+ * Styles for administration pages.
+ */
+
+/**
+ * Reusable layout styles.
+ */
+.layout-container {
+ margin: 0 1.5em;
+}
+.layout-container:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media screen and (min-width: 38em) {
+ .layout-container {
+ margin: 0 2.5em;
+ }
+ .layout-column {
+ float: left; /* LTR */
+ box-sizing: border-box;
+ }
+ [dir="rtl"] .layout-column {
+ float: right;
+ }
+ .layout-column + .layout-column {
+ padding-left: 10px; /* LTR */
+ }
+ [dir="rtl"] .layout-column + .layout-column {
+ padding-right: 10px;
+ padding-left: 0;
+ }
+ .layout-column--half {
+ width: 50%;
+ }
+ .layout-column--quarter {
+ width: 25%;
+ }
+ .layout-column--three-quarter {
+ width: 75%;
+ }
+}
+
+/**
+ * Panel.
+ * Used to visually group items together.
+ */
+.panel {
+ padding: 5px 5px 15px;
+}
+.panel__description {
+ margin: 0 0 3px;
+ padding: 2px 0 3px 0;
+}
+
+/**
+ * System compact link: to toggle the display of description text.
+ */
+.compact-link {
+ margin: 0 0 0.5em 0;
+}
+
+/**
+ * Quick inline admin links.
+ */
+small .admin-link:before {
+ content: ' [';
+}
+small .admin-link:after {
+ content: ']';
+}
+
+/**
+ * Modules page.
+ */
+.system-modules thead > tr {
+ border: 0;
+}
+.system-modules div.incompatible {
+ font-weight: bold;
+}
+.system-modules td.checkbox {
+ min-width: 25px;
+ width: 4%;
+}
+.system-modules td.module {
+ width: 25%;
+}
+.system-modules td {
+ vertical-align: top;
+}
+.system-modules label,
+.system-modules-uninstall label {
+ color: #1d1d1d;
+ font-size: 1.15em;
+}
+.system-modules details {
+ color: #5c5c5b;
+ line-height: 20px;
+ overflow: hidden; /* truncates descriptions if too long */
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.system-modules details[open] {
+ height: auto;
+ overflow: visible;
+ white-space: normal;
+}
+.system-modules details[open] summary .text {
+ -webkit-hyphens: auto;
+ -moz-hyphens: auto;
+ -ms-hyphens: auto;
+ hyphens: auto;
+ text-transform: none;
+}
+.system-modules td details a {
+ color: #5c5c5b;
+ border: 0px;
+}
+.system-modules td details {
+ border: 0;
+ margin: 0;
+ height: 20px;
+}
+.system-modules td details summary {
+ padding: 0;
+ text-transform: none;
+ font-weight: normal;
+ cursor: default;
+}
+.system-modules td {
+ padding-left: 0; /* LTR */
+}
+[dir="rtl"] .system-modules td {
+ padding-left: 12px;
+ padding-right: 0;
+}
+
+@media screen and (max-width: 40em) {
+ .system-modules td.name {
+ width: 20%;
+ }
+ .system-modules td.description {
+ width: 40%;
+ }
+}
+.system-modules .requirements {
+ padding: 5px 0;
+ max-width: 490px;
+}
+.system-modules .links {
+ overflow: hidden; /* prevents collapse */
+}
+.system-modules .checkbox {
+ margin: 0 5px;
+}
+.system-modules .checkbox .form-item {
+ margin-bottom: 0;
+}
+.admin-requirements,
+.admin-required {
+ font-size: 0.9em;
+ color: #666;
+}
+.admin-enabled {
+ color: #080;
+}
+.admin-missing {
+ color: #f00;
+}
+.module-link {
+ display: block;
+ padding: 2px 20px;
+ white-space: nowrap;
+ margin-top: 2px;
+ float: left; /* LTR */
+}
+[dir="rtl"] .module-link {
+ float: right;
+}
+.module-link-help {
+ background: url(../../images/core/icons/787878/questionmark-disc.svg) 0 50% no-repeat; /* LTR */
+}
+[dir="rtl"] .module-link-help {
+ background-position: top 50% right 0;
+}
+.module-link-permissions {
+ background: url(../../images/core/icons/787878/key.svg) 0 50% no-repeat; /* LTR */
+}
+[dir="rtl"] .module-link-permissions {
+ background-position: top 50% right 0;
+}
+.module-link-configure {
+ background: url(../../images/core/icons/787878/cog.svg) 0 50% no-repeat; /* LTR */
+}
+[dir="rtl"] .module-link-configure {
+ background-position: top 50% right 0;
+}
+
+/**
+ * Appearance page.
+ */
+.theme-info__header {
+ margin-bottom: 0;
+ font-weight: normal;
+}
+.theme-default .theme-info__header {
+ font-weight: bold;
+}
+.theme-info__description {
+ margin-top: 0;
+}
+.system-themes-list {
+ margin-bottom: 20px;
+}
+.system-themes-list-uninstalled {
+ border-top: 1px solid #cdcdcd;
+ padding-top: 20px;
+}
+.system-themes-list__header {
+ margin: 0;
+}
+
+.theme-selector {
+ padding-top: 20px;
+}
+.theme-selector .screenshot,
+.theme-selector .no-screenshot {
+ border: 1px solid #e0e0d8;
+ padding: 2px;
+ vertical-align: bottom;
+ max-width: 100%;
+ height: auto;
+ text-align: center;
+}
+.theme-default .screenshot {
+ border: 1px solid #aaa;
+}
+.system-themes-list-uninstalled .screenshot,
+.system-themes-list-uninstalled .no-screenshot {
+ max-width: 194px;
+ height: auto;
+}
+
+/**
+ * Theme display without vertical toolbar.
+ */
+@media screen and (min-width: 45em) {
+ body:not(.toolbar-vertical) .system-themes-list-installed .screenshot,
+ body:not(.toolbar-vertical) .system-themes-list-installed .no-screenshot {
+ float: left; /* LTR */
+ margin: 0 20px 0 0; /* LTR */
+ width: 294px;
+ }
+ [dir="rtl"] body:not(.toolbar-vertical) .system-themes-list-installed .screenshot,
+ [dir="rtl"] body:not(.toolbar-vertical) .system-themes-list-installed .no-screenshot {
+ float: right;
+ margin: 0 0 0 20px;
+ }
+ body:not(.toolbar-vertical) .system-themes-list-installed .system-themes-list__header {
+ margin-top: 0;
+ }
+ body:not(.toolbar-vertical) .system-themes-list-uninstalled .theme-selector {
+ box-sizing: border-box;
+ width: 31.25%;
+ float: left; /* LTR */
+ padding: 20px 20px 20px 0; /* LTR */
+ }
+ [dir="rtl"] body:not(.toolbar-vertical) .system-themes-list-uninstalled .theme-selector {
+ float: right;
+ padding: 20px 0 20px 20px;
+ }
+ body:not(.toolbar-vertical) .system-themes-list-uninstalled .theme-info {
+ min-height: 170px;
+ }
+}
+
+/**
+ * Theme display with vertical toolbar.
+ */
+@media screen and (min-width: 60em) {
+ .toolbar-vertical .system-themes-list-installed .screenshot,
+ .toolbar-vertical .system-themes-list-installed .no-screenshot {
+ float: left; /* LTR */
+ margin: 0 20px 0 0; /* LTR */
+ width: 294px;
+ }
+ [dir="rtl"] .toolbar-vertical .system-themes-list-installed .screenshot,
+ [dir="rtl"] .toolbar-vertical .system-themes-list-installed .no-screenshot {
+ float: right;
+ margin: 0 0 0 20px;
+ }
+ .toolbar-vertical .system-themes-list-installed .theme-info__header {
+ margin-top: 0;
+ }
+ .toolbar-vertical .system-themes-list-uninstalled .theme-selector {
+ box-sizing: border-box;
+ width: 31.25%;
+ float: left; /* LTR */
+ padding: 20px 20px 20px 0; /* LTR */
+ }
+ [dir="rtl"] .toolbar-vertical .system-themes-list-uninstalled .theme-selector {
+ float: right;
+ padding: 20px 0 20px 20px;
+ }
+ .toolbar-vertical .system-themes-list-uninstalled .theme-info {
+ min-height: 170px;
+ }
+}
+.system-themes-list-installed .theme-info {
+ max-width: 940px;
+}
+
+.theme-selector .incompatible {
+ margin-top: 10px;
+ font-weight: bold;
+}
+.theme-selector .operations {
+ margin: 10px 0 0 0;
+ padding: 0;
+}
+.theme-selector .operations li {
+ float: left; /* LTR */
+ margin: 0;
+ padding: 0 0.7em;
+ list-style-type: none;
+ border-right: 1px solid #cdcdcd; /* LTR */
+}
+[dir="rtl"] .theme-selector .operations li {
+ float: right;
+ border-left: 1px solid #cdcdcd;
+ border-right: none;
+}
+.theme-selector .operations li:last-child {
+ padding: 0 0 0 0.7em; /* LTR */
+ border-right: none; /* LTR */
+}
+[dir="rtl"] .theme-selector .operations li:last-child {
+ padding: 0 0.7em 0 0;
+ border-left: none;
+}
+.theme-selector .operations li:first-child {
+ padding: 0 0.7em 0 0; /* LTR */
+}
+[dir="rtl"] .theme-selector .operations li:first-child {
+ padding: 0 0 0 0.7em;
+}
+.system-themes-admin-form {
+ clear: left; /* LTR */
+}
+[dir="rtl"] .system-themes-admin-form {
+ clear: right;
+}
diff --git a/core/themes/seven/css/components/tables.css b/core/themes/seven/css/components/tables.css
index 913e21a..4fbafba 100644
--- a/core/themes/seven/css/components/tables.css
+++ b/core/themes/seven/css/components/tables.css
@@ -39,15 +39,6 @@ tbody tr:focus {
background: #f7fcff;
}
-/* See colors.css */
-tbody tr.color-warning:hover,
-tbody tr.color-warning:focus {
- background: #fdf8ed;
-}
-tbody tr.color-error:hover,
-tbody tr.color-error:focus {
- background: #fcf4f2;
-}
td,
th {
vertical-align: middle;
diff --git a/core/themes/seven/js/responsive-details.js b/core/themes/seven/js/responsive-details.js
new file mode 100644
index 0000000..a98aede
--- /dev/null
+++ b/core/themes/seven/js/responsive-details.js
@@ -0,0 +1,42 @@
+/**
+ * @file
+ * Provides responsive behaviors to HTML details elements.
+ */
+
+(function ($, Drupal, debounce) {
+
+ 'use strict';
+
+ /**
+ * Initializes the responsive behaviors for details elements.
+ *
+ * @type {Drupal~behavior}
+ *
+ * @prop {Drupal~behaviorAttach} attach
+ * Attaches the responsive behavior to status report specific details elements.
+ */
+ Drupal.behaviors.responsiveDetails = {
+ attach: function (context) {
+ var $statusDetails = $(context).find('details').once('responsive-details');
+
+ function handleResize() {
+ if (window.matchMedia('(min-width:48em)').matches) {
+ $statusDetails
+ .attr('open', true)
+ .children('summary')
+ .attr('aria-expanded', true);
+ }
+ else {
+ // If user explicitly opened one, leave it alone.
+ $statusDetails.find('summary[aria-pressed!=true]')
+ .attr('aria-expanded', false)
+ .parent('details')
+ .attr('open', false);
+ }
+ }
+
+ $(window).on('resize.details', debounce(handleResize, 150)).trigger('resize.details');
+ }
+ };
+
+})(jQuery, Drupal, Drupal.debounce);
diff --git a/core/themes/seven/seven.info.yml b/core/themes/seven/seven.info.yml
index 369515e..4d8824a 100644
--- a/core/themes/seven/seven.info.yml
+++ b/core/themes/seven/seven.info.yml
@@ -22,6 +22,10 @@ core: 8.x
libraries:
- seven/global-styling
libraries-override:
+ system/admin:
+ css:
+ theme:
+ /core/themes/stable/css/system/system.admin.css: css/components/system.admin.css
core/drupal.vertical-tabs:
css:
component:
diff --git a/core/themes/seven/seven.libraries.yml b/core/themes/seven/seven.libraries.yml
index e68b75a..d78a103 100644
--- a/core/themes/seven/seven.libraries.yml
+++ b/core/themes/seven/seven.libraries.yml
@@ -28,6 +28,8 @@ global-styling:
css/components/search-admin-settings.css: {}
css/components/tablesort-indicator.css: {}
css/components/system-status-report.css: {}
+ css/components/system-status-report-counters.css: {}
+ css/components/system-status-counter.css: {}
css/components/tabs.css: {}
css/components/views-ui.css: {}
layout:
@@ -75,6 +77,16 @@ drupal.nav-tabs:
- core/jquery.once
- core/drupal.debounce
+drupal.responsive-detail:
+ version: VERSION
+ js:
+ js/responsive-details.js: {}
+ dependencies:
+ - core/matchmedia
+ - core/jquery
+ - core/jquery.once
+ - core/drupal.debounce
+
vertical-tabs:
version: VERSION
css:
diff --git a/core/themes/seven/seven.theme b/core/themes/seven/seven.theme
index 5ace6b8..6dd5e32 100644
--- a/core/themes/seven/seven.theme
+++ b/core/themes/seven/seven.theme
@@ -145,6 +145,97 @@ function seven_preprocess_maintenance_page(&$variables) {
}
/**
+ * Implements hook_preprocess_status_report().
+ */
+function seven_preprocess_status_report(&$variables) {
+
+ $severities = [
+ REQUIREMENT_INFO => [
+ 'title' => t('Info'),
+ 'status' => 'info',
+ ],
+ REQUIREMENT_OK => [
+ 'title' => t('OK'),
+ 'status' => 'ok',
+ ],
+ REQUIREMENT_WARNING => [
+ 'title' => t('Warning'),
+ 'status' => 'warning',
+ ],
+ REQUIREMENT_ERROR => [
+ 'title' => t('Error'),
+ 'status' => 'error',
+ ],
+ ];
+
+ // Count number of items with different severity for summary.
+ $counters = ['error', 'warning', 'info'];
+ foreach ($counters as $counter) {
+ $variables[$counter] = 0;
+ }
+
+ $grouped_requirements = [];
+
+ // Loop through requirements and pull out items.
+ foreach ($variables['requirements'] as $key => &$requirement) {
+ switch ($key) {
+ case 'cron':
+ foreach ($requirement['description'] as &$description_elements) {
+ foreach ($description_elements as &$description_element) {
+ if (isset($description_element['#url']) && $description_element['#url']->getRouteName() == 'system.run_cron') {
+ $description_element['#attributes']['class'][] = 'button';
+ $description_element['#attributes']['class'][] = 'button--small';
+ $description_element['#attributes']['class'][] = 'button--primary';
+ $description_element['#attributes']['class'][] = 'system-status-general-info__run-cron';
+ }
+ }
+ }
+ $variables[$key] = $requirement;
+ unset($variables['requirements'][$key]);
+ break;
+
+ case 'drupal':
+ case 'webserver':
+ case 'database_system':
+ case 'database_system_version':
+ case 'php':
+ case 'php_memory_limit':
+ $variables[$key] = $requirement;
+ unset($variables['requirements'][$key]);
+ break;
+ }
+
+ if (isset($requirement['severity'])) {
+ $severity = $severities[(int) $requirement['severity']];
+ }
+ elseif (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install') {
+ $severity = $severities[REQUIREMENT_OK];
+ }
+ else {
+ $severity = $severities[REQUIREMENT_INFO];
+ }
+ if (in_array($severity['status'], $counters)) {
+ $variables[$severity['status']]++;
+ }
+
+ // If the requirement is still set, add it to its group.
+ if (isset($variables['requirements'][$key])) {
+ $grouped_requirements[$severity['status']]['title'] = $severity['title'];
+ $grouped_requirements[$severity['status']]['type'] = $severity['status'];
+ $grouped_requirements[$severity['status']]['items'][] = $requirement;
+ }
+ }
+ // Order the grouped requirements by the counter keys. Add 'ok' to put that
+ // status on the bottom.
+ $counters[] = 'ok';
+ $counter_keys = array_flip($counters);
+ uksort($grouped_requirements, function ($a, $b) use ($counter_keys) {
+ return $counter_keys[$a] > $counter_keys[$b];
+ });
+ $variables['grouped_requirements'] = $grouped_requirements;
+}
+
+/**
* Implements hook_form_BASE_FORM_ID_alter() for \Drupal\node\NodeForm.
*
* Changes vertical tabs to container and adds meta information.
diff --git a/core/themes/seven/templates/status-report.html.twig b/core/themes/seven/templates/status-report.html.twig
new file mode 100644
index 0000000..1116048
--- /dev/null
+++ b/core/themes/seven/templates/status-report.html.twig
@@ -0,0 +1,168 @@
+{#
+/**
+ * @file
+ * Theme override for the status report.
+ *
+ * Available variables:
+ * - requirements: Contains multiple requirement instances.
+ * Each requirement contains:
+ * - title: The title of the requirement.
+ * - value: (optional) The requirement's status.
+ * - description: (optional) The requirement's description.
+ * - severity_title: The title of the severity.
+ * - severity_status: Indicates the severity status.
+ * - error: The number of errors found.
+ * - warning: The number of warnings found.
+ * - info: The number of items which are neither errors nor warnings.
+ *
+ * @see template_preprocess_status_report()
+ */
+#}
+{% if error and warning and info %}
+ {% set element_width_class = ' system-status-report-counters__item--third-width' %}
+{% elseif error or warning %}
+ {% set element_width_class = ' system-status-report-counters__item--half-width' %}
+{% endif %}
+