From 46251292b5c8b431de66aeff473594ccec60e04c Mon Sep 17 00:00:00 2001 From: RaindropsSys Date: Thu, 20 Jul 2023 18:29:09 +0200 Subject: Updated 19 files and added 26 files (automated) --- assets/icons/new/add.svg | 1 + assets/icons/new/alerts.svg | 1 + assets/icons/new/documents.svg | 1 + assets/icons/new/history.svg | 1 + assets/icons/new/jobs.svg | 1 + assets/icons/new/lists.svg | 1 + assets/icons/new/login.svg | 1 + assets/icons/new/money.svg | 1 + assets/icons/new/relations.svg | 1 + assets/icons/new/schedule.svg | 1 + assets/icons/new/sessions.svg | 1 + assets/icons/new/travelling.svg | 1 + assets/icons/new/wave.svg | 1 + assets/logo/custom-2023.css | 965 +++++++++++++++++++++++++++++++++++++ assets/logo/dark.svg | 49 ++ assets/logo/light-2023.css | 182 +++++++ assets/logo/light.svg | 47 ++ icons.php | 29 ++ includes/components/2023ui.inc | 114 +++++ includes/components/explicit.php | 20 +- includes/components/footer.inc | 10 + includes/components/fullbanner.inc | 2 - includes/components/header.inc | 464 +++++++++++++++++- includes/components/mobilenav.inc | 5 +- includes/components/navigation.inc | 814 +++++++++++++++---------------- includes/components/pane.inc | 5 +- includes/components/sysbanner.inc | 11 +- includes/flags.json | 3 +- includes/fragments/evening.inc | 245 ++++++++++ includes/fragments/member.inc | 4 +- includes/fragments/system.inc | 4 +- includes/pages.json | 21 + includes/themes.json | 69 +++ includes/util/banner.inc | 23 +- includes/util/evening.inc | 68 +++ pages/account.inc | 15 + pages/alerts.inc | 15 + pages/api/2023ui.php | 5 + pages/docs.inc | 2 + pages/evening.inc | 308 +----------- pages/jobs.inc | 12 + pages/lists.inc | 15 + pages/money.inc | 44 +- pages/schedules.inc | 10 + pages/travelling.inc | 6 +- 45 files changed, 2826 insertions(+), 773 deletions(-) create mode 100644 assets/icons/new/add.svg create mode 100644 assets/icons/new/alerts.svg create mode 100644 assets/icons/new/documents.svg create mode 100644 assets/icons/new/history.svg create mode 100644 assets/icons/new/jobs.svg create mode 100644 assets/icons/new/lists.svg create mode 100644 assets/icons/new/login.svg create mode 100644 assets/icons/new/money.svg create mode 100644 assets/icons/new/relations.svg create mode 100644 assets/icons/new/schedule.svg create mode 100644 assets/icons/new/sessions.svg create mode 100644 assets/icons/new/travelling.svg create mode 100644 assets/icons/new/wave.svg create mode 100644 assets/logo/custom-2023.css create mode 100644 assets/logo/dark.svg create mode 100644 assets/logo/light-2023.css create mode 100644 assets/logo/light.svg create mode 100644 icons.php create mode 100644 includes/components/2023ui.inc create mode 100644 includes/fragments/evening.inc create mode 100644 includes/themes.json create mode 100644 includes/util/evening.inc create mode 100644 pages/account.inc create mode 100644 pages/alerts.inc create mode 100644 pages/api/2023ui.php create mode 100644 pages/lists.inc diff --git a/assets/icons/new/add.svg b/assets/icons/new/add.svg new file mode 100644 index 0000000..b44e6b3 --- /dev/null +++ b/assets/icons/new/add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/alerts.svg b/assets/icons/new/alerts.svg new file mode 100644 index 0000000..e408582 --- /dev/null +++ b/assets/icons/new/alerts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/documents.svg b/assets/icons/new/documents.svg new file mode 100644 index 0000000..fcdbdfc --- /dev/null +++ b/assets/icons/new/documents.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/history.svg b/assets/icons/new/history.svg new file mode 100644 index 0000000..dce57e4 --- /dev/null +++ b/assets/icons/new/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/jobs.svg b/assets/icons/new/jobs.svg new file mode 100644 index 0000000..8a4226e --- /dev/null +++ b/assets/icons/new/jobs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/lists.svg b/assets/icons/new/lists.svg new file mode 100644 index 0000000..aa4ad37 --- /dev/null +++ b/assets/icons/new/lists.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/login.svg b/assets/icons/new/login.svg new file mode 100644 index 0000000..19d7374 --- /dev/null +++ b/assets/icons/new/login.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/money.svg b/assets/icons/new/money.svg new file mode 100644 index 0000000..72e14b3 --- /dev/null +++ b/assets/icons/new/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/relations.svg b/assets/icons/new/relations.svg new file mode 100644 index 0000000..9dbe309 --- /dev/null +++ b/assets/icons/new/relations.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/schedule.svg b/assets/icons/new/schedule.svg new file mode 100644 index 0000000..88fe7c8 --- /dev/null +++ b/assets/icons/new/schedule.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/sessions.svg b/assets/icons/new/sessions.svg new file mode 100644 index 0000000..0a4aceb --- /dev/null +++ b/assets/icons/new/sessions.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/travelling.svg b/assets/icons/new/travelling.svg new file mode 100644 index 0000000..0f93c0e --- /dev/null +++ b/assets/icons/new/travelling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/new/wave.svg b/assets/icons/new/wave.svg new file mode 100644 index 0000000..39607d2 --- /dev/null +++ b/assets/icons/new/wave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/logo/custom-2023.css b/assets/logo/custom-2023.css new file mode 100644 index 0000000..6ead16e --- /dev/null +++ b/assets/logo/custom-2023.css @@ -0,0 +1,965 @@ +img { + image-rendering: pixelated !important; +} + +.modal-dialog { + margin-bottom: 3.5rem !important; +} + +#admin-page { + margin-left: 32px; +} + +.debug-hidden { + display: none; +} + +#system-banner-container, #member-banner-container { + z-index: -1; +} + +.debug-outer:hover .debug-hidden { + display: inline-block; +} + +.modal { + backdrop-filter: blur(30px); + -webkit-backdrop-filter: blur(30px); +} + +nav.navbar { + background-color: rgba(0, 0, 0, .75) !important; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border-bottom: 1px solid rgba(255, 255, 255, .25); +} + +.hpd-item-card:hover { + background-color: rgba(255, 255, 255, .15) !important; +} + +.hpd-item-card:active, .hpd-item-card:focus { + background-color: rgba(255, 255, 255, .2) !important; +} + +.hpd-system { + transition: opacity 200ms; +} + +.hpd-item-card { + outline-style: solid; + outline-width: 0; + transition: background-color 200ms, outline-width 200ms; +} + +.hpd-item-card:hover { + outline-style: solid; + outline-width: 4px; +} + +.hpd-item-card:active { + outline-style: solid; + outline-width: 6px; +} + +.hpd-system:hover { + opacity: .9 !important; +} + +.hpd-system:active, .hpd-system:focus { + opacity: .8 !important; +} + +.hpd-link:hover { + background-color: rgba(255, 255, 255, .15) !important; +} + +.hpd-link:active, .hpd-link:focus { + background-color: rgba(255, 255, 255, .2) !important; +} + +.list-separator-mobile { + display: none; +} + +@media (max-width: 991px) { + #hpd-cloudburst > div, #hpd-raindrops > div, #hpd-legacy > div, #hpd-other > div { + grid-template-columns: repeat(3, 1fr) !important; + } + + .list-separator-desktop { + display: none; + } + + span.list-separator-mobile { + display: inline; + } +} + +@media (max-width: 768px) { + #hpd-cloudburst > div, #hpd-raindrops > div, #hpd-legacy > div, #hpd-other > div { + grid-template-columns: repeat(2, 1fr) !important; + } +} + +@media (max-width: 575px) { + #hpd-cloudburst > div, #hpd-raindrops > div, #hpd-legacy > div, #hpd-other > div { + grid-template-columns: repeat(1, 1fr) !important; + } + + .hpd-item-card img { + display: inline-block !important; + margin-right: 5px !important; + height: 32px !important; + width: 32px !important; + } + + #hpd-cloudburst > div, #hpd-raindrops > div, #hpd-legacy > div, #hpd-other > div { + grid-gap: 5px !important; + } + + .hpd-item-card div { + display: inline-block !important; + } + + .hpd-item-card div:nth-child(3)::before { + content: "("; + padding-left: 5px; + color: white !important; + } + + .hpd-item-card div:nth-child(3)::after { + content: ")"; + color: white !important; + } +} + +.dropdown-menu { + background-color: #222 !important; +} + +.dropdown-item:hover { + background-color: rgba(255, 255, 255, .1) !important; +} + +.dropdown-item:active, .dropdown-item:focus { + background-color: rgba(255, 255, 255, .2) !important; +} + +.dropdown-item { + color: white !important; +} + +.dropdown-icon { + filter: invert(1) !important; +} + +.dropdown-toggle .dropdown-icon { + opacity: .5; !important; + transition: 200ms opacity !important; +} + +.dropdown-toggle:hover .dropdown-icon, .dropdown-toggle:active .dropdown-icon, .dropdown-toggle:focus .dropdown-icon { + opacity: .75 !important; +} + +dd { + margin-left: 20px; +} + +#system-info a { + color: white !important; +} + +#system-info a:hover { + opacity: .75; +} + +#system-info a:active, #system-info a:focus { + opacity: .5; +} + +@media (max-width: 991px) { + #member-card { + grid-template-columns: repeat(3, 1fr) !important; + } + + .species-name { + display: none; + } +} + +.member-small-only { + display: none; +} + +@media (max-width: 767px) { + #member-card { + grid-template-columns: 1fr !important; + text-align: left; + } + + #member-icon-mobile { + display: inline-block !important; + } + + #mobile-left { + text-align: left !important; + } + + #mobile-species { + display: inline-block !important; + } + + #system-info { + grid-template-columns: 1fr !important; + } + + #member-icon, #member-icon-outer { + display: none !important; + } + + #member-relations { + grid-template-columns: 1fr !important; + text-align: left; + } + + .member-small-separator { + display: none; + } + + .member-small-only { + display: inline-block; + } +} + +#page-content a { + color: #afd0ff; +} + +#page-content .btn-outline-light:hover { + color: black !important; +} + +#page-content a:hover { + opacity: .75; +} + +#page-content a:active, #page-content a:focus { + opacity: .5; +} + +.tooltip.show { + opacity: 1; +} + +.tooltip-inner { + background: #151515; + box-shadow: 3px 4px 10px #ffffff26; +} + +.alert { + filter: invert(1) hue-rotate(180deg); +} + +.member-link { + color: white !important; + text-decoration: none !important; +} + +.system-action { + border-radius: 10px; + color: white !important; + text-decoration: none !important; + cursor: pointer; + transition: background 200ms; +} + +.system-action:hover { + background: rgba(255, 255, 255, .1); +} + +.table-dark { + --bs-table-bg: #000000; +} + +.comparison { + display: grid; + grid-template-columns: 3fr 1.5fr 1.5fr 2fr repeat(4, 1fr); +} + +.comparison-header { + border-bottom: 2px solid rgba(255, 255, 255, .25); + font-weight: bold; +} + +.comparison-item { + padding: 5px 10px; + text-align: center; +} + +.comparison-item-clickable:hover { + background-color: rgba(255, 255, 255, .1); +} + +.comparison-item-clickable:active, .comparison-item-clickable:focus { + background-color: rgba(255, 255, 255, .25); +} + +@media (min-width: 1400px) { + .comparison-header-l0 { + display: inline; + } + .comparison-header-l1 { + display: none; + } + .comparison-header-l2 { + display: none; + } + .comparison-header-l3 { + display: none; + } + .comparison-header-l4 { + display: none; + } + .comparison-header-l5 { + display: none; + } + .comparison-name-full { + display: inline; + } + .comparison-name-small { + display: none; + } + .comparison-colors { + display: inline; + } + .comparison-relations-count { + display: none; + } + .comparison-relations-full { + display: inline; + } +} + +@media (max-width: 1399px) { + .comparison-header-l0 { + display: none; + } + .comparison-header-l1 { + display: inline; + } + .comparison-header-l2 { + display: none; + } + .comparison-header-l3 { + display: none; + } + .comparison-header-l4 { + display: none; + } + .comparison-header-l5 { + display: none; + } + .comparison-name-full { + display: inline; + } + .comparison-name-small { + display: none; + } + .comparison-colors { + display: inline; + } + .comparison-relations-count { + display: none; + } + .comparison-relations-full { + display: inline; + } +} + +@media (max-width: 1199px) { + .comparison-header-l0 { + display: none; + } + .comparison-header-l1 { + display: none; + } + .comparison-header-l2 { + display: initial; + } + .comparison-header-l3 { + display: none; + } + .comparison-header-l4 { + display: none; + } + .comparison-header-l5 { + display: none; + } + .comparison-name-full { + display: none; + } + .comparison-name-small { + display: inline; + } + .comparison-colors { + display: inline; + } + .comparison-relations-count { + display: inline; + } + .comparison-relations-full { + display: none; + } +} + +@media (max-width: 991px) { + .comparison-header-l0 { + display: none; + } + .comparison-header-l1 { + display: none; + } + .comparison-header-l2 { + display: none; + } + .comparison-header-l3 { + display: initial; + } + .comparison-header-l4 { + display: none; + } + .comparison-header-l5 { + display: none; + } + .comparison-name-full { + display: none; + } + .comparison-name-small { + display: inline; + } + .comparison-colors { + display: none !important; + } + .comparison-relations-count { + display: inline; + } + .comparison-relations-full { + display: none; + } +} + +@media (max-width: 767px) { + .comparison-header-l0 { + display: none; + } + .comparison-header-l1 { + display: none; + } + .comparison-header-l2 { + display: none; + } + .comparison-header-l3 { + display: none; + } + .comparison-header-l4 { + display: initial; + } + .comparison-header-l5 { + display: none; + } + .comparison-name-full { + display: none; + } + .comparison-name-small { + display: none; + } + .comparison-colors { + display: none !important; + } + .comparison-relations-count { + display: inline; + } + .comparison-relations-full { + display: none; + } +} + +@media (max-width: 575px) { + .comparison-header-l0 { + display: none; + } + .comparison-header-l1 { + display: none; + } + .comparison-header-l2 { + display: none; + } + .comparison-header-l3 { + display: none; + } + .comparison-header-l4 { + display: none; + } + .comparison-header-l5 { + display: initial; + } + .comparison-name-full { + display: none; + } + .comparison-name-small { + display: none; + } + .comparison-colors { + display: none !important; + } + .comparison { + grid-template-columns: repeat(4, 2fr) repeat(4, 1fr) !important; + } + .comparison-relations-count { + display: inline; + } + .comparison-relations-full { + display: none; + } +} + +.tree-first-separator { + height: 14px !important; + top: 0 !important; +} + +.tree-l0-separator { + display: inline-block; + width: 20px; + margin-left: 35px; + border-bottom: 1px solid white; + border-left: 1px solid white; + height: 26px; + position: relative; + top: -12px; +} + +.tree-l1 .tree-l0-separator { + border-bottom: none !important; +} + +.tree-l1-separator { + display: inline-block; + width: 20px; + margin-left: 35px; + border-bottom: 1px solid white; + border-left: 1px solid white; + height: 26px; + position: relative; + top: -12px; + left: -10px; +} + +.tree-l1 .tree-l0-separator { + width: 30px; +} + +.tree-l1 .tree-inner { + position: relative; + left: -10px; +} + +.tree-l1 .tree-l0-separator { + border-bottom: none !important; +} + +.tree-l2-separator { + display: inline-block; + width: 20px; + margin-left: 35px; + border-bottom: 1px solid white; + border-left: 1px solid white; + height: 26px; + position: relative; + top: -12px; + left: -10px; +} + +.tree-l2 .tree-l1-separator { + width: 30px; +} + +.tree-l2 .tree-l0-separator { + width: 30px; +} + +.tree-l2 .tree-inner { + position: relative; + left: -10px; +} + +.tree-inner { + display: inline-block; +} + +.navbar-collapse.collapse.show, .navbar-collapse.collapsing { + background: black; + margin: 7px -12px; + padding: 0 12px; + border-bottom: 1px solid rgba(255, 255, 255, .25); +} + +.new-homepage-system-title:hover { + opacity: .85; +} + +#new-homepage-systems { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-gap: 20px; +} + +@media (max-width: 991px) { + #new-homepage-systems { + grid-template-columns: 1fr !important; + } +} + +.new-homepage-system-list { + background-color: rgba(255, 255, 255, .1); + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + display: grid; +} + +.new-homepage-link-last { + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; +} + +.new-homepage-link:hover { + opacity: .85; +} + +.new-homepage-link:active { + opacity: .75; +} + +.new-homepage-system-title:active { + opacity: .75; +} + +peh-muted { + --bs-text-opacity: 1; + color: #6c757d!important; +} + +.dropdown-toggle::after { + margin-bottom: -3px !important; +} + +.navbar-nav { + width: 100%; +} + +.card { + background-color: #111 !important; + border: 1px solid rgba(255, 255, 255, .125) !important; +} + +#member-banner-container > #member-banner > #system-info { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +#member-details { + background: rgba(255, 255, 255, .1); + border: 1px solid transparent; + border-top: none; + padding: 10px 20px; + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + display: grid; + grid-template-columns: repeat(4, 1fr); + text-align: center; +} + +#member-details.member-details-loggedIn { + border-radius: 0; + padding-bottom: 0 !important; +} + +#member-details-2 { + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + padding: 10px 20px; + text-align: center; + display: grid; + grid-template-columns: repeat(4, 1fr); + background: rgba(255, 255, 255, .1); + border: 1px solid transparent; + border-top: none; +} + +.navbar-collapse.show { + z-index: 99999; +} + +@media (max-width: 991px) { + div#member-details.member-details-loggedIn, div#member-details.member-details-loggedIn2 { + grid-template-columns: repeat(3, 1fr) !important; + text-align: center; + } + + #member-details { + grid-template-columns: 1fr !important; + text-align: left; + } +} + +@media (max-width: 767px) { + div#member-details.member-details-loggedIn, div#member-details.member-details-loggedIn2 { + grid-template-columns: repeat(2, 1fr) !important; + text-align: left; + } + + #member-details-2 { + grid-template-columns: repeat(2, 1fr) !important; + text-align: left; + } + + .member-detail-desktop { + display: none !important; + } + + .member-detail-mobile { + display: initial !important; + } +} + +.member-detail-desktop { + display: initial; +} + +.member-detail-mobile { + display: none; +} + +.linked-card { + opacity: 1 !important; + color: white !important; + text-decoration: none !important; +} + +.linked-card:hover { + opacity: .75 !important; +} + +.linked-card:active { + opacity: .5 !important; +} + +.navbar-brand { + position: relative; + z-index: 9999; +} + +html, body { + overflow-x: hidden; +} + +.form-check-input { + filter: invert(1) hue-rotate(180deg); +} + +body { + margin: 0 !important; +} + +#app { + background-color: var(--palette-0); + position: fixed; + top: 52px; + right: 10px; + bottom: 10px; + overflow: auto; + left: 64px; + border-radius: 15px; +} + +#app > #member-banner-container, #system-banner-container { + top: 52px !important; + width: calc(100% - 74px) !important; + border-top-left-radius: 15px !important; + border-top-right-radius: 15px !important; +} + +div#member-banner-inner, div#system-banner-inner { + border-top-left-radius: 15px !important; + border-top-right-radius: 15px !important; + background: linear-gradient(180deg, rgba(var(--palette-0-rgb),0) 0%, rgba(var(--palette-0-rgb),.25) 50%, rgba(var(--palette-0-rgb),1) 100%) !important; +} + +.alert, .btn-close, .text-danger, .text-success, .form-select, .ck-toolbar, .system-action img, #member-designs-inner img, .list-group-item img { + filter: none !important; +} + +@media (prefers-color-scheme: light), (prefers-color-scheme: no-preference) { + .dark-only { + display: none !important; + } +} + +@media (prefers-color-scheme: dark) { + .light-only { + display: none !important; + } +} + +hr { + border-color: var(--bs-link-color) !important; +} + +.modal { + z-index: 9999999 !important; +} + +.modal-backdrop { + display: none !important; +} + +:root { + /* Overrides the border radius setting in the theme. */ + --ck-border-radius: 4px !important; + + /* Overrides the default font size in the theme. */ + --ck-font-size-base: 14px !important; + + /* Helper variables to avoid duplication in the colors. */ + --ck-custom-background: var(--bs-tertiary-bg) !important; + --ck-custom-foreground: var(--palette-5) !important; + --ck-custom-border: var(--palette-3) !important; + --ck-custom-white: hsl(0, 0%, 100%) !important; + + /* -- Overrides generic colors. ------------------------------------------------------------- */ + + --ck-color-base-foreground: var(--ck-custom-background) !important; + --ck-color-focus-border: hsl(208, 90%, 62%) !important; + --ck-color-text: var(--palette-6) !important; + --ck-color-shadow-drop: hsla(0, 0%, 0%, 0.2) !important; + --ck-color-shadow-inner: hsla(0, 0%, 0%, 0.1) !important; + + /* -- Overrides the default .ck-button class colors. ---------------------------------------- */ + + --ck-color-button-default-background: var(--ck-custom-background) !important; + --ck-color-button-default-active-shadow: hsl(270, 2%, 23%) !important; + --ck-color-button-default-disabled-background: var(--ck-custom-background) !important; + + --ck-color-button-on-background: var(--ck-custom-foreground) !important; + --ck-color-button-on-active-background: hsl(255, 4%, 14%) !important; + --ck-color-button-on-active-shadow: hsl(240, 3%, 19%) !important; + --ck-color-button-on-disabled-background: var(--ck-custom-foreground) !important; + + --ck-color-button-action-background: hsl(168, 76%, 42%) !important; + --ck-color-button-action-hover-background: hsl(168, 76%, 38%) !important; + --ck-color-button-action-active-background: hsl(168, 76%, 36%) !important; + --ck-color-button-action-active-shadow: hsl(168, 75%, 34%) !important; + --ck-color-button-action-disabled-background: hsl(168, 76%, 42%) !important; + --ck-color-button-action-text: var(--ck-custom-white) !important; + + --ck-color-button-save: hsl(120, 100%, 46%) !important; + --ck-color-button-cancel: hsl(15, 100%, 56%) !important; + + /* -- Overrides the default .ck-dropdown class colors. -------------------------------------- */ + + --ck-color-dropdown-panel-background: var(--ck-custom-background) !important; + --ck-color-dropdown-panel-border: var(--ck-custom-foreground) !important; + + /* -- Overrides the default .ck-splitbutton class colors. ----------------------------------- */ + + --ck-color-split-button-hover-background: var(--ck-color-button-default-hover-background) !important; + --ck-color-split-button-hover-border: var(--ck-custom-foreground) !important; + + /* -- Overrides the default .ck-input class colors. ----------------------------------------- */ + + --ck-color-input-background: var(--ck-custom-background) !important; + --ck-color-input-border: hsl(257, 3%, 43%) !important; + --ck-color-input-text: hsl(0, 0%, 98%) !important; + --ck-color-input-disabled-background: hsl(255, 4%, 21%) !important; + --ck-color-input-disabled-border: hsl(250, 3%, 38%) !important; + --ck-color-input-disabled-text: hsl(0, 0%, 78%) !important; + + /* -- Overrides the default .ck-labeled-field-view class colors. ---------------------------- */ + + --ck-color-labeled-field-label-background: var(--ck-custom-background) !important; + + /* -- Overrides the default .ck-list class colors. ------------------------------------------ */ + + --ck-color-list-background: var(--ck-custom-background) !important; + --ck-color-list-button-hover-background: var(--palette-5) !important; + --ck-color-list-button-on-background: var(--palette-5) !important; + --ck-color-list-button-on-text: var(--ck-color-base-background) !important; + + /* -- Overrides the default .ck-balloon-panel class colors. --------------------------------- */ + + --ck-color-panel-background: var(--ck-custom-background) !important; + --ck-color-panel-border: var(--ck-custom-border) !important; + + /* -- Overrides the default .ck-toolbar class colors. --------------------------------------- */ + + --ck-color-toolbar-background: var(--ck-custom-background) !important; + --ck-color-toolbar-border: var(--ck-custom-border) !important; + + /* -- Overrides the default .ck-tooltip class colors. --------------------------------------- */ + + --ck-color-tooltip-background: hsl(252, 7%, 14%) !important; + --ck-color-tooltip-text: hsl(0, 0%, 93%) !important; + + /* -- Overrides the default colors used by the ckeditor5-image package. --------------------- */ + + --ck-color-image-caption-background: var(--bs-body-bg) !important; + --ck-color-image-caption-text: var(--bs-body-color) !important; + + /* -- Overrides the default colors used by the ckeditor5-widget package. -------------------- */ + + --ck-color-widget-blurred-border: hsl(0, 0%, 87%) !important; + --ck-color-widget-hover-border: hsl(43, 100%, 68%) !important; + --ck-color-widget-editable-focus-background: var(--ck-custom-white) !important; + + /* -- Overrides the default colors used by the ckeditor5-link package. ---------------------- */ + + --ck-color-link-default: hsl(190, 100%, 75%) !important; + + /* CUSTOM OPTIONS */ + --ck-color-button-on-color: var(--bs-link-color) !important; + --ck-color-button-on-hover-background: var(--palette-3) !important; + --ck-color-button-default-hover-background: var(--palette-4) !important; + --ck-color-list-button-on-background-focus: var(--palette-1) !important; + --ck-color-base-background: transparent !important; + --ck-color-button-default-active-background: var(--palette-2) !important; +} + +:root { + --ck-color-base-border: var(--bs-secondary-bg) !important; + --ck-focus-outer-shadow: transparent !important; + --ck-focus-ring: 1px solid transparent !important; +} + +.ck.ck-button.ck-on.ck-button_with-text { + color: var(--bs-body-color) !important; +} + +.ck.ck-content { + background-color: var(--bs-body-bg) !important; + color: var(--bs-body-color) !important; +} + +.ck.ck-content.ck-focused { + border-color: var(--bs-link-color) !important; +} + +.relation { + background-color: var(--palette-1) !important; +} + +.relation-intro { + background-color: var(--palette-2) !important; + border-right: 1px solid var(--palette-3) !important; +} \ No newline at end of file diff --git a/assets/logo/dark.svg b/assets/logo/dark.svg new file mode 100644 index 0000000..38557db --- /dev/null +++ b/assets/logo/dark.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/logo/light-2023.css b/assets/logo/light-2023.css new file mode 100644 index 0000000..b082640 --- /dev/null +++ b/assets/logo/light-2023.css @@ -0,0 +1,182 @@ +@media (prefers-color-scheme: light) { + #banner-lower { + background: #dddddd8a !important; + } + + #timeline-container { + background: #dddddd8a !important; + border-top-color: rgba(0, 0, 0, .1) !important; + } + + #timeline a, .new-homepage-system-title, .new-homepage-link, .home-legacy, .member-card-name, .member-card-prefix, .member-card-prefix code, #navigation-pane *, #mobile-navigation-box-container *, .member-link, .relation-intro, .system-action, #member-banner code, #system-info a { + color: var(--bs-body-color) !important; + } + + .timeline-indicator { + border-right-color: rgba(0, 0, 0, .5) !important; + } + + .home-legacy-icon, #explicit-modal img { + filter: invert(1); + } + + #hpd-legacy, .hpd-item-card { + background-color: rgba(0, 0, 0, .05) !important; + } + + .hpd-item-card:hover { + background-color: rgba(0, 0, 0, .1) !important; + } + + .hpd-item-card:active { + background-color: rgba(0, 0, 0, .15) !important; + } + + #navigation-pane { + background-color: #ddd !important; + border-right: 1px solid rgba(0, 0, 0, .1) !important; + } + + #mobile-navigation { + background-color: #ddd !important; + border-top: 1px solid rgba(0, 0, 0, .1) !important; + } + + .dropdown-icon, #login-link img, .alert, .btn-close, .relation img, .text-danger, .text-success, .form-select, .ck-toolbar, .form-check-input, .system-action img, #member-designs-inner img, .form-control, .list-group-item img { + filter: none !important; + } + + #login-link, #pane-header, .pane-group { + border-bottom: 1px solid rgba(0, 0, 0, .1) !important; + } + + .pane-group-category { + background: rgba(0, 0, 0, .025) !important; + border: 1px solid rgba(0, 0, 0, .05) !important; + } + + .pane-group-item:hover, .mobile-navigation-item:hover { + background-color: rgba(0, 0, 0, .05); + } + + .mobile-navigation-item:active, .mobile-navigation-item.open { + background-color: rgba(0, 0, 0, .1); + } + + #mobile-navigation-box-container { + background-color: rgba(255, 255, 255, .5) !important; + } + + #page-content a { + color: var(--bs-link-color); + } + + #btn-on { + background: hsl(0, 80%, 75%) !important; + } + + .card { + background-color: #fff !important; + border: 1px solid rgba(0,0,0,.125) !important; + color: black; + } + + .btn-outline-light, #page-content .btn-outline-light { + color: #212529 !important; + border-color: #212529 !important; + } + + .btn-outline-light:hover, #page-content .btn-outline-light:hover { + color: #fff !important; + background-color: #212529 !important; + border-color: #212529 !important; + } + + .btn-check:active+.btn-outline-light, .btn-check:checked+.btn-outline-light, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show, .btn-outline-light:active, #page-content .btn-outline-light:active { + color: #fff !important; + background-color: #212529 !important; + border-color: #212529 !important; + } + + .form-control { + color: #212529 !important; + background-color: #fff !important; + background-clip: padding-box !important; + border: 1px solid #ced4da !important; + } + + .contact-item { + background-color: #ddd; + } + + .contact-method { + background-color: #ccc; + } + + .dropdown-menu { + background-color: #fff !important; + } + + .dropdown-item { + color: #212529 !important; + opacity: 1 !important; + } + + .dropdown-item:focus, .dropdown-item:hover { + color: #1e2125 !important; + background-color: #e9ecef !important; + } + + .day-gradient { + color: white; + } + + #system-banner-inner, #member-banner-inner { + background: linear-gradient(180deg, rgba(239,239,239,0) 0%, rgba(239,239,239,.25) 50%, rgba(239,239,239,1) 100%) !important; + } + + #system-page, #member-page { + background-color: rgba(226,226,226,0.8) !important; + } + + .system-info-system { + background-color: rgba(0, 0, 0, .05) !important; + } + + #system-actions { + background-color: rgba(0, 0, 0, .025) !important; + } + + .system-action:hover { + background: rgba(0, 0, 0, .05) !important; + } + + #member-designs-inner { + background-color: rgba(20, 20, 20, .05) !important; + } + + .btn-dark { + color: #000 !important; + background-color: #f8f9fa !important; + border-color: #f8f9fa !important; + } + + .btn-dark:hover { + color: #000 !important; + background-color: #f9fafb !important; + border-color: #f9fafb !important; + } + + .btn-check:active+.btn-dark, .btn-check:checked+.btn-dark, .btn-dark.active, .btn-dark:active, .show>.btn-dark.dropdown-toggle { + color: #000 !important; + background-color: #f9fafb !important; + border-color: #f9fafb !important; + } + + .btn-check:focus+.btn-dark, .btn-dark:focus { + color: #000 !important; + background-color: #f9fafb !important; + border-color: #f9fafb !important; + box-shadow: 0 0 0 0.25rem rgba(211,212,213,.5) !important; + } +} \ No newline at end of file diff --git a/assets/logo/light.svg b/assets/logo/light.svg new file mode 100644 index 0000000..c76f07e --- /dev/null +++ b/assets/logo/light.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/icons.php b/icons.php new file mode 100644 index 0000000..6babbdc --- /dev/null +++ b/icons.php @@ -0,0 +1,29 @@ + 0 && hexdec($_GET["color"]) < 16777215) { + $color = trim($_GET["color"]); + } else { + $color = "000000"; + } +} else { + $color = "000000"; +} + +header("Content-Type: image/svg+xml"); + +echo(str_replace(' width="48">', ' width="48" fill="#' . $color . '">', file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/assets/icons/new/" . $name))); \ No newline at end of file diff --git a/includes/components/2023ui.inc b/includes/components/2023ui.inc new file mode 100644 index 0000000..556a8b5 --- /dev/null +++ b/includes/components/2023ui.inc @@ -0,0 +1,114 @@ + + + + + \ No newline at end of file diff --git a/includes/components/explicit.php b/includes/components/explicit.php index 4c55896..3e7675c 100644 --- a/includes/components/explicit.php +++ b/includes/components/explicit.php @@ -21,16 +21,18 @@ - + #explicit-modal .modal-content { + border: 1px solid rgba(255, 255, 255, .2); + background-color: #111; + } + + + +

