Files
TheWitness 2780258e7c Add 'Deepness' dark emerald-green theme to develop (with billboard overload CSS) (#8206)
* Add 'Deepness' theme to develop; midwinter billboard + deviceStatus hook

Forward-ports the Deepness theme (1.2.x #8202 + #8205) to develop as one change: the full include/themes/deepness/ theme (emerald-dark :root palette, Paw layout/top-tab JS, full billboard.js 3.13 overload CSS, dark widget CSS), the themes allowlist entry, the i18n_themes name, the midwinter billboard overload rules, and the shared 'deviceStatus' hook class in get_colored_device_status() that the theme styles as status pills. Paper-plane is intentionally untouched (worked separately). The lib/html.php favicon/arrow tweaks from 1.2.x are omitted - develop handles those via get_md5_include_icon()/get_theme_paths() and the theme's own .actionsDropdownArrow CSS.

* deepness: align main.js with Paw parent (drop stale host_id autocomplete & graphDrillDown, fix search-icon/handler leaks)

* deepness: drop bundled billboard.css (obsolete per-theme file; central include/css/billboard.css + main.css .bb overloads cover it)

* i18n: add 'Deepness' theme name to cacti.pot translation template

* Deepness: apply php-cs-fixer formatting and refresh sink inventory baseline

php-cs-fixer fixes the single-quote and // comment style in the deepness theme index.php/rrdtheme.php files, and the sink inventory baseline records the header_redirect sinks in the new deepness index.php files.

* tests: stop the boost upgrade integration test leaking IN_CACTI_INSTALL

BoostProcessTableUpgradeIntegrationTest defined IN_CACTI_INSTALL at file (collection) scope, so it was set for the whole shared pest process and made CactiErrorHandler() take its install-mode early-return. That broke CactiErrorHandlerSuppressionTest ('an enabled level is logged...' expected false, got true) in the pest coverage gate and the locked integration job. The upgrade files required here do not check the constant at load time (only lib/database.php does, at runtime inside its schema probes), so define it in beforeEach after the DB connects instead -- it is never set at collection time and, with no DB in CI, the test skips without defining it. Full pest suite: 2664 passed, 0 failed.
2026-10-07 14:16:56 -04:00

123 lines
3.5 KiB
CSS

.diff-wrapper.diff {
--tab-size: 4;
background: transparent;
border-collapse: collapse;
border-spacing: 0;
border: 1px solid rgba(127, 127, 127, 0.5);
color: inherit;
empty-cells: show;
font-family: monospace;
font-size: 13px;
width: 100%;
word-break: break-all;
}
.diff-wrapper.diff th {
font-weight: 700;
cursor: default;
-webkit-user-select: none;
user-select: none;
}
.diff-wrapper.diff td {
vertical-align: baseline;
}
.diff-wrapper.diff td,
.diff-wrapper.diff th {
border-collapse: separate;
border: none;
padding: 1px 2px;
background: transparent;
}
.diff-wrapper.diff td:empty:after,
.diff-wrapper.diff th:empty:after {
content: " ";
visibility: hidden;
}
.diff-wrapper.diff td a,
.diff-wrapper.diff th a {
color: inherit;
cursor: inherit;
pointer-events: none;
}
.diff-wrapper.diff thead th {
background: rgba(127, 127, 127, 0.28);
border-bottom: 1px solid rgba(127, 127, 127, 0.5);
padding: 4px;
text-align: left;
}
.diff-wrapper.diff tbody.skipped {
border-top: 1px solid rgba(127, 127, 127, 0.5);
}
.diff-wrapper.diff tbody.skipped td,
.diff-wrapper.diff tbody.skipped th {
display: none;
}
.diff-wrapper.diff tbody th {
background: rgba(127, 127, 127, 0.15);
border-right: 1px solid rgba(127, 127, 127, 0.5);
text-align: right;
vertical-align: top;
width: 4em;
}
.diff-wrapper.diff tbody th.sign {
background: transparent;
border-right: none;
padding: 1px 0;
text-align: center;
width: 1em;
}
.diff-wrapper.diff tbody th.sign.del {
background: rgba(200, 60, 60, 0.22);
}
.diff-wrapper.diff tbody th.sign.ins {
background: rgba(70, 180, 80, 0.22);
}
.diff-wrapper.diff.diff-html {
white-space: pre-wrap;
tab-size: var(--tab-size);
}
.diff-wrapper.diff.diff-html .ch {
line-height: 1em;
background-clip: border-box;
background-repeat: repeat-x;
background-position: left center;
}
.diff-wrapper.diff.diff-html .ch.sp {
background-image: url('data:image/svg+xml,%3Csvg preserveAspectRatio="xMinYMid meet" viewBox="0 0 12 24" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M4.5 11C4.5 10.1716 5.17157 9.5 6 9.5C6.82843 9.5 7.5 10.1716 7.5 11C7.5 11.8284 6.82843 12.5 6 12.5C5.17157 12.5 4.5 11.8284 4.5 11Z" fill="rgba%2860, 60, 60, 50%25%29"/%3E%3C/svg%3E');
background-size: 1ch 1.25em;
}
.diff-wrapper.diff.diff-html .ch.tab {
background-image: url('data:image/svg+xml,%3Csvg preserveAspectRatio="xMinYMid meet" viewBox="0 0 12 24" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M9.5 10.44L6.62 8.12L7.32 7.26L12.04 11V11.44L7.28 14.9L6.62 13.9L9.48 11.78H0V10.44H9.5Z" fill="rgba%2860, 60, 60, 50%25%29"/%3E%3C/svg%3E');
background-size: calc(var(--tab-size) * 1ch) 1.25em;
background-position: 2px center;
}
.diff-wrapper.diff.diff-html .change.change-eq .old,
.diff-wrapper.diff.diff-html .change.change-eq .new {
background: rgba(0, 0, 0, 0.25);
}
.diff-wrapper.diff.diff-html .change .old {
background: rgba(200, 60, 60, 0.22);
}
.diff-wrapper.diff.diff-html .change .new {
background: rgba(70, 180, 80, 0.22);
}
.diff-wrapper.diff.diff-html .change .rep {
background: rgba(210, 170, 40, 0.22);
}
.diff-wrapper.diff.diff-html .change .old.none,
.diff-wrapper.diff.diff-html .change .new.none,
.diff-wrapper.diff.diff-html .change .rep.none {
background: transparent;
cursor: not-allowed;
}
.diff-wrapper.diff.diff-html .change ins,
.diff-wrapper.diff.diff-html .change del {
font-weight: bold;
text-decoration: none;
}
.diff-wrapper.diff.diff-html .change ins {
background: rgba(70, 180, 80, 0.45);
}
.diff-wrapper.diff.diff-html .change del {
background: rgba(200, 60, 60, 0.45);
}