+ + .css" rel="preload" as="style"> + .css" rel="preload" as="style"> + .css" rel="stylesheet"> - - + + <?= $title && $title !== "-" ? $title . " · " : "" ?>Cold Haze .png" type="image/png"> - + .css" rel="stylesheet"> - + style="background-color: #000;" style="background-color: var(--palette-1);">
- + @@ -230,6 +239,367 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/functions.inc"; + "); + + echo("Color difference debug\n======================\n\n"); + echo("Member color: #" . $member["color"] . "\n\n"); + } + + $sr = hexdec(substr($member["color"], 0, 2)); + $sg = hexdec(substr($member["color"], 2, 2)); + $sb = hexdec(substr($member["color"], 4, 2)); + + $differencesAll = []; + + foreach ($palettes["list"] as $id => $palette) { + $colors = [ + ...explode(",", $palette["dark"]), + ...explode(",", $palette["light"]) + ]; + + $importantColors = [ + $colors[5], + $colors[9], + $colors[15], + $colors[19] + ]; + $differences = []; + + if (isset($_GET["debug"])) echo("Palette " . $id . ": " . implode(", ", array_map(function ($i) { return "#$i"; }, $importantColors)) . "\n"); + + foreach ($importantColors as $color) { + $r = hexdec(substr($color, 0, 2)); + $g = hexdec(substr($color, 2, 2)); + $b = hexdec(substr($color, 4, 2)); + + $dr = abs($r - $sr); + $dg = abs($g - $sg); + $db = abs($b - $sb); + + $differences[] = $dr + $dg + $db; + } + + $total = array_reduce($differences, function ($a, $b) { return $a + $b; }) / count($differences); + + if (isset($_GET["debug"])) { + echo(" " . implode(", ", $differences) . "\n"); + echo(" " . $total . "\n\n"); + } + + $differencesAll[] = [ + "id" => $id, + "difference" => $total + ]; + } + + usort($differencesAll, function ($a, $b) { + return $a["difference"] - $b["difference"]; + }); + + if (isset($_GET["debug"])) { + echo("Smaller: " . $differencesAll[0]["id"] . ", " . $differencesAll[0]["difference"]); + } + + $selectedPalette = $differencesAll[0]["id"]; + + if (isset($_GET["debug"])) { + echo(""); + die(); + } + } + + global $userPalette; + $userPalette = $palettes["list"][$selectedPalette]; + + function rgb($color) { + return hexdec(substr($color, 0, 2)) . "," . hexdec(substr($color, 2, 2)) . "," . hexdec(substr($color, 4, 2)); + } + + function icon($name, $dark = null, $body = false) { + global $userPalette; + + if (isset($dark)) { + return "/assets/icons/new/" . $name . ".svg?color=" . explode(",", $userPalette[$dark ? "dark" : "light"])[$body ? 6 : 9]; + } else { + return "/assets/icons/new/" . $name . ".svg?color=" . explode(",", $userPalette[isset($_COOKIE["new2023UIDarkMode"]) && $_COOKIE["new2023UIDarkMode"] === "yes" ? "dark" : "light"])[$body ? 6 : 9]; + } + } + + foreach ([ "dark", "light" ] as $theme) { $palette = explode(",", $userPalette[$theme]); ?> + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/includes/components/mobilenav.inc b/includes/components/mobilenav.inc index 7b49434..e42e9ab 100644 --- a/includes/components/mobilenav.inc +++ b/includes/components/mobilenav.inc @@ -1,4 +1,4 @@ - +
\ No newline at end of file + + \ No newline at end of file diff --git a/includes/components/navigation.inc b/includes/components/navigation.inc index 1761937..1d24dea 100644 --- a/includes/components/navigation.inc +++ b/includes/components/navigation.inc @@ -1,444 +1,448 @@ "raindrops", - "id" => "gdapd" - ], - [ - "name" => "cloudburst", - "id" => "ynmuc" - ], - [ - "name" => "other", - "id" => $app["other"]["id"] - ] -] as $cacheSystem) { - if (!isset($cache[$cacheSystem["name"]]["public"])) { - $isLoggedInOldState = $isLoggedIn; - $isLowerLoggedInOldState = $isLowerLoggedIn; + if (!isset($cache["raindrops"])) $cache["raindrops"] = []; + if (!isset($cache["cloudburst"])) $cache["cloudburst"] = []; + if (!isset($cache["other"])) $cache["other"] = []; - $isLoggedIn = false; - $isLowerLoggedIn = false; - - $cache[$cacheSystem["name"]]["public"] = array_map(function ($member) { - return [ - "name" => $member['display_name'] ?? $member['name'], - "icon" => getAsset($member["system"], $member["id"], "heads"), - "invert" => false, - "link" => "/$member[name]", - "stepped" => null, - "private" => false - ]; - }, array_filter(scoreOrder(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$cacheSystem[id]/members.json"), true), "$cacheSystem[id]"), "$cacheSystem[id]"), function ($member) { - return $member['name'] !== "unknown" && $member['name'] !== "fusion" && $member['name'] !== "new"; - })); - - $isLoggedIn = $isLoggedInOldState; - $isLowerLoggedIn = $isLowerLoggedInOldState; - } + foreach ([ + [ + "name" => "raindrops", + "id" => "gdapd" + ], + [ + "name" => "cloudburst", + "id" => "ynmuc" + ], + [ + "name" => "other", + "id" => $app["other"]["id"] + ] + ] as $cacheSystem) { + if (!isset($cache[$cacheSystem["name"]]["public"])) { + $isLoggedInOldState = $isLoggedIn; + $isLowerLoggedInOldState = $isLowerLoggedIn; - if (!isset($cache[$cacheSystem["name"]]["private"])) { - $isLoggedInOldState = $isLoggedIn; - $isLowerLoggedInOldState = $isLowerLoggedIn; + $isLoggedIn = false; + $isLowerLoggedIn = false; - $isLoggedIn = true; - $isLowerLoggedIn = false; + $cache[$cacheSystem["name"]]["public"] = array_map(function ($member) { + return [ + "name" => $member['display_name'] ?? $member['name'], + "icon" => getAsset($member["system"], $member["id"], "heads"), + "invert" => false, + "link" => "/$member[name]", + "stepped" => null, + "private" => false + ]; + }, array_filter(scoreOrder(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$cacheSystem[id]/members.json"), true), "$cacheSystem[id]"), "$cacheSystem[id]"), function ($member) { + return $member['name'] !== "unknown" && $member['name'] !== "fusion" && $member['name'] !== "new"; + })); - $cache[$cacheSystem["name"]]["private"] = array_map(function ($member) { - return [ - "name" => $member['display_name'] ?? $member['name'], - "icon" => getAsset($member["system"], $member["id"], "heads"), - "invert" => false, - "link" => "/$member[name]", - "stepped" => null, - "private" => false - ]; - }, array_filter(scoreOrder(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$cacheSystem[id]/members.json"), true), "$cacheSystem[id]"), "$cacheSystem[id]"), function ($member) { - return $member['name'] !== "unknown" && $member['name'] !== "fusion" && $member['name'] !== "new"; - })); + $isLoggedIn = $isLoggedInOldState; + $isLowerLoggedIn = $isLowerLoggedInOldState; + } - $isLoggedIn = $isLoggedInOldState; - $isLowerLoggedIn = $isLowerLoggedInOldState; - } -} + if (!isset($cache[$cacheSystem["name"]]["private"])) { + $isLoggedInOldState = $isLoggedIn; + $isLowerLoggedInOldState = $isLowerLoggedIn; -file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/cache/navigation.json", json_encode($cache)); + $isLoggedIn = true; + $isLowerLoggedIn = false; -$navigation_admin = [ - "admin" => !$isLowerLoggedIn, - "name" => "Private utilities", - "icon" => "/assets/icons/admin.svg", - "invert" => true, - "items" => [ - "alerts" => [ - "name" => null, - "minimal" => true, - "items" => [ - [ - "name" => $pages["emergency"]["name"][$lang["_name"]], - "icon" => "/assets/icons/emergency.svg", + $cache[$cacheSystem["name"]]["private"] = array_map(function ($member) { + return [ + "name" => $member['display_name'] ?? $member['name'], + "icon" => getAsset($member["system"], $member["id"], "heads"), "invert" => false, - "link" => "/-/emergency", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["wakeup"]["name"][$lang["_name"]], - "icon" => "/assets/icons/wakeup.svg", - "invert" => false, - "link" => "/-/wakeup", - "stepped" => null, - "private" => true - ], - [ - "name" => $pages["pleasure"]["name"][$lang["_name"]], - "icon" => "/assets/icons/pleasure.svg", - "invert" => false, - "link" => "/-/pleasure", + "link" => "/$member[name]", "stepped" => null, "private" => false + ]; + }, array_filter(scoreOrder(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$cacheSystem[id]/members.json"), true), "$cacheSystem[id]"), "$cacheSystem[id]"), function ($member) { + return $member['name'] !== "unknown" && $member['name'] !== "fusion" && $member['name'] !== "new"; + })); + + $isLoggedIn = $isLoggedInOldState; + $isLowerLoggedIn = $isLowerLoggedInOldState; + } + } + + file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/cache/navigation.json", json_encode($cache)); + + $navigation_admin = [ + "admin" => !$isLowerLoggedIn, + "name" => "Private utilities", + "icon" => "/assets/icons/admin.svg", + "invert" => true, + "items" => [ + "alerts" => [ + "name" => null, + "minimal" => true, + "items" => [ + [ + "name" => $pages["emergency"]["name"][$lang["_name"]], + "icon" => "/assets/icons/emergency.svg", + "invert" => false, + "link" => "/-/emergency", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["wakeup"]["name"][$lang["_name"]], + "icon" => "/assets/icons/wakeup.svg", + "invert" => false, + "link" => "/-/wakeup", + "stepped" => null, + "private" => true + ], + [ + "name" => $pages["pleasure"]["name"][$lang["_name"]], + "icon" => "/assets/icons/pleasure.svg", + "invert" => false, + "link" => "/-/pleasure", + "stepped" => null, + "private" => false + ] ] - ] - ], - "apps" => [ - "name" => $lang["navigation"]["apps"], - "minimal" => false, - "items" => [ - time() >= 1686787200 ? null : [ - "name" => "Front plannerEOL", - "icon" => "/assets/icons/fronting.svg", - "invert" => true, - "link" => "/-/fronting", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["evening"]["name"][$lang["_name"]] . (time() >= 1686787200 ? "" : "Beta"), - "icon" => "/assets/icons/evening.svg", - "invert" => true, - "link" => "/-/evening", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["profiles"]["name"][$lang["_name"]], - "icon" => "/assets/icons/profiles.svg", - "invert" => true, - "link" => "/-/profiles", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["money"]["name"][$lang["_name"]], - "icon" => "/assets/icons/money.svg", - "invert" => true, - "link" => "/-/money", - "stepped" => null, - "private" => true - ], - [ - "name" => $pages["contacts"]["name"][$lang["_name"]], - "icon" => "/assets/icons/contacts.svg", - "invert" => true, - "link" => "/-/contacts", - "stepped" => null, - "private" => true - ], - [ - "name" => $pages["schedules"]["name"][$lang["_name"]], - "icon" => "/assets/icons/schedules.svg", - "invert" => true, - "link" => "/-/schedules", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["docs"]["name"][$lang["_name"]], - "icon" => "/assets/icons/docs.svg", - "invert" => true, - "link" => "/-/docs", - "stepped" => null, - "private" => true - ], - time() >= 1688169600 ? null : [ - "name" => "DevicesEOL", - "icon" => "/assets/icons/computers.svg", - "invert" => true, - "link" => "/-/computers", - "stepped" => null, - "private" => true - ], - [ - "name" => $pages["travelling"]["name"][$lang["_name"]], - "icon" => "/assets/icons/travelling.svg", - "invert" => true, - "link" => "/-/travelling", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["stats"]["name"][$lang["_name"]], - "icon" => "/assets/icons/stats.svg", - "invert" => true, - "link" => "/-/stats", - "stepped" => null, - "private" => true - ], - [ - "name" => $pages["pair"]["name"][$lang["_name"]], - "icon" => "/assets/icons/pair.svg", - "invert" => true, - "link" => "/-/pair", - "stepped" => null, - "private" => true - ], - [ - "name" => $pages["sessions"]["name"][$lang["_name"]], - "icon" => "/assets/icons/sessions.svg", - "invert" => true, - "link" => "/-/sessions", - "stepped" => null, - "private" => true - ], - [ - "name" => $pages["logout"]["name"][$lang["_name"]], - "icon" => "/assets/icons/logout.svg", - "invert" => true, - "link" => "/-/logout", - "stepped" => null, - "private" => false + ], + "apps" => [ + "name" => $lang["navigation"]["apps"], + "minimal" => false, + "items" => [ + time() >= 1686787200 ? null : [ + "name" => "Front plannerEOL", + "icon" => "/assets/icons/fronting.svg", + "invert" => true, + "link" => "/-/fronting", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["evening"]["name"][$lang["_name"]] . (time() >= 1686787200 ? "" : "Beta"), + "icon" => "/assets/icons/evening.svg", + "invert" => true, + "link" => "/-/evening", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["profiles"]["name"][$lang["_name"]], + "icon" => "/assets/icons/profiles.svg", + "invert" => true, + "link" => "/-/profiles", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["money"]["name"][$lang["_name"]], + "icon" => "/assets/icons/money.svg", + "invert" => true, + "link" => "/-/money", + "stepped" => null, + "private" => true + ], + [ + "name" => $pages["contacts"]["name"][$lang["_name"]], + "icon" => "/assets/icons/contacts.svg", + "invert" => true, + "link" => "/-/contacts", + "stepped" => null, + "private" => true + ], + [ + "name" => $pages["schedules"]["name"][$lang["_name"]], + "icon" => "/assets/icons/schedules.svg", + "invert" => true, + "link" => "/-/schedules", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["docs"]["name"][$lang["_name"]], + "icon" => "/assets/icons/docs.svg", + "invert" => true, + "link" => "/-/docs", + "stepped" => null, + "private" => true + ], + time() >= 1688169600 ? null : [ + "name" => "DevicesEOL", + "icon" => "/assets/icons/computers.svg", + "invert" => true, + "link" => "/-/computers", + "stepped" => null, + "private" => true + ], + [ + "name" => $pages["travelling"]["name"][$lang["_name"]], + "icon" => "/assets/icons/travelling.svg", + "invert" => true, + "link" => "/-/travelling", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["stats"]["name"][$lang["_name"]], + "icon" => "/assets/icons/stats.svg", + "invert" => true, + "link" => "/-/stats", + "stepped" => null, + "private" => true + ], + [ + "name" => $pages["pair"]["name"][$lang["_name"]], + "icon" => "/assets/icons/pair.svg", + "invert" => true, + "link" => "/-/pair", + "stepped" => null, + "private" => true + ], + [ + "name" => $pages["sessions"]["name"][$lang["_name"]], + "icon" => "/assets/icons/sessions.svg", + "invert" => true, + "link" => "/-/sessions", + "stepped" => null, + "private" => true + ], + [ + "name" => $pages["logout"]["name"][$lang["_name"]], + "icon" => "/assets/icons/logout.svg", + "invert" => true, + "link" => "/-/logout", + "stepped" => null, + "private" => false + ] + ] + ], + "sort" => [ + "name" => "Sorted members lists", + "minimal" => false, + "items" => [ + [ + "name" => $pages["splitting"]["name"][$lang["_name"]], + "icon" => "/assets/icons/splitting.svg", + "invert" => true, + "link" => "/-/splitting", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["byfront"]["name"][$lang["_name"]], + "icon" => "/assets/icons/byfront.svg", + "invert" => true, + "link" => "/-/byfront", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["alphabet"]["name"][$lang["_name"]], + "icon" => "/assets/icons/alphabet.svg", + "invert" => true, + "link" => "/-/alphabet", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["s:species"]["name"][$lang["_name"]], + "icon" => "/assets/icons/species.svg", + "invert" => true, + "link" => "/-/byspecies", + "stepped" => null, + "private" => false + ], ] - ] - ], - "sort" => [ - "name" => "Sorted members lists", - "minimal" => false, - "items" => [ - [ - "name" => $pages["splitting"]["name"][$lang["_name"]], - "icon" => "/assets/icons/splitting.svg", - "invert" => true, - "link" => "/-/splitting", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["byfront"]["name"][$lang["_name"]], - "icon" => "/assets/icons/byfront.svg", - "invert" => true, - "link" => "/-/byfront", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["alphabet"]["name"][$lang["_name"]], - "icon" => "/assets/icons/alphabet.svg", - "invert" => true, - "link" => "/-/alphabet", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["s:species"]["name"][$lang["_name"]], - "icon" => "/assets/icons/species.svg", - "invert" => true, - "link" => "/-/byspecies", - "stepped" => null, - "private" => false - ], ] ] - ] -]; -$navigation_global = [ - "admin" => false, - "name" => $lang["navigation"]["general"], - "icon" => "/assets/icons/global.svg", - "invert" => true, - "items" => [ - "main" => [ - "name" => null, - "minimal" => false, - "items" => [ - [ - "name" => $pages["home"]["name"][$lang["_name"]], - "icon" => "/assets/icons/home.svg", - "invert" => true, - "link" => "/", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["relations"]["name"][$lang["_name"]], - "icon" => "/assets/icons/relations.svg", - "invert" => true, - "link" => "/-/relations", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["terminology"]["name"][$lang["_name"]], - "icon" => "/assets/icons/terminology.svg", - "invert" => true, - "link" => "/-/terminology", - "stepped" => null, - "private" => false + ]; + $navigation_global = [ + "admin" => false, + "name" => $lang["navigation"]["general"], + "icon" => "/assets/icons/global.svg", + "invert" => true, + "items" => [ + "main" => [ + "name" => null, + "minimal" => false, + "items" => [ + [ + "name" => $pages["home"]["name"][$lang["_name"]], + "icon" => "/assets/icons/home.svg", + "invert" => true, + "link" => "/", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["relations"]["name"][$lang["_name"]], + "icon" => "/assets/icons/relations.svg", + "invert" => true, + "link" => "/-/relations", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["terminology"]["name"][$lang["_name"]], + "icon" => "/assets/icons/terminology.svg", + "invert" => true, + "link" => "/-/terminology", + "stepped" => null, + "private" => false + ] ] ] ] - ] -]; -$navigation_cloudburst = [ - "admin" => false, - "name" => "Cloudburst System", - "icon" => getAsset("ynmuc"), - "invert" => false, - "items" => [ - "header" => [ - "name" => null, - "minimal" => false, - "items" => [ - [ - "name" => $lang["navigation"]["about"], - "icon" => "/assets/icons/about.svg", - "invert" => true, - "link" => "/cloudburst", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["s:history"]["name"][$lang["_name"]], - "icon" => "/assets/icons/history.svg", - "invert" => true, - "link" => "/cloudburst/-/history", - "stepped" => null, - "private" => false + ]; + $navigation_cloudburst = [ + "admin" => false, + "name" => "Cloudburst System", + "icon" => getAsset("ynmuc"), + "invert" => false, + "items" => [ + "header" => [ + "name" => null, + "minimal" => false, + "items" => [ + [ + "name" => $lang["navigation"]["about"], + "icon" => "/assets/icons/about.svg", + "invert" => true, + "link" => "/cloudburst", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["s:history"]["name"][$lang["_name"]], + "icon" => "/assets/icons/history.svg", + "invert" => true, + "link" => "/cloudburst/-/history", + "stepped" => null, + "private" => false + ] ] + ], + "members" => [ + "name" => $lang["navigation"]["members"], + "minimal" => false, + "items" => $cache["cloudburst"][$isLoggedIn || $isLowerLoggedIn ? "private" : "public"] ] - ], - "members" => [ - "name" => $lang["navigation"]["members"], - "minimal" => false, - "items" => $cache["cloudburst"][$isLoggedIn || $isLowerLoggedIn ? "private" : "public"] ] - ] -]; -$navigation_other = [ - "admin" => !$isLowerLoggedIn, - "name" => $app["other"]["name"], - "icon" => getAsset($app["other"]["id"]), - "invert" => false, - "items" => [ - "header" => [ - "name" => null, - "minimal" => false, - "items" => [ - [ - "name" => $lang["navigation"]["about"], - "icon" => "/assets/icons/about.svg", - "invert" => true, - "link" => "/" . $app["other"]["slug"], - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["s:history"]["name"][$lang["_name"]], - "icon" => "/assets/icons/history.svg", - "invert" => true, - "link" => "/" . $app["other"]["slug"] . "/-/history", - "stepped" => null, - "private" => false + ]; + $navigation_other = [ + "admin" => !$isLowerLoggedIn, + "name" => $app["other"]["name"], + "icon" => getAsset($app["other"]["id"]), + "invert" => false, + "items" => [ + "header" => [ + "name" => null, + "minimal" => false, + "items" => [ + [ + "name" => $lang["navigation"]["about"], + "icon" => "/assets/icons/about.svg", + "invert" => true, + "link" => "/" . $app["other"]["slug"], + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["s:history"]["name"][$lang["_name"]], + "icon" => "/assets/icons/history.svg", + "invert" => true, + "link" => "/" . $app["other"]["slug"] . "/-/history", + "stepped" => null, + "private" => false + ] ] + ], + "members" => [ + "name" => $lang["navigation"]["members"], + "minimal" => false, + "items" => $cache["other"][$isLoggedIn || $isLowerLoggedIn ? "private" : "public"] ] - ], - "members" => [ - "name" => $lang["navigation"]["members"], - "minimal" => false, - "items" => $cache["other"][$isLoggedIn || $isLowerLoggedIn ? "private" : "public"] ] - ] -]; -$navigation_raindrops = [ - "admin" => false, - "name" => "Raindrops System", - "icon" => getAsset("gdapd"), - "invert" => false, - "items" => [ - "header" => [ - "name" => null, - "minimal" => false, - "items" => [ - [ - "name" => $lang["navigation"]["about"], - "icon" => "/assets/icons/about.svg", - "invert" => true, - "link" => "/raindrops", - "stepped" => null, - "private" => false - ], - [ - "name" => $pages["s:history"]["name"][$lang["_name"]], - "icon" => "/assets/icons/history.svg", - "invert" => true, - "link" => "/raindrops/-/history", - "stepped" => null, - "private" => false + ]; + $navigation_raindrops = [ + "admin" => false, + "name" => "Raindrops System", + "icon" => getAsset("gdapd"), + "invert" => false, + "items" => [ + "header" => [ + "name" => null, + "minimal" => false, + "items" => [ + [ + "name" => $lang["navigation"]["about"], + "icon" => "/assets/icons/about.svg", + "invert" => true, + "link" => "/raindrops", + "stepped" => null, + "private" => false + ], + [ + "name" => $pages["s:history"]["name"][$lang["_name"]], + "icon" => "/assets/icons/history.svg", + "invert" => true, + "link" => "/raindrops/-/history", + "stepped" => null, + "private" => false + ] ] + ], + "members" => [ + "name" => $lang["navigation"]["members"], + "minimal" => false, + "items" => $cache["raindrops"][$isLoggedIn || $isLowerLoggedIn ? "private" : "public"] ] - ], - "members" => [ - "name" => $lang["navigation"]["members"], - "minimal" => false, - "items" => $cache["raindrops"][$isLoggedIn || $isLowerLoggedIn ? "private" : "public"] ] - ] -]; + ]; -global $parts; + global $parts; -if (isset($parts) && isset($parts[0]) && $parts[0] === $app["other"]["slug"]) { - $navigation = [ - "other" => $navigation_other, - "cloudburst" => $navigation_cloudburst, - "raindrops" => $navigation_raindrops, - "admin" => $navigation_admin, - "global" => $navigation_global - ]; -} elseif (isset($parts) && isset($parts[0]) && $parts[0] === "cloudburst") { - $navigation = [ - "cloudburst" => $navigation_cloudburst, - "raindrops" => $navigation_raindrops, - "other" => $navigation_other, - "admin" => $navigation_admin, - "global" => $navigation_global - ]; -} elseif (isset($parts) && isset($parts[0]) && $parts[0] === "raindrops") { - $navigation = [ - "raindrops" => $navigation_raindrops, - "cloudburst" => $navigation_cloudburst, - "other" => $navigation_other, - "admin" => $navigation_admin, - "global" => $navigation_global - ]; -} else { - $navigation = [ - "admin" => $navigation_admin, - "global" => $navigation_global, - "cloudburst" => $navigation_cloudburst, - "raindrops" => $navigation_raindrops, - "other" => $navigation_other, - ]; + if (isset($parts) && isset($parts[0]) && $parts[0] === $app["other"]["slug"]) { + $navigation = [ + "other" => $navigation_other, + "cloudburst" => $navigation_cloudburst, + "raindrops" => $navigation_raindrops, + "admin" => $navigation_admin, + "global" => $navigation_global + ]; + } elseif (isset($parts) && isset($parts[0]) && $parts[0] === "cloudburst") { + $navigation = [ + "cloudburst" => $navigation_cloudburst, + "raindrops" => $navigation_raindrops, + "other" => $navigation_other, + "admin" => $navigation_admin, + "global" => $navigation_global + ]; + } elseif (isset($parts) && isset($parts[0]) && $parts[0] === "raindrops") { + $navigation = [ + "raindrops" => $navigation_raindrops, + "cloudburst" => $navigation_cloudburst, + "other" => $navigation_other, + "admin" => $navigation_admin, + "global" => $navigation_global + ]; + } else { + $navigation = [ + "admin" => $navigation_admin, + "global" => $navigation_global, + "cloudburst" => $navigation_cloudburst, + "raindrops" => $navigation_raindrops, + "other" => $navigation_other, + ]; + } } \ No newline at end of file diff --git a/includes/components/pane.inc b/includes/components/pane.inc index 1ecbcdf..a4b2d43 100644 --- a/includes/components/pane.inc +++ b/includes/components/pane.inc @@ -1,4 +1,4 @@ - +
members 0) { - echo(" (+ " . count($travellers) . " " . (count($travellers) > 1 ? $lang["system"]["traveller"] : $lang["system"]["travellers"]) . ")"); + echo(" (+ " . count($travellers) . " " . (count($travellers) > 1 ? $lang["system"]["travellers"] : $lang["system"]["traveller"]) . ")"); } - ?> - - - - + ?>
0): ?>Leader 1 ? "s" : "" ?>: $leader): ?>" class="member-link">"> +
diff --git a/includes/flags.json b/includes/flags.json index 6855dc5..a6373e6 100644 --- a/includes/flags.json +++ b/includes/flags.json @@ -6,7 +6,8 @@ "median": null, "protector": "!!Protector", - "leader": "Leader", + "leader": "Leader (legacy)", + "leader2": "Leader", "fictive": "!!Equestrian", "fictive2": "Fictive (Celeste)", "sexual_features": "Enable sexual features (for ponies below 15)", diff --git a/includes/fragments/evening.inc b/includes/fragments/evening.inc new file mode 100644 index 0000000..851b69f --- /dev/null +++ b/includes/fragments/evening.inc @@ -0,0 +1,245 @@ + 0) { + $thisIndex = array_search($thisMember[0], $switches); + + $frontingStart = $thisMember[0]; + $frontingEnd = $switches[$thisIndex - 1]; + } + + if ($frontingEnd !== null && isset($frontingStart)) { + $i["_lastFronted"] = strtotime($frontingEnd["timestamp"]); + } + } + + return $i; + }, array_values(array_filter(scoreOrderGlobal(), function ($i) { + return $i["_system"] === "ynmuc"; + }))), + ...array_map(function ($i) { + $system = "gdapd"; + $i["_lastFronted"] = -1; + $id = $i["id"]; + $memberData = $i; + + $fronters = array_map(function ($item) { + return $item["id"]; + }, json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/fronters.json"), true)["members"]); + + if (in_array($id, $fronters)) { + $i["_lastFronted"] = time(); + } else { + $switches = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/switches.json"), true); + + $thisMember = array_filter($switches, function ($item) use ($memberData) { + return in_array($memberData["id"], $item["members"]); + }); + + $thisMember = array_values($thisMember); + $frontingEnd = null; + + if (count($thisMember) > 0) { + $thisIndex = array_search($thisMember[0], $switches); + + $frontingStart = $thisMember[0]; + $frontingEnd = $switches[$thisIndex - 1]; + } + + if ($frontingEnd !== null && isset($frontingStart)) { + $i["_lastFronted"] = strtotime($frontingEnd["timestamp"]); + } + } + + return $i; + }, array_values(array_filter(scoreOrderGlobal(), function ($i) { + return $i["_system"] === "gdapd"; + }))) + ]; global $pages; global $lang; global $use2023UI; global $ignored; ?> + + + +
+
+ +

Evening schedule

+ +

Evening schedule

+ + + +
+ The evening schedule will replace the fronting schedule starting June 15th. The fronting schedule page contains more information and shows the schedule up to that date. The evening schedule is experimental until then. +
+ + +
+ +

Click on the "Ignore" button to mark an evening as ignored and shift the schedule one day after. You can revert this by clicking on "Unignore".

+
+
    + 0) $times[] = getLastFronted($members, $id); + } + foreach ($a[1] as $id) { + if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); + } + + $timeA = time() - min($times); + $times = []; + + foreach ($b[0] as $id) { + if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); + } + foreach ($b[1] as $id) { + if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); + } + + $timeB = time() - min($times); + + return $timeB - $timeA; + }); $pairs = array_values($pairs); foreach ($pairs as $pair): $times = []; ?> +
  • + + "> + + with + + "> + + () +
  • + +
+
+ + = 1686787200): ?> + +
+ +

+ +
+
+
+ + ">">
+ +
+
+
+
+ + ">">
+ +
+
+
+ 0) $times[] = getLastFronted($members, $id); + } + foreach ($pair[1] as $id) { + if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); + } + + $time = time() - min($times); + echo(timeAgo(time() - $time)); + + ?> +
+ +
+ " : "" ?> + +
+
+ \ No newline at end of file diff --git a/includes/fragments/member.inc b/includes/fragments/member.inc index 9ebb4c2..7672529 100644 --- a/includes/fragments/member.inc +++ b/includes/fragments/member.inc @@ -79,8 +79,8 @@ if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/ponies/" . $memberID . ".pn diff --git a/includes/pages.json b/includes/pages.json index 9cb2bf5..fd4aae1 100644 --- a/includes/pages.json +++ b/includes/pages.json @@ -1,4 +1,18 @@ { + "account": { + "name": { + "en": "Account and security" + }, + "admin": true, + "limited": true + }, + "alerts": { + "name": { + "en": "Alerts" + }, + "admin": true, + "limited": true + }, "alphabet": { "name": { "en": "By prefix letters" @@ -90,6 +104,13 @@ "admin": true, "limited": true }, + "lists": { + "name": { + "en": "Member lists" + }, + "admin": true, + "limited": true + }, "login": { "name": { "en": "Login" diff --git a/includes/themes.json b/includes/themes.json new file mode 100644 index 0000000..b1af209 --- /dev/null +++ b/includes/themes.json @@ -0,0 +1,69 @@ +{ + "default": 8, + "list": [ + { + "light": "fefbff,f4f2f9,eeeef5,eaeaf3,e8e8f2,e4e5ef,44474f,1b1b1f,ffffff,435e91", + "dark": "1b1b1f,22232a,272931,2a2d36,2c2f39,2f323d,c4c6d0,e3e2e6,0f2f60,adc7ff" + }, + { + "light": "fbfdf8,f0f5ef,e9f0e9,e4ede5,e1ebe3,dde8e0,404943,191c1a,ffffff,266a4a", + "dark": "191c1a,1f2521,222b26,252f29,27312b,29352e,c0c9c1,e1e3df,003822,91d5ad" + }, + { + "light": "fffbff,f6f2f9,f1edf5,ede9f3,ebe7f2,e8e4ef,47464f,1c1b1f,ffffff,5d5791", + "dark": "1c1b1f,24232a,2a2831,2e2c36,302e39,33313d,c9c5d0,e5e1e6,2f295f,c7bfff" + }, + { + "light": "fffbff,f8f2f3,f4edeb,f1e9e6,f0e7e3,ede4de,504539,1f1b16,ffffff,825514", + "dark": "1f1b16,2a231a,30281d,352b1f,382d20,3c3022,d4c4b5,ebe1d9,472a00,f8bb71" + }, + { + "light": "fcfcfc,f7f2f2,f4eced,f1e8e9,f0e5e6,eee2e3,474747,1b1b1b,ffffff,9c4049", + "dark": "1b1b1b,262222,2d2727,332b2b,352c2d,3a2f30,c6c6c6,e2e2e2,5f121e,ffb3b6" + }, + { + "light": "fcfcfc,f6f3ef,f2eee7,efeae1,eee8de,ece4d9,474747,1b1b1b,ffffff,885200", + "dark": "1b1b1b,26231e,2d2721,332b23,352d24,3a3025,c6c6c6,e2e2e2,482900,ffb869" + }, + { + "light": "fcfcfc,f5f3ef,f0eee7,edebe1,ebe9de,e9e6d9,474747,1b1b1b,ffffff,735c00", + "dark": "1b1b1b,25231d,2b281e,302c1f,332e20,373221,c6c6c6,e2e2e2,3c2f00,e8c349" + }, + { + "light": "fcfcfc,f2f4f0,ecefe9,e7ece4,e5eae1,e1e7dd,474747,1b1b1b,ffffff,3b6a1c", + "dark": "1b1b1b,21241f,252a22,292e25,2a3026,2d3428,c6c6c6,e2e2e2,163800,a0d57b" + }, + { + "light": "fcfcfc,eff4f7,e7eff4,e1ebf1,deeaf0,d9e7ee,474747,1b1b1b,ffffff,00639b", + "dark": "1b1b1b,212326,25292d,282d33,292f35,2c333a,c6c6c6,e2e2e2,003353,97cbff" + }, + { + "light": "fcfcfc,f4f3f7,efeef4,ebeaf2,e9e8f1,e6e4f0,474747,1b1b1b,ffffff,6152a6", + "dark": "1b1b1b,232326,29282d,2d2c33,2f2e35,33313a,c6c6c6,e2e2e2,322075,cabeff" + }, + { + "light": "fcfcfc,f5f2f6,f2edf2,efe8f0,ede6ee,ebe3ec,474747,1b1b1b,ffffff,84468d", + "dark": "1b1b1b,262226,2d272d,322a32,342c35,392f3a,c6c6c6,e2e2e2,50145b,f7adfd" + }, + { + "light": "fffbff,f9f1f2,f6eceb,f3e8e5,f2e5e3,f0e2de,4e472a,1f1b0d,ffffff,974811", + "dark": "1f1b0d,2a2213,312717,362b1a,392d1c,3d301e,d2c6a1,ebe2cb,542200,ffb68e" + }, + { + "light": "fafeea,f3f5de,eff0d6,ececd1,ebeace,e8e7c9,414a33,191d11,ffffff,7d5700", + "dark": "191d11,242513,2b2a15,302d16,332f17,373218,c0caac,e0e5d1,422c00,f9bc49" + }, + { + "light": "f9fdff,ecf5f6,e4f1f0,deedec,dbebea,d6e9e7,344a52,121d21,ffffff,006c51", + "dark": "121d21,162628,182c2c,1a3130,1b3332,1d3734,b3cad3,d8e4ea,003829,66dbb2" + }, + { + "light": "fffbff,f2f3fa,eaeef7,e4eaf5,e1e8f4,dce5f2,4b4358,1e1a24,ffffff,0061a3", + "dark": "1e1a24,24222f,282836,2b2c3b,2d2e3d,2f3242,cdc2db,e8dfee,003258,9ecaff" + }, + { + "light": "fffbff,f7f2fa,f2edf7,eee9f5,ece7f4,e9e3f2,58404d,24181f,ffffff,6351a5", + "dark": "24181f,2c202a,312531,352936,372b39,3b2e3d,debecd,f3dde6,341f74,ccbdff" + } + ] +} \ No newline at end of file diff --git a/includes/util/banner.inc b/includes/util/banner.inc index dfda86d..63e30c6 100644 --- a/includes/util/banner.inc +++ b/includes/util/banner.inc @@ -24,6 +24,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { global $isLowerLoggedIn; global $lang; global $Parsedown; + global $use2023UI; $french = $lang["_french"]; @@ -295,7 +296,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "fictive", "color" => "info", - "html" => ' Equestrian' + "html" => ' Equestrian' ]; } @@ -303,7 +304,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "fictive2", "color" => "d63384", - "html" => ' Fictive' + "html" => ' Fictive' ]; } @@ -311,7 +312,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "persecutor", "color" => "danger", - "html" => 'Persecutor' + "html" => 'Persecutor' ]; } @@ -319,7 +320,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "nonverbal", "color" => "#6610f2", - "html" => 'Fronts less often' + "html" => 'Fronts less often' ]; } @@ -327,7 +328,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "nonverbal", "color" => "#20c997", - "html" => 'Non verbal IRL' + "html" => 'Non verbal IRL' ]; } @@ -335,7 +336,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "fusion", "color" => "333333", - "html" => 'Fusion' + "html" => 'Fusion' ]; } @@ -343,7 +344,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "host", "color" => "fc6735", - "html" => 'Host' + "html" => 'Host' ]; } @@ -351,7 +352,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "leader", "color" => "d6a833", - "html" => 'Leader' + "html" => 'Leader' ]; } @@ -359,7 +360,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "protector", "color" => "black", - "html" => 'Protector' + "html" => 'Protector' ]; } @@ -375,7 +376,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "younger", "color" => "dark", - "html" => 'Younger' + "html" => 'Younger' ]; } @@ -383,7 +384,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "alcohol", "color" => "secondary", - "html" => 'Alcohol' + "html" => 'Alcohol' ]; } diff --git a/includes/util/evening.inc b/includes/util/evening.inc new file mode 100644 index 0000000..58e511e --- /dev/null +++ b/includes/util/evening.inc @@ -0,0 +1,68 @@ + + +
+
+
+

Account and security

+
+
+ + diff --git a/pages/alerts.inc b/pages/alerts.inc new file mode 100644 index 0000000..b58a9ce --- /dev/null +++ b/pages/alerts.inc @@ -0,0 +1,15 @@ + + +
+
+
+

Alerts

+
+
+ + diff --git a/pages/api/2023ui.php b/pages/api/2023ui.php new file mode 100644 index 0000000..0501b9a --- /dev/null +++ b/pages/api/2023ui.php @@ -0,0 +1,5 @@ + } diff --git a/pages/evening.inc b/pages/evening.inc index f40cb20..59c34e4 100644 --- a/pages/evening.inc +++ b/pages/evening.inc @@ -1,311 +1,11 @@ 0) { - $thisIndex = array_search($thisMember[0], $switches); - - $frontingStart = $thisMember[0]; - $frontingEnd = $switches[$thisIndex - 1]; - } - - if ($frontingEnd !== null && isset($frontingStart)) { - $i["_lastFronted"] = strtotime($frontingEnd["timestamp"]); - } - } - - return $i; - }, array_values(array_filter(scoreOrderGlobal(), function ($i) { - return $i["_system"] === "ynmuc"; - }))), - ...array_map(function ($i) { - $system = "gdapd"; - $i["_lastFronted"] = -1; - $id = $i["id"]; - $memberData = $i; - - $fronters = array_map(function ($item) { - return $item["id"]; - }, json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/fronters.json"), true)["members"]); - - if (in_array($id, $fronters)) { - $i["_lastFronted"] = time(); - } else { - $switches = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/switches.json"), true); - - $thisMember = array_filter($switches, function ($item) use ($memberData) { - return in_array($memberData["id"], $item["members"]); - }); - - $thisMember = array_values($thisMember); - $frontingEnd = null; - - if (count($thisMember) > 0) { - $thisIndex = array_search($thisMember[0], $switches); - - $frontingStart = $thisMember[0]; - $frontingEnd = $switches[$thisIndex - 1]; - } - - if ($frontingEnd !== null && isset($frontingStart)) { - $i["_lastFronted"] = strtotime($frontingEnd["timestamp"]); - } - } - - return $i; - }, array_values(array_filter(scoreOrderGlobal(), function ($i) { - return $i["_system"] === "gdapd"; - }))) - ]; - - ?> - - +require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/components/header.inc'; ?>
-
-
-

= 1686787200 ? "" : " (Beta)" ?>

- - -
- The evening schedule will replace the fronting schedule starting June 15th. The fronting schedule page contains more information and shows the schedule up to that date. The evening schedule is experimental until then. -
- - -
- -

Click on the "Ignore" button to mark an evening as ignored and shift the schedule one day after. You can revert this by clicking on "Unignore".

-
-
    - 0) $times[] = getLastFronted($members, $id); - } - foreach ($a[1] as $id) { - if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); - } - - $timeA = time() - min($times); - $times = []; - - foreach ($b[0] as $id) { - if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); - } - foreach ($b[1] as $id) { - if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); - } - - $timeB = time() - min($times); - - return $timeB - $timeA; - }); $pairs = array_values($pairs); foreach ($pairs as $pair): $times = []; ?> -
  • - - "> - - with - - "> - - () -
  • - -
-
- - = 1686787200): ?> -

-
-
-
- - ">">
- -
-
-
-
- - ">">
- -
-
-
- 0) $times[] = getLastFronted($members, $id); - } - foreach ($pair[1] as $id) { - if (getLastFronted($members, $id) > 0) $times[] = getLastFronted($members, $id); - } - - $time = time() - min($times); - echo(timeAgo(time() - $time)); - - ?> -
- -
- " : "" ?> - -
-
- + diff --git a/pages/jobs.inc b/pages/jobs.inc index c00e35c..3c0bb3d 100644 --- a/pages/jobs.inc +++ b/pages/jobs.inc @@ -17,6 +17,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/components/header.inc'; ?>