diff --git a/.cookies b/.cookies deleted file mode 100644 index 33e1b63ed..000000000 --- a/.cookies +++ /dev/null @@ -1,9 +0,0 @@ -# Netscape HTTP Cookie File -# This file is generated by youtube-dl. Do not edit. - -.youtube.com TRUE / TRUE 1670617632 GPS 1 -.youtube.com TRUE / TRUE 1686122687 VISITOR_INFO1_LIVE Z0qo6y1x43g -.youtube.com TRUE / TRUE 0 YSC X7P6d8R9T4I -.youtube.com TRUE / TRUE 1686122708 __Secure-3PAPISID V15R47kUEcecf2e6/Anq8BG6Hc8s3_B4aU -.youtube.com TRUE / TRUE 1686122708 __Secure-3PSID Rgi3mkz3GttQzOzz5BydFq1VJYJxYYsNX7tSsaWVvdV5OjMrGX4VQesgyjqm7MEb_U9QbA. -.youtube.com TRUE / TRUE 1702106955 __Secure-3PSIDCC AIKkIs2XJmFoUqmOzZTlvJO6WXpOpP8OwPdrLG7E2hC2DR6IFy_vz0PraZdTy36zFrYJBGuY diff --git a/files/assets/css/main.css b/files/assets/css/main.css index f7b474c98..eeac3cf8d 100644 --- a/files/assets/css/main.css +++ b/files/assets/css/main.css @@ -1,4 +1,206 @@ @charset "UTF-8"; + +.fa-align-left:before{content:"\f036"} +.fa-long-arrow-left:before{content:"\f177"} +.fa-arrow-right:before{content:"\f061"} +.fa-sign-out:before{content:"\f08b"} +.fa-long-arrow-right:before{content:"\f178"} +.fa-arrows-v:before{content:"\f07d"} +.fa-award:before{content:"\f559"} +.fa-badge:before{content:"\f335"} +.fa-badge-check:before{content:"\f336"} +.fa-ban:before{content:"\f05e"} +.fa-bars:before{content:"\f0c9"} +.fa-bell:before{content:"\f0f3"} +.fa-bold:before{content:"\f032"} +.fa-book:before{content:"\f02d"} +.fa-book-open:before{content:"\f518"} +.fa-book-dead:before{content:"\f6b7"} +.fa-broom:before{content:"\f51a"} +.fa-bug:before{content:"\f188"} +.fa-bullhorn:before{content:"\f0a1"} +.fa-calendar:before{content:"\f133"} +.fa-calendar-day:before{content:"\f783"} +.fa-calendar-alt:before{content:"\f073"} +.fa-calendar-week:before{content:"\f784"} +.fa-campfire:before{content:"\f6ba"} +.fa-candy-cane:before{content:"\f786"} +.fa-car-tilt:before{content:"\f5e5"} +.fa-cat:before{content:"\f6be"} +.fa-check:before{content:"\f00c"} +.fa-circle:before{content:"\f111"} +.fa-check-circle:before{content:"\f058"} +.fa-arrow-alt-circle-down:before{content:"\f358"} +.fa-exclamation-circle:before{content:"\f06a"} +.fa-info-circle:before{content:"\f05a"} +.fa-radiation-alt:before{content:"\f7ba"} +.fa-arrow-alt-circle-up:before{content:"\f35b"} +.fa-user-circle:before{content:"\f2bd"} +.fa-times-circle:before{content:"\f057"} +.fa-clipboard:before{content:"\f328"} +.fa-clipboard-check:before{content:"\f46c"} +.fa-clock:before{content:"\f017"} +.fa-history:before{content:"\f1da"} +.fa-code:before{content:"\f121"} +.fa-comment:before{content:"\f075"} +.fa-comment-dots:before{content:"\f4ad"} +.fa-comments:before{content:"\f086"} +.fa-copy:before{content:"\f0c5"} +.fa-crown:before{content:"\f521"} +.fa-dice-six:before{content:"\f526"} +.fa-dollar-sign:before{content:"\24"} +.fa-arrow-alt-down:before{content:"\f354"} +.fa-compress-alt:before{content:"\f422"} +.fa-ellipsis-h:before{content:"\f141"} +.fa-envelope:before{content:"\f0e0"} +.fa-envelope-open-text:before{content:"\f658"} +.fa-eye:before{content:"\f06e"} +.fa-eye-evil:before{content:"\f6db"} +.fa-eye-slash:before{content:"\f070"} +.fa-angry:before{content:"\f556"} +.fa-frown:before{content:"\f119"} +.fa-grin-beam-sweat:before{content:"\f583"} +.fa-laugh-squint:before{content:"\f59b"} +.fa-smile-beam:before{content:"\f5b8"} +.fa-feather-alt:before{content:"\f56b"} +.fa-file-signature:before{content:"\f573"} +.fa-filter:before{content:"\f0b0"} +.fa-fire:before{content:"\f06d"} +.fa-fireplace:before{content:"\f79a"} +.fa-fish:before{content:"\f578"} +.fa-flag:before{content:"\f024"} +.fa-flag-usa:before{content:"\f74d"} +.fa-save:before{content:"\f0c7"} +.fa-gavel:before{content:"\f0e3"} +.fa-cog:before{content:"\f013"} +.fa-ghost:before{content:"\f6e2"} +.fa-gift:before{content:"\f06b"} +.fa-gingerbread-man:before{content:"\f79d"} +.fa-globe:before{content:"\f0ac"} +.fa-home-alt:before{content:"\f015"} +.fa-id-badge:before{content:"\f2c1"} +.fa-id-card:before{content:"\f2c2"} +.fa-image:before{content:"\f03e"} +.fa-infinity:before{content:"\f534"} +.fa-italic:before{content:"\f033"} +.fa-knife-kitchen:before{content:"\f6f5"} +.fa-lights-holiday:before{content:"\f7b2"} +.fa-link:before{content:"\f0c1"} +.fa-link-slash:before{content:"\f127"} +.fa-lock:before{content:"\f023"} +.fa-lock-alt:before{content:"\f30d"} +.fa-search:before{content:"\f002"} +.fa-cloudflare:before{content:"\e07d"} +.fa-comment-alt-smile:before{content:"\f4aa"} +.fa-microphone-stand:before{content:"\f8cb"} +.fa-palette:before{content:"\f53f"} +.fa-edit:before{content:"\f044"} +.fa-pizza-slice:before{content:"\f818"} +.fa-poop:before{content:"\f619"} +.fa-quote-right:before{content:"\f10e"} +.fa-reply:before{content:"\f3e5"} +.fa-robot:before{content:"\f544"} +.fa-sack-dollar:before{content:"\f81d"} +.fa-scroll-old:before{content:"\f70f"} +.fa-seedling:before{content:"\f4d8"} +.fa-shield:before{content:"\f132"} +.fa-random:before{content:"\f074"} +.fa-smoke:before{content:"\f760"} +.fa-snooze:before{content:"\f880"} +.fa-snowflake:before{content:"\f2dc"} +.fa-sparkles:before{content:"\f890"} +.fa-ticket:before{content:"\f145"} +.fa-cards:before{content:"\e3ed"} +.fa-spider:before{content:"\f717"} +.fa-square:before{content:"\f0c8"} +.fa-stocking:before{content:"\f7d5"} +.fa-store:before{content:"\f54e"} +.fa-columns:before{content:"\f0db"} +.fa-thumbtack:before{content:"\f08d"} +.fa-train:before{content:"\f238"} +.fa-trash-alt:before{content:"\f2ed"} +.fa-exclamation-triangle:before{content:"\f071"} +.fa-trophy:before{content:"\f091"} +.fa-arrow-alt-up:before{content:"\f357"} +.fa-expand-alt:before{content:"\f424"} +.fa-external-link-alt:before{content:"\f35d"} +.fa-user:before{content:"\f007"} +.fa-user-crown:before{content:"\f6a4"} +.fa-user-cog:before{content:"\f4fe"} +.fa-user-friends:before{content:"\f500"} +.fa-user-lock:before{content:"\f502"} +.fa-user-minus:before{content:"\f503"} +.fa-user-plus:before{content:"\f234"} +.fa-user-slash:before{content:"\f506"} +.fa-user-tag:before{content:"\f507"} +.fa-user-times:before{content:"\f235"} +.fa-users:before{content:"\f0c0"} +.fa-volume:before{content:"\f6a8"} +.fa-volume-mute:before{content:"\f6a9"} +.fa-times:before{content:"\f00d"} +.fa-mobile:before{content:"\f3ce"} +.fa-discord:before{content:"\f392"} +.fa-github:before{content:"\f09b"} +.fa-twitter:before{content:"\f099"} +.fa-git-alt:before{content:"\f841"} +.fa-head-side:before{content:"\f6e9"} +.fa-crab:before{content:"\e3ff"} +.fa-socks:before{content:"\f696"} +.fa-arrow-up:before{content:"\f062"} +.fa-tag:before{content:"\f02b"} +.fa-messages:before{content:"\f4b6"} +.fa-user-secret:before{content:"\f21b"} +.fa-gas-pump-slash:before{content:"\f5f4"} +.fa-gas-pump:before{content:"\f52f"} +.fa-hammer-crash:before{content:"\e414"} +.fa-music:before{content:"\f001"} +.fa-arrow-rotate-right:before{content:"\f01e"} +.fa-columns-3:before{content:"\e361"} +.fa-bahai:before{content:"\f666"} +.fa-party-horn:before{content:"\e31b"} +.fa-pinata:before{content:"\e3c3"} +.fa-file:before{content:"\f15b"} +.fa-box-open:before{content:"\f49e"} +.fa-eyes:before{content:"\e367"} +.fa-hexagon:before{content:"\f312"} +.fa-arrow-right-arrow-left:before{content:"\f0ec"} +.fa-coins:before{content:"\f51e"} +.fa-bell-slash:before{content:"\f1f6"} +.fa-chart-network:before{content:"\f78a"} +.fa-square-share-nodes:before{content:"\f1e1"} +.fa-sidebar:before{content:"\e24e"} +.fa-panorama:before{content:"\e209"} +.fa-external-link:before{content:"\f08e"} +.fa-circle-info:before{content:"\f05a"} +.fa-comment-question:before{content:"\e14b"} +.fa-sitemap:before{content:"\f0e8"} +.fa-grid:before{content:"\e195"} +.fa-x:before{content:"\58"} +.fa-paw-simple:before{content:"\f701"} +.fa-bat:before{content:"\f6b5"} +.fa-star-of-david:before{content:"\f69a"} +.fa-hat-cowboy:before{content:"\f8c0"} +.fa-cloud-rainbow:before{content:"\f73e"} +.fa-telegram:before{content:"\f2c6"} +.fa-css3-alt:before{content:"\f38b"} +.fa-landscape:before{content:"\e1b5"} +.fa-user-ninja:before{content:"\f504"} +.fa-trees:before{content:"\f724"} +.fa-flashlight:before{content:"\f8b8"} +.fa-candy-corn:before{content:"\f6bd"} +.fa-shirt:before{content:"\f553"} +.fa-bone:before{content:"\f5d7"} +.fa-jack-o-lantern:before{content:"\f30e"} +.fa-cloud-bolt:before{content:"\f76c"} +.fa-biohazard:before{content:"\f780"} +.fa-syringe:before{content:"\f48e"} +.fa-spider-web:before{content:"\f719"} +.fa-coffin-cross:before{content:"\e051"} +.fa-face-sleeping:before{content:"\e38d"} +.fa-block-question:before{content:"\e3dd"} +.fa-image-slash:before{content:"\e1b7"} +.fa-play:before{content:"\f04b"} + button { background: none; border: none; @@ -4290,8 +4492,8 @@ pre .com, code .com { background-color: var(--gray-600); } .custom-gutters, .user-gutters { - padding-left: 2px; - padding-right: 2px; + padding-left: 0; + padding-right: 0; } .navbar.bg-primary { background-color: var(--dark) !important; @@ -4894,7 +5096,7 @@ code { .noshadow { box-shadow: none !important; } -[role="button"], :not(textarea)[onclick] { +[role="button"], :not(textarea)[onclick], th { cursor: pointer !important; } @@ -5696,6 +5898,25 @@ g { border-radius:.35rem; } +.video-play { + position:absolute; + bottom:33%; + right:38%; + font-size:14px; + color:white; + background-color:var(--primary); + padding: 5px 6px 4px 7px; + border-radius:.35rem; + pointer-events: none; +} + +@media (max-width: 768px) { + .video-play { + bottom:31%; + right:36%; + } +} + /* ------- Font Awesome ------- */ @font-face{ font-family:"Font Awesome 6 Pro"; @@ -5876,206 +6097,6 @@ g { .fa-stack-1x{line-height:inherit} .fa-stack-2x{font-size:2em} -.fa-align-left:before{content:"\f036"} -.fa-long-arrow-left:before{content:"\f177"} -.fa-arrow-right:before{content:"\f061"} -.fa-sign-out:before{content:"\f08b"} -.fa-long-arrow-right:before{content:"\f178"} -.fa-arrows-v:before{content:"\f07d"} -.fa-award:before{content:"\f559"} -.fa-badge:before{content:"\f335"} -.fa-badge-check:before{content:"\f336"} -.fa-ban:before{content:"\f05e"} -.fa-bars:before{content:"\f0c9"} -.fa-bell:before{content:"\f0f3"} -.fa-bold:before{content:"\f032"} -.fa-book:before{content:"\f02d"} -.fa-book-open:before{content:"\f518"} -.fa-book-dead:before{content:"\f6b7"} -.fa-broom:before{content:"\f51a"} -.fa-bug:before{content:"\f188"} -.fa-bullhorn:before{content:"\f0a1"} -.fa-calendar:before{content:"\f133"} -.fa-calendar-day:before{content:"\f783"} -.fa-calendar-alt:before{content:"\f073"} -.fa-calendar-week:before{content:"\f784"} -.fa-campfire:before{content:"\f6ba"} -.fa-candy-cane:before{content:"\f786"} -.fa-car-tilt:before{content:"\f5e5"} -.fa-cat:before{content:"\f6be"} -.fa-check:before{content:"\f00c"} -.fa-circle:before{content:"\f111"} -.fa-check-circle:before{content:"\f058"} -.fa-arrow-alt-circle-down:before{content:"\f358"} -.fa-exclamation-circle:before{content:"\f06a"} -.fa-info-circle:before{content:"\f05a"} -.fa-radiation-alt:before{content:"\f7ba"} -.fa-arrow-alt-circle-up:before{content:"\f35b"} -.fa-user-circle:before{content:"\f2bd"} -.fa-times-circle:before{content:"\f057"} -.fa-clipboard:before{content:"\f328"} -.fa-clipboard-check:before{content:"\f46c"} -.fa-clock:before{content:"\f017"} -.fa-history:before{content:"\f1da"} -.fa-code:before{content:"\f121"} -.fa-comment:before{content:"\f075"} -.fa-comment-dots:before{content:"\f4ad"} -.fa-comments:before{content:"\f086"} -.fa-copy:before{content:"\f0c5"} -.fa-crown:before{content:"\f521"} -.fa-dice-six:before{content:"\f526"} -.fa-dollar-sign:before{content:"\24"} -.fa-arrow-alt-down:before{content:"\f354"} -.fa-compress-alt:before{content:"\f422"} -.fa-ellipsis-h:before{content:"\f141"} -.fa-envelope:before{content:"\f0e0"} -.fa-envelope-open-text:before{content:"\f658"} -.fa-eye:before{content:"\f06e"} -.fa-eye-evil:before{content:"\f6db"} -.fa-eye-slash:before{content:"\f070"} -.fa-angry:before{content:"\f556"} -.fa-frown:before{content:"\f119"} -.fa-grin-beam-sweat:before{content:"\f583"} -.fa-laugh-squint:before{content:"\f59b"} -.fa-smile-beam:before{content:"\f5b8"} -.fa-feather-alt:before{content:"\f56b"} -.fa-file-signature:before{content:"\f573"} -.fa-filter:before{content:"\f0b0"} -.fa-fire:before{content:"\f06d"} -.fa-fireplace:before{content:"\f79a"} -.fa-fish:before{content:"\f578"} -.fa-flag:before{content:"\f024"} -.fa-flag-usa:before{content:"\f74d"} -.fa-save:before{content:"\f0c7"} -.fa-gavel:before{content:"\f0e3"} -.fa-cog:before{content:"\f013"} -.fa-ghost:before{content:"\f6e2"} -.fa-gift:before{content:"\f06b"} -.fa-gingerbread-man:before{content:"\f79d"} -.fa-globe:before{content:"\f0ac"} -.fa-home-alt:before{content:"\f015"} -.fa-id-badge:before{content:"\f2c1"} -.fa-id-card:before{content:"\f2c2"} -.fa-image:before{content:"\f03e"} -.fa-infinity:before{content:"\f534"} -.fa-italic:before{content:"\f033"} -.fa-knife-kitchen:before{content:"\f6f5"} -.fa-lights-holiday:before{content:"\f7b2"} -.fa-link:before{content:"\f0c1"} -.fa-link-slash:before{content:"\f127"} -.fa-lock:before{content:"\f023"} -.fa-lock-alt:before{content:"\f30d"} -.fa-search:before{content:"\f002"} -.fa-cloudflare:before{content:"\e07d"} -.fa-comment-alt-smile:before{content:"\f4aa"} -.fa-microphone-stand:before{content:"\f8cb"} -.fa-palette:before{content:"\f53f"} -.fa-edit:before{content:"\f044"} -.fa-pizza-slice:before{content:"\f818"} -.fa-poop:before{content:"\f619"} -.fa-quote-right:before{content:"\f10e"} -.fa-reply:before{content:"\f3e5"} -.fa-robot:before{content:"\f544"} -.fa-sack-dollar:before{content:"\f81d"} -.fa-scroll-old:before{content:"\f70f"} -.fa-seedling:before{content:"\f4d8"} -.fa-shield:before{content:"\f132"} -.fa-random:before{content:"\f074"} -.fa-smoke:before{content:"\f760"} -.fa-snooze:before{content:"\f880"} -.fa-snowflake:before{content:"\f2dc"} -.fa-sparkles:before{content:"\f890"} -.fa-ticket:before{content:"\f145"} -.fa-cards:before{content:"\e3ed"} -.fa-spider:before{content:"\f717"} -.fa-square:before{content:"\f0c8"} -.fa-stocking:before{content:"\f7d5"} -.fa-store:before{content:"\f54e"} -.fa-columns:before{content:"\f0db"} -.fa-thumbtack:before{content:"\f08d"} -.fa-train:before{content:"\f238"} -.fa-trash-alt:before{content:"\f2ed"} -.fa-exclamation-triangle:before{content:"\f071"} -.fa-trophy:before{content:"\f091"} -.fa-arrow-alt-up:before{content:"\f357"} -.fa-expand-alt:before{content:"\f424"} -.fa-external-link-alt:before{content:"\f35d"} -.fa-user:before{content:"\f007"} -.fa-user-crown:before{content:"\f6a4"} -.fa-user-cog:before{content:"\f4fe"} -.fa-user-friends:before{content:"\f500"} -.fa-user-lock:before{content:"\f502"} -.fa-user-minus:before{content:"\f503"} -.fa-user-plus:before{content:"\f234"} -.fa-user-slash:before{content:"\f506"} -.fa-user-tag:before{content:"\f507"} -.fa-user-times:before{content:"\f235"} -.fa-users:before{content:"\f0c0"} -.fa-volume:before{content:"\f6a8"} -.fa-volume-mute:before{content:"\f6a9"} -.fa-times:before{content:"\f00d"} -.fa-mobile:before{content:"\f3ce"} -.fa-discord:before{content:"\f392"} -.fa-github:before{content:"\f09b"} -.fa-twitter:before{content:"\f099"} -.fa-git-alt:before{content:"\f841"} -.fa-head-side:before{content:"\f6e9"} -.fa-crab:before{content:"\e3ff"} -.fa-socks:before{content:"\f696"} -.fa-arrow-up:before{content:"\f062"} -.fa-tag:before{content:"\f02b"} -.fa-messages:before{content:"\f4b6"} -.fa-user-secret:before{content:"\f21b"} -.fa-gas-pump-slash:before{content:"\f5f4"} -.fa-gas-pump:before{content:"\f52f"} -.fa-hammer-crash:before{content:"\e414"} -.fa-music:before{content:"\f001"} -.fa-arrow-rotate-right:before{content:"\f01e"} -.fa-columns-3:before{content:"\e361"} -.fa-bahai:before{content:"\f666"} -.fa-party-horn:before{content:"\e31b"} -.fa-pinata:before{content:"\e3c3"} -.fa-file:before{content:"\f15b"} -.fa-box-open:before{content:"\f49e"} -.fa-eyes:before{content:"\e367"} -.fa-hexagon:before{content:"\f312"} -.fa-arrow-right-arrow-left:before{content:"\f0ec"} -.fa-coins:before{content:"\f51e"} -.fa-bell-slash:before{content:"\f1f6"} -.fa-chart-network:before{content:"\f78a"} -.fa-square-share-nodes:before{content:"\f1e1"} -.fa-sidebar:before{content:"\e24e"} -.fa-panorama:before{content:"\e209"} -.fa-external-link:before{content:"\f08e"} -.fa-circle-info:before{content:"\f05a"} -.fa-comment-question:before{content:"\e14b"} -.fa-sitemap:before{content:"\f0e8"} -.fa-grid:before{content:"\e195"} -.fa-x:before{content:"\58"} -.fa-paw-simple:before{content:"\f701"} -.fa-bat:before{content:"\f6b5"} -.fa-star-of-david:before{content:"\f69a"} -.fa-hat-cowboy:before{content:"\f8c0"} -.fa-cloud-rainbow:before{content:"\f73e"} -.fa-telegram:before{content:"\f2c6"} -.fa-css3-alt:before{content:"\f38b"} -.fa-landscape:before{content:"\e1b5"} -.fa-user-ninja:before{content:"\f504"} -.fa-trees:before{content:"\f724"} -.fa-flashlight:before{content:"\f8b8"} -.fa-candy-corn:before{content:"\f6bd"} -.fa-shirt:before{content:"\f553"} -.fa-bone:before{content:"\f5d7"} -.fa-jack-o-lantern:before{content:"\f30e"} -.fa-cloud-bolt:before{content:"\f76c"} -.fa-biohazard:before{content:"\f780"} -.fa-syringe:before{content:"\f48e"} -.fa-spider-web:before{content:"\f719"} -.fa-coffin-cross:before{content:"\e051"} -.fa-face-sleeping:before{content:"\e38d"} -.fa-block-question:before{content:"\e3dd"} -.fa-image-slash:before{content:"\e1b7"} - .pronouns { font-size: 9px; margin-left: 0.25rem; @@ -6407,7 +6428,7 @@ div.markdown { } :root { - --signature-max-height: 250px; + --signature-max-height: 300px; } .user-signature { @@ -6415,10 +6436,6 @@ div.markdown { overflow: clip; } -.user-signature video { - height: var(--signature-max-height); -} - .award-name { font-weight: bold; font-size: 14px; @@ -6444,3 +6461,31 @@ div.markdown { .sub-banner-update-section .sub-settings-subsection { margin-bottom: 1em; } + +.resizable { + resize:both; + display:inline-block; + overflow: auto; + scrollbar-width: none; + -ms-overflow-style: none; +} +.resizable::-webkit-scrollbar { + background: transparent; +} +.resizable > video { + height:100%!important; + max-height:100%!important; + margin:0!important; +} +.bigger { + height:50vh; +} + +.user-signature video { + max-height: min(var(--signature-max-height),50vh) !important; +} + +.comment-text lite-youtube, #post-text lite-youtube { + max-width: 500px; + margin-top: 5px; +} diff --git a/files/assets/images/WPD/icons-event/2022-christmas-logo.webp b/files/assets/images/WPD/icons-event/2022-christmas-logo.webp new file mode 100644 index 000000000..001551986 Binary files /dev/null and b/files/assets/images/WPD/icons-event/2022-christmas-logo.webp differ diff --git a/files/assets/images/WPD/icons-event/2022-christmas.webp b/files/assets/images/WPD/icons-event/2022-christmas.webp new file mode 100644 index 000000000..0af105b45 Binary files /dev/null and b/files/assets/images/WPD/icons-event/2022-christmas.webp differ diff --git a/files/assets/images/badges/194.webp b/files/assets/images/badges/194.webp new file mode 100644 index 000000000..1c4cdcfe5 Binary files /dev/null and b/files/assets/images/badges/194.webp differ diff --git a/files/assets/images/badges/197.webp b/files/assets/images/badges/197.webp new file mode 100644 index 000000000..62df8f87e Binary files /dev/null and b/files/assets/images/badges/197.webp differ diff --git a/files/assets/images/badges/198.webp b/files/assets/images/badges/198.webp new file mode 100644 index 000000000..73e0eabd6 Binary files /dev/null and b/files/assets/images/badges/198.webp differ diff --git a/files/assets/images/badges/199.webp b/files/assets/images/badges/199.webp new file mode 100644 index 000000000..2d79d2231 Binary files /dev/null and b/files/assets/images/badges/199.webp differ diff --git a/files/assets/images/badges/203.webp b/files/assets/images/badges/203.webp new file mode 100644 index 000000000..4fb8a41dd Binary files /dev/null and b/files/assets/images/badges/203.webp differ diff --git a/files/assets/images/badges/208.webp b/files/assets/images/badges/208.webp new file mode 100644 index 000000000..62b4f0a3b Binary files /dev/null and b/files/assets/images/badges/208.webp differ diff --git a/files/assets/images/badges/212.webp b/files/assets/images/badges/212.webp new file mode 100644 index 000000000..221ddd2ff Binary files /dev/null and b/files/assets/images/badges/212.webp differ diff --git a/files/assets/images/badges/213.webp b/files/assets/images/badges/213.webp new file mode 100644 index 000000000..134e43bcb Binary files /dev/null and b/files/assets/images/badges/213.webp differ diff --git a/files/assets/images/badges/214.webp b/files/assets/images/badges/214.webp new file mode 100644 index 000000000..80bca69b6 Binary files /dev/null and b/files/assets/images/badges/214.webp differ diff --git a/files/assets/images/default_thumb_video.webp b/files/assets/images/default_thumb_video.webp index b20adfef5..48c4cb157 100644 Binary files a/files/assets/images/default_thumb_video.webp and b/files/assets/images/default_thumb_video.webp differ diff --git a/files/assets/images/emojis/marppyenraged.webp b/files/assets/images/emojis/marppyenraged.webp index 15086508a..51d122d3d 100644 Binary files a/files/assets/images/emojis/marppyenraged.webp and b/files/assets/images/emojis/marppyenraged.webp differ diff --git a/files/assets/images/emojis/marseyalucard.webp b/files/assets/images/emojis/marseyalucard.webp new file mode 100644 index 000000000..adc934089 Binary files /dev/null and b/files/assets/images/emojis/marseyalucard.webp differ diff --git a/files/assets/images/emojis/marseybug3.webp b/files/assets/images/emojis/marseybug3.webp new file mode 100644 index 000000000..672ff41de Binary files /dev/null and b/files/assets/images/emojis/marseybug3.webp differ diff --git a/files/assets/images/emojis/marseycantsneed.webp b/files/assets/images/emojis/marseycantsneed.webp index f8a886319..49c25c54d 100644 Binary files a/files/assets/images/emojis/marseycantsneed.webp and b/files/assets/images/emojis/marseycantsneed.webp differ diff --git a/files/assets/images/emojis/marseycapygigabrain.webp b/files/assets/images/emojis/marseycapygigabrain.webp index b63339ed3..ec8ce7085 100644 Binary files a/files/assets/images/emojis/marseycapygigabrain.webp and b/files/assets/images/emojis/marseycapygigabrain.webp differ diff --git a/files/assets/images/emojis/marseycapynut.webp b/files/assets/images/emojis/marseycapynut.webp index 1821df794..153b83192 100644 Binary files a/files/assets/images/emojis/marseycapynut.webp and b/files/assets/images/emojis/marseycapynut.webp differ diff --git a/files/assets/images/emojis/marseycapyshy.webp b/files/assets/images/emojis/marseycapyshy.webp index 044e8a1f4..5cb07ed70 100644 Binary files a/files/assets/images/emojis/marseycapyshy.webp and b/files/assets/images/emojis/marseycapyshy.webp differ diff --git a/files/assets/images/emojis/marseycarpasian.webp b/files/assets/images/emojis/marseycarpasian.webp index e3d6b37f6..cc956180c 100644 Binary files a/files/assets/images/emojis/marseycarpasian.webp and b/files/assets/images/emojis/marseycarpasian.webp differ diff --git a/files/assets/images/emojis/marseychadfoid.webp b/files/assets/images/emojis/marseychadfoid.webp new file mode 100644 index 000000000..7b35d8c36 Binary files /dev/null and b/files/assets/images/emojis/marseychadfoid.webp differ diff --git a/files/assets/images/emojis/marseychristchan.webp b/files/assets/images/emojis/marseychristchan.webp new file mode 100644 index 000000000..f82bd2e08 Binary files /dev/null and b/files/assets/images/emojis/marseychristchan.webp differ diff --git a/files/assets/images/emojis/marseychristchanreading.webp b/files/assets/images/emojis/marseychristchanreading.webp new file mode 100644 index 000000000..da4d53fb2 Binary files /dev/null and b/files/assets/images/emojis/marseychristchanreading.webp differ diff --git a/files/assets/images/emojis/marseycyanide.webp b/files/assets/images/emojis/marseycyanide.webp index df8122138..7331f69a9 100644 Binary files a/files/assets/images/emojis/marseycyanide.webp and b/files/assets/images/emojis/marseycyanide.webp differ diff --git a/files/assets/images/emojis/marseydoit.webp b/files/assets/images/emojis/marseydoit.webp index 4047e7bb7..101d2aa18 100644 Binary files a/files/assets/images/emojis/marseydoit.webp and b/files/assets/images/emojis/marseydoit.webp differ diff --git a/files/assets/images/emojis/marseydownvotemad.webp b/files/assets/images/emojis/marseydownvotemad.webp new file mode 100644 index 000000000..83effd70b Binary files /dev/null and b/files/assets/images/emojis/marseydownvotemad.webp differ diff --git a/files/assets/images/emojis/marseyelephantcumjar1.webp b/files/assets/images/emojis/marseyelephantcumjar1.webp index 0a1e09774..6e35ffdb7 100644 Binary files a/files/assets/images/emojis/marseyelephantcumjar1.webp and b/files/assets/images/emojis/marseyelephantcumjar1.webp differ diff --git a/files/assets/images/emojis/marseyelephantcumjar2.webp b/files/assets/images/emojis/marseyelephantcumjar2.webp index 0f4f1cd48..c03b30677 100644 Binary files a/files/assets/images/emojis/marseyelephantcumjar2.webp and b/files/assets/images/emojis/marseyelephantcumjar2.webp differ diff --git a/files/assets/images/emojis/marseyelephantcumjar3.webp b/files/assets/images/emojis/marseyelephantcumjar3.webp index 28ff13deb..1801111d1 100644 Binary files a/files/assets/images/emojis/marseyelephantcumjar3.webp and b/files/assets/images/emojis/marseyelephantcumjar3.webp differ diff --git a/files/assets/images/emojis/marseyeyemixer3.webp b/files/assets/images/emojis/marseyeyemixer3.webp index 6b2891dbb..a86d7eab2 100644 Binary files a/files/assets/images/emojis/marseyeyemixer3.webp and b/files/assets/images/emojis/marseyeyemixer3.webp differ diff --git a/files/assets/images/emojis/marseyglobohomo.webp b/files/assets/images/emojis/marseyglobohomo.webp index d49db09de..4dc46b755 100644 Binary files a/files/assets/images/emojis/marseyglobohomo.webp and b/files/assets/images/emojis/marseyglobohomo.webp differ diff --git a/files/assets/images/emojis/marseygunnut.webp b/files/assets/images/emojis/marseygunnut.webp index 7a973ebf5..6c7b12201 100644 Binary files a/files/assets/images/emojis/marseygunnut.webp and b/files/assets/images/emojis/marseygunnut.webp differ diff --git a/files/assets/images/emojis/marseyhappy2.webp b/files/assets/images/emojis/marseyhappy2.webp new file mode 100644 index 000000000..025a39c93 Binary files /dev/null and b/files/assets/images/emojis/marseyhappy2.webp differ diff --git a/files/assets/images/emojis/marseyhelp.webp b/files/assets/images/emojis/marseyhelp.webp index ea3a1fe87..b70109c43 100644 Binary files a/files/assets/images/emojis/marseyhelp.webp and b/files/assets/images/emojis/marseyhelp.webp differ diff --git a/files/assets/images/emojis/marseyitsaover.webp b/files/assets/images/emojis/marseyitsaover.webp new file mode 100644 index 000000000..53a7cd590 Binary files /dev/null and b/files/assets/images/emojis/marseyitsaover.webp differ diff --git a/files/assets/images/emojis/marseyjumpscare.webp b/files/assets/images/emojis/marseyjumpscare.webp index 05e37ab24..1b4d59673 100644 Binary files a/files/assets/images/emojis/marseyjumpscare.webp and b/files/assets/images/emojis/marseyjumpscare.webp differ diff --git a/files/assets/images/emojis/marseyjunkie2.webp b/files/assets/images/emojis/marseyjunkie2.webp index 006d886ea..2d1979450 100644 Binary files a/files/assets/images/emojis/marseyjunkie2.webp and b/files/assets/images/emojis/marseyjunkie2.webp differ diff --git a/files/assets/images/emojis/marseykiwilove.webp b/files/assets/images/emojis/marseykiwilove.webp new file mode 100644 index 000000000..b4446e50d Binary files /dev/null and b/files/assets/images/emojis/marseykiwilove.webp differ diff --git a/files/assets/images/emojis/marseylolly.webp b/files/assets/images/emojis/marseylolly.webp new file mode 100644 index 000000000..1ae408825 Binary files /dev/null and b/files/assets/images/emojis/marseylolly.webp differ diff --git a/files/assets/images/emojis/marseymaidshy.webp b/files/assets/images/emojis/marseymaidshy.webp new file mode 100644 index 000000000..9c237cb63 Binary files /dev/null and b/files/assets/images/emojis/marseymaidshy.webp differ diff --git a/files/assets/images/emojis/marseymayoparty.webp b/files/assets/images/emojis/marseymayoparty.webp index 791b0b6a3..26b24b66d 100644 Binary files a/files/assets/images/emojis/marseymayoparty.webp and b/files/assets/images/emojis/marseymayoparty.webp differ diff --git a/files/assets/images/emojis/marseymoney.webp b/files/assets/images/emojis/marseymoney.webp index 79cbc5f0f..e44b294d3 100644 Binary files a/files/assets/images/emojis/marseymoney.webp and b/files/assets/images/emojis/marseymoney.webp differ diff --git a/files/assets/images/emojis/marseynecromancer.webp b/files/assets/images/emojis/marseynecromancer.webp new file mode 100644 index 000000000..a4bd8e5ea Binary files /dev/null and b/files/assets/images/emojis/marseynecromancer.webp differ diff --git a/files/assets/images/emojis/marseypenny.webp b/files/assets/images/emojis/marseypenny.webp index 1c49e9469..41c4e244a 100644 Binary files a/files/assets/images/emojis/marseypenny.webp and b/files/assets/images/emojis/marseypenny.webp differ diff --git a/files/assets/images/emojis/marseypoint.webp b/files/assets/images/emojis/marseypoint.webp new file mode 100644 index 000000000..aec6039ed Binary files /dev/null and b/files/assets/images/emojis/marseypoint.webp differ diff --git a/files/assets/images/emojis/marseypoint2.webp b/files/assets/images/emojis/marseypoint2.webp new file mode 100644 index 000000000..474c4f401 Binary files /dev/null and b/files/assets/images/emojis/marseypoint2.webp differ diff --git a/files/assets/images/emojis/marseyprotestno.webp b/files/assets/images/emojis/marseyprotestno.webp index ee612b916..a5c5bc670 100644 Binary files a/files/assets/images/emojis/marseyprotestno.webp and b/files/assets/images/emojis/marseyprotestno.webp differ diff --git a/files/assets/images/emojis/marseyprotestyes.webp b/files/assets/images/emojis/marseyprotestyes.webp index 244b62a52..81f7320ec 100644 Binary files a/files/assets/images/emojis/marseyprotestyes.webp and b/files/assets/images/emojis/marseyprotestyes.webp differ diff --git a/files/assets/images/emojis/marseyretard4.webp b/files/assets/images/emojis/marseyretard4.webp new file mode 100644 index 000000000..31b51f341 Binary files /dev/null and b/files/assets/images/emojis/marseyretard4.webp differ diff --git a/files/assets/images/emojis/marseyretardchad.webp b/files/assets/images/emojis/marseyretardchad.webp index d03dd6b68..d58399b06 100644 Binary files a/files/assets/images/emojis/marseyretardchad.webp and b/files/assets/images/emojis/marseyretardchad.webp differ diff --git a/files/assets/images/emojis/marseyrudolph.webp b/files/assets/images/emojis/marseyrudolph.webp new file mode 100644 index 000000000..5618cf431 Binary files /dev/null and b/files/assets/images/emojis/marseyrudolph.webp differ diff --git a/files/assets/images/emojis/marseyrudolph2.webp b/files/assets/images/emojis/marseyrudolph2.webp new file mode 100644 index 000000000..23bede027 Binary files /dev/null and b/files/assets/images/emojis/marseyrudolph2.webp differ diff --git a/files/assets/images/emojis/marseysadako.webp b/files/assets/images/emojis/marseysadako.webp new file mode 100644 index 000000000..c893948ac Binary files /dev/null and b/files/assets/images/emojis/marseysadako.webp differ diff --git a/files/assets/images/emojis/marseyschopenhauer.webp b/files/assets/images/emojis/marseyschopenhauer.webp index 41bf0aec9..02235f75f 100644 Binary files a/files/assets/images/emojis/marseyschopenhauer.webp and b/files/assets/images/emojis/marseyschopenhauer.webp differ diff --git a/files/assets/images/emojis/marseyskinny.webp b/files/assets/images/emojis/marseyskinny.webp new file mode 100644 index 000000000..5a66efa82 Binary files /dev/null and b/files/assets/images/emojis/marseyskinny.webp differ diff --git a/files/assets/images/emojis/marseysmug5.webp b/files/assets/images/emojis/marseysmug5.webp new file mode 100644 index 000000000..366f6ae57 Binary files /dev/null and b/files/assets/images/emojis/marseysmug5.webp differ diff --git a/files/assets/images/emojis/marseysmug6.webp b/files/assets/images/emojis/marseysmug6.webp new file mode 100644 index 000000000..7b50f334b Binary files /dev/null and b/files/assets/images/emojis/marseysmug6.webp differ diff --git a/files/assets/images/emojis/marseysteaming.webp b/files/assets/images/emojis/marseysteaming.webp index 6a4f705fd..00757b5dc 100644 Binary files a/files/assets/images/emojis/marseysteaming.webp and b/files/assets/images/emojis/marseysteaming.webp differ diff --git a/files/assets/images/emojis/marseywindmill.webp b/files/assets/images/emojis/marseywindmill.webp new file mode 100644 index 000000000..a5efeebe4 Binary files /dev/null and b/files/assets/images/emojis/marseywindmill.webp differ diff --git a/files/assets/images/emojis/marseywords2.webp b/files/assets/images/emojis/marseywords2.webp index d75c80375..481984faa 100644 Binary files a/files/assets/images/emojis/marseywords2.webp and b/files/assets/images/emojis/marseywords2.webp differ diff --git a/files/assets/images/emojis/marseyzombie2.webp b/files/assets/images/emojis/marseyzombie2.webp index 38b496f01..670fa22ea 100644 Binary files a/files/assets/images/emojis/marseyzombie2.webp and b/files/assets/images/emojis/marseyzombie2.webp differ diff --git a/files/assets/images/rDrama/sidebar/877.webp b/files/assets/images/rDrama/sidebar/877.webp new file mode 100644 index 000000000..e948c887b Binary files /dev/null and b/files/assets/images/rDrama/sidebar/877.webp differ diff --git a/files/assets/js/core.js b/files/assets/js/core.js index cbef8ecda..dd4c6a865 100644 --- a/files/assets/js/core.js +++ b/files/assets/js/core.js @@ -233,12 +233,6 @@ function expandDesktopImage(url) { bootstrap.Modal.getOrCreateInstance(document.getElementById('expandImageModal')).show(); }; -document.addEventListener("click", function(e){ - const element = e.target - if (element instanceof HTMLImageElement && element.alt.startsWith('![](')) - expandDesktopImage() -}); - function bs_trigger(e) { let tooltipTriggerList = [].slice.call(e.querySelectorAll('[data-bs-toggle="tooltip"]')); tooltipTriggerList.map(function(element){ @@ -342,7 +336,7 @@ function areyousure(t) { else t.innerHTML = t.innerHTML.replace(t.textContent, 'Are you sure?') - t.setAttribute("onclick", t.dataset.click2); + t.setAttribute("onclick", t.dataset.click); if (t.dataset.dismiss) t.setAttribute("data-bs-dismiss", t.dataset.dismiss); @@ -404,3 +398,51 @@ function sendFormXHRSwitch(e) { } ) } + +let sortAscending = {}; + +function sort_table(t) { + const n = Array.prototype.indexOf.call(t.parentElement.children, t); + const table = this.event.target.parentElement.parentElement.parentElement + const rows = table.rows; + let items = []; + for (let i = 1; i < rows.length; i++) { + const ele = rows[i]; + let x = rows[i].getElementsByTagName("TD")[n]; + if (!('sortKey' in x.dataset)) { + x = x.getElementsByTagName('a')[0] || x; + } + let attr; + if ('sortKey' in x.dataset) { + attr = x.dataset.sortKey; + } else if ('time' in x.dataset) { + attr = parseInt(x.dataset.time); + } else { + attr = x.innerText + if (/^[\d-,]+$/.test(x.innerHTML)) { + attr = parseInt(attr.replace(/,/g, '')) + } + } + items.push({ele, attr}); + } + if (sortAscending[n]) { + items.sort((a, b) => a.attr > b.attr ? 1 : -1); + sortAscending[n] = false; + } else { + items.sort((a, b) => a.attr < b.attr ? 1 : -1); + sortAscending[n] = true; + } + + for (let i = items.length - 1; i--;) { + items[i].ele.parentNode.insertBefore(items[i].ele, items[i + 1].ele); + } +} + + +document.addEventListener("click", function(e){ + const element = e.target + if (element instanceof HTMLImageElement && element.alt.startsWith('![](')) + expandDesktopImage() + else if (element.tagName == "TH") + sort_table(element) +}); diff --git a/files/assets/js/sort_table.js b/files/assets/js/sort_table.js deleted file mode 100644 index 98c01ceed..000000000 --- a/files/assets/js/sort_table.js +++ /dev/null @@ -1,34 +0,0 @@ -let sortAscending = {}; - -function sort_table(n) { - const table = this.event.target.parentElement.parentElement.parentElement - const rows = table.rows; - let items = []; - for (let i = 1; i < rows.length; i++) { - const ele = rows[i]; - let x = rows[i].getElementsByTagName("TD")[n]; - if (!('sortKey' in x.dataset)) { - x = x.getElementsByTagName('a')[0] || x; - } - let attr; - if ('sortKey' in x.dataset) { - attr = x.dataset.sortKey; - } else if ('time' in x.dataset) { - attr = parseInt(x.dataset.time); - } else { - attr = parseInt(x.innerHTML.replace(/,/g, '')); - } - items.push({ ele, attr }); - } - if (sortAscending[n]) { - items.sort((a, b) => a.attr > b.attr ? 1 : -1); - sortAscending[n] = false; - } else { - items.sort((a, b) => a.attr < b.attr ? 1 : -1); - sortAscending[n] = true; - } - - for (let i = items.length - 1; i--;) { - items[i].ele.parentNode.insertBefore(items[i].ele, items[i + 1].ele); - } -} diff --git a/files/classes/comment.py b/files/classes/comment.py index a7ce87fbc..7b82037fe 100644 --- a/files/classes/comment.py +++ b/files/classes/comment.py @@ -307,7 +307,8 @@ class Comment(Base): if not body: return "" - body = censor_slurs(body, v).replace('', ':marseytrain:') + body = censor_slurs(body, v).replace('', ':marseytrain:') \ + .replace('', ':marseysleep:') return body diff --git a/files/classes/submission.py b/files/classes/submission.py index 071de737d..8f6ae788a 100644 --- a/files/classes/submission.py +++ b/files/classes/submission.py @@ -153,7 +153,7 @@ class Submission(Base): elif self.thumburl: if self.thumburl.startswith('/'): return SITE_FULL + self.thumburl return self.thumburl - elif self.is_youtube or self.is_video: return f"{SITE_FULL}/i/default_thumb_video.webp?v=1" + elif self.is_youtube or self.is_video: return f"{SITE_FULL}/i/default_thumb_video.webp?v=2" elif self.is_audio: return f"{SITE_FULL}/i/default_thumb_audio.webp?v=1" elif self.domain.split('.')[0] == SITE.split('.')[0]: return f"{SITE_FULL}/i/{SITE_NAME}/site_preview.webp?v=3009" @@ -297,7 +297,7 @@ class Submission(Base): body += " - WINNER!" if not winner and v and v.admin_level >= PERMS['POST_BETS_DISTRIBUTE']: - body += f'''''' + body += f'''''' body += "" else: input_type = 'radio' if o.exclusive else 'checkbox' @@ -329,7 +329,9 @@ class Submission(Base): body = self.body if not body: return "" - body = censor_slurs(body, v).replace('', ':marseytrain:') + body = censor_slurs(body, v).replace('', ':marseytrain:') \ + .replace('', ':marseysleep:') + body = normalize_urls_runtime(body, v) return body @@ -346,7 +348,8 @@ class Submission(Base): def plaintitle(self, v): title = self.title - title = censor_slurs(title, v).replace('', ':marseytrain:') + title = censor_slurs(title, v).replace('', ':marseytrain:') \ + .replace('', ':marseysleep:') return title diff --git a/files/classes/user.py b/files/classes/user.py index 0b75499cd..78074d1a6 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -520,9 +520,9 @@ class User(Base): @property @lazy - def unban_in(self): + def unban_string(self): if self.unban_utc == 0: - return "never" + return "permanently banned" wait = self.unban_utc - int(time.time()) @@ -539,43 +539,9 @@ class User(Base): text = f"{days}d {hours:02d}h {mins:02d}m" - return text - - - @property - @lazy - def unban_string(self): - text = self.unban_in - - if text == "never": return "permanently banned" - return f"Unban in {text}" - @property - @lazy - def unchud_in(self): - if self.agendaposter == 1: - return "never" - - wait = self.agendaposter - int(time.time()) - - if wait < 60: - text = f"{wait}s" - else: - days = wait//(24*60*60) - wait -= days*24*60*60 - - hours = wait//(60*60) - wait -= hours*60*60 - - mins = wait//60 - - text = f"{days}d {hours:02d}h {mins:02d}m" - - return text - - @property @lazy def received_awards(self): diff --git a/files/helpers/actions.py b/files/helpers/actions.py index e9888f882..864c66da5 100644 --- a/files/helpers/actions.py +++ b/files/helpers/actions.py @@ -98,7 +98,7 @@ def execute_snappy(post:Submission, v:User): body += "\n\n" - if post.url and not post.url.startswith(SITE_FULL) and not post.url.startswith('/') and not post.url.startswith(f'https://{BAN_EVASION_DOMAIN}'): + if post.url and not post.url.startswith('/') and not post.url.startswith(SITE_FULL) and not post.url.startswith(BAN_EVASION_FULL): if post.url.startswith('https://old.reddit.com/r/'): rev = post.url.replace('https://old.reddit.com/', '') rev = f"* [unddit.com](https://unddit.com/{rev})\n" @@ -127,7 +127,7 @@ def execute_snappy(post:Submission, v:User): for href, title in captured: - if href.startswith(SITE_FULL) or href.startswith(f'https://{BAN_EVASION_DOMAIN}'): continue + if href.startswith(SITE_FULL) or href.startswith(BAN_EVASION_FULL): continue if "Snapshots:\n\n" not in body: body += "Snapshots:\n\n" if f'**[{title}]({href})**:\n\n' not in body: addition = f'**[{title}]({href})**:\n\n' diff --git a/files/helpers/config/const.py b/files/helpers/config/const.py index e3cd78225..ccc8044b0 100644 --- a/files/helpers/config/const.py +++ b/files/helpers/config/const.py @@ -148,6 +148,7 @@ if SITE_NAME == 'rDrama': "it's almost as if": "I'm a retard but", "my brother in christ": "my brother in Allah", "kyle": "Kylie", + "twitter files": 'twitter files ', } SLURS.update(RDRAMA_SLURS) @@ -233,7 +234,6 @@ PERMS = { # Minimum admin_level to perform action. 'HOLE_CREATE': 0, 'EDIT_RULES': 3, 'FLAGS_REMOVE': 2, - 'VOTES_VISIBLE': 0, 'USER_BLOCKS_VISIBLE': 0, 'USER_FOLLOWS_VISIBLE': 0, 'USER_VOTERS_VISIBLE': 0, @@ -399,6 +399,7 @@ POST_BODY_LENGTH_LIMIT = 20000 # do not make larger than 20000 without altering POST_BODY_HTML_LENGTH_LIMIT = 40000 # do not make larger than 40000 without altering the table COMMENT_BODY_LENGTH_LIMIT = 10000 # do not make larger than 10000 characters without altering the table COMMENT_BODY_HTML_LENGTH_LIMIT = 20000 # do not make larger than 20000 characters without altering the table +CSS_LENGTH_LIMIT = 10000 # do not make larger than 20000 characters without altering the table COMMENT_MAX_DEPTH = 200 TRANSFER_MESSAGE_LENGTH_LIMIT = 200 # do not make larger than 10000 characters (comment limit) without altering the table MIN_REPOST_CHECK_URL_LENGTH = 9 # also change the constant in checkRepost() of submit.js @@ -427,38 +428,27 @@ HOLE_REQUIRED = False HOLE_COST = 0 HOLE_INACTIVITY_DELETION = False +PRIVILEGED_USER_BOTS = () +GUMROAD_MESSY = () + AUTOJANNY_ID = 1 SNAPPY_ID = 2 LONGPOSTBOT_ID = 3 ZOZBOT_ID = 4 BASEDBOT_ID = 0 -PRIVILEGED_USER_BOTS = () - -SCHIZO_ID = 0 KIPPY_ID = 0 -MCCOX_ID = 0 -CHIOBU_ID = 0 PIZZASHILL_ID = 0 IMPASSIONATA_ID = 0 -HEYMOON_ID = 0 -MIMW_ID = 0 -SNUS_ID = 0 -GUMROAD_MESSY = () -IDIO_ID = 0 CARP_ID = 0 -JOAN_ID = 0 AEVANN_ID = 0 SNAKES_ID = 0 JUSTCOOL_ID = 0 -HOMO_ID = 0 -SOREN_ID = 0 LAWLZ_ID = 0 -DAD_ID = 0 -MOM_ID = 0 -DONGER_ID = 0 -GEESE_ID = 0 -BLACKJACKBTZ_ID = 0 +TGTW_ID = 0 + MODMAIL_ID = 2 +GIFT_NOTIF_ID = 5 +SIGNUP_FOLLOW_ID = 0 POLL_THREAD = 0 POLL_BET_COINS = 200 @@ -473,8 +463,6 @@ SIDEBAR_THREAD = 0 BANNER_THREAD = 0 BADGE_THREAD = 0 SNAPPY_THREAD = 0 -GIFT_NOTIF_ID = 5 -SIGNUP_FOLLOW_ID = 0 NOTIFICATION_THREAD = 1 MAX_IMAGE_SIZE_BANNER_RESIZED_MB = 1 @@ -510,6 +498,8 @@ BADGE_BLACKLIST = { # only grantable by AEVANN_ID and SNAKES_ID except on PCM 137, # Lottery Winner } +NOTIFIED_USERS = {} + if SITE == 'rdrama.net': FEATURES['PRONOUNS'] = True FEATURES['HOUSES'] = True @@ -532,36 +522,58 @@ if SITE == 'rdrama.net': HOLE_COST = 50000 HOLE_INACTIVITY_DELETION = True + PRIVILEGED_USER_BOTS = (12125,16049) + GUMROAD_MESSY = (1230,1379) + AUTOJANNY_ID = 1046 SNAPPY_ID = 261 LONGPOSTBOT_ID = 1832 ZOZBOT_ID = 1833 - PRIVILEGED_USER_BOTS = (12125, 16049) - - SCHIZO_ID = 8494 KIPPY_ID = 7150 - MCCOX_ID = 8239 - CHIOBU_ID = 5214 PIZZASHILL_ID = 2424 IMPASSIONATA_ID = 5800 - HEYMOON_ID = 3635 - MIMW_ID = 3377 - SNUS_ID = 8407 - GUMROAD_MESSY = (1230,1379) - IDIO_ID = 30 CARP_ID = 995 - JOAN_ID = 28 AEVANN_ID = 1 SNAKES_ID = 10288 JUSTCOOL_ID = 4999 - HOMO_ID = 147 - SOREN_ID = 2546 LAWLZ_ID = 3833 - DAD_ID = 2513 - MOM_ID = 4588 - DONGER_ID = 541 - GEESE_ID = 1710 - BLACKJACKBTZ_ID = 12732 + TGTW_ID = 2008 + + NOTIFIED_USERS = { + 'aevan': AEVANN_ID, + 'avean': AEVANN_ID, + 'carp': CARP_ID, + 'clit': CARP_ID, + 'snakes': SNAKES_ID, + 'sneks': SNAKES_ID, + 'snekky': SNAKES_ID, + 'snekchad': SNAKES_ID, + 'jc': JUSTCOOL_ID, + 'justcool': JUSTCOOL_ID, + 'kippy': KIPPY_ID, + 'lawlz': LAWLZ_ID, + 'transgirltradwife': TGTW_ID, + 'impassionata': IMPASSIONATA_ID, + 'pizzashill': PIZZASHILL_ID, + + 'joan': 28, + 'pewkie': 28, + 'idio3': 30, + 'idio ': 30, + 'telegram ': 30, + 'the_homocracy': 147, + 'donger': 541, + 'geese': 1710, + 'soren': 2546, + 'marseyismywaifu': 3377, + 'mimw': 3377, + 'heymoon': 3635, + 'jollymoon': 3635, + 'chiobu': 5214, + 'mccox': 8239, + 'snus': 8407, + 'schizo': 8494, + } ANTISPAM_BYPASS_IDS = {1703, 13427} @@ -714,46 +726,12 @@ bots = {AUTOJANNY_ID, SNAPPY_ID, LONGPOSTBOT_ID, ZOZBOT_ID, BASEDBOT_ID} COLORS = {'ff66ac','805ad5','62ca56','38a169','80ffff','2a96f3','eb4963','ff0000','f39731','30409f','3e98a7','e4432d','7b9ae4','ec72de','7f8fa6', 'f8db58','8cdbe6', DEFAULT_COLOR} BAN_EVASION_DOMAIN = 'stupidpol.site' +BAN_EVASION_FULL = f'https://{BAN_EVASION_DOMAIN}' DOUBLE_XP_ENABLED = -1 # set to unixtime for when DXP begins, -1 to disable ### COMMENT NOTIFICATIONS ### -NOTIFIED_USERS = { - 'aevan': AEVANN_ID, - 'avean': AEVANN_ID, - 'joan': JOAN_ID, - 'pewkie': JOAN_ID, - 'carp': CARP_ID, - 'idio3': IDIO_ID, - 'idio ': IDIO_ID, - 'telegram ': IDIO_ID, - 'the_homocracy': HOMO_ID, - 'schizo': SCHIZO_ID, - 'snakes': SNAKES_ID, - 'sneks': SNAKES_ID, - 'snekky': SNAKES_ID, - 'snekchad': SNAKES_ID, - 'jc': JUSTCOOL_ID, - 'justcool': JUSTCOOL_ID, - 'geese': GEESE_ID, - 'clit': CARP_ID, - 'kippy': KIPPY_ID, - 'mccox': MCCOX_ID, - - 'lawlz': LAWLZ_ID, - 'chiobu': CHIOBU_ID, - 'donger': DONGER_ID, - 'soren': SOREN_ID, - 'pizzashill': PIZZASHILL_ID, - 'impassionata': IMPASSIONATA_ID, - 'heymoon': HEYMOON_ID, - 'jollymoon': HEYMOON_ID, - 'marseyismywaifu': MIMW_ID, - 'mimw': MIMW_ID, - 'snus': SNUS_ID, -} - FORTUNE_REPLIES = ('Your fortune: Allah Wills It','Your fortune: Inshallah, Only Good Things Shall Come To Pass','Your fortune: Allah Smiles At You This Day','Your fortune: Your Bussy Is In For A Blasting','Your fortune: You Will Be Propositioned By A High-Tier Twink','Your fortune: Repent, You Have Displeased Allah And His Vengeance Is Nigh','Your fortune: Reply Hazy, Try Again','Your fortune: lmao you just lost 100 coins','Your fortune: Yikes π¬','Your fortune: You Will Be Blessed With Many Black Bulls','Your fortune: NEETmax, The Day Is Lost If You Venture Outside','Your fortune: A Taste Of Jannah Awaits You Today','Your fortune: Watch Your Back','Your fortune: Outlook good','Your fortune: Godly Luck','Your fortune: Good Luck','Your fortune: Bad Luck','Your fortune: Good news will come to you by mail','Your fortune: Very Bad Luck','Your fortune: ο½·οΎββββββ(οΎβοΎ)ββββββ !!!!','Your fortune: Better not tell you now','Your fortune: You will meet a dark handsome stranger','Your fortune: οΌγΒ΄_γ`οΌοΎο½°οΎ','Your fortune: Excellent Luck','Your fortune: Average Luck') FACTCHECK_REPLIES = ('Factcheck: This claim has been confirmed as correct by experts. ','Factcheck: This claim has been classified as misogynistic.','Factcheck: This claim is currently being debunked.','Factcheck: This claim is 100% true.','Factcheck: This claim hurts trans lives.','Factcheck: [REDACTED].','Factcheck: This claim is both true and false.','Factcheck: You really believe that shit? Lmao dumbass nigga π€£','Factcheck: None of this is real.','Factcheck: Yes.','Factcheck: This claim has not been approved by experts.','Factcheck: This claim is a gross exageration of reality.','Factcheck: WARNING! THIS CLAIM HAS BEEN CLASSIFIED AS DANGEROUS. PLEASE REMAIN STILL, AN AGENT WILL COME TO MEET YOU SHORTLY.') EIGHTBALL_REPLIES = ('The 8-Ball Says: It is certain.', 'The 8-Ball Says: It is decidedly so.', 'The 8-Ball Says: Without a doubt.', 'The 8-Ball Says: Yes definitely.', 'The 8-Ball Says: You may rely on it.', 'The 8-Ball Says: As I see it, yes.', 'The 8-Ball Says: Most likely.', 'The 8-Ball Says: Outlook good.', 'The 8-Ball Says: Yes.', 'The 8-Ball Says: Signs point to yes.', 'The 8-Ball Says: Reply hazy, try again.', 'The 8-Ball Says: Ask again later.', 'The 8-Ball Says: Better not tell you now.', 'The 8-Ball Says: Cannot predict now.', 'The 8-Ball Says: Concentrate and ask again.', 'The 8-Ball Says: Don\'t count on it.', 'The 8-Ball Says: My reply is no.', 'The 8-Ball Says: My sources say no.', 'The 8-Ball Says: Outlook not so good.', 'The 8-Ball Says: Very doubtful.') @@ -773,12 +751,12 @@ if SITE == 'rdrama.net': REDDIT_NOTIFS_SITE.add('justice4darrell') REDDIT_NOTIFS_SITE.add('cringetopia.org') REDDIT_NOTIFS_USERS = { - 'idio3': IDIO_ID, + 'idio3': 30, 'aevann': AEVANN_ID, 'carpflo': CARP_ID, 'carpathianflorist': CARP_ID, 'carpathian florist': CARP_ID, - 'the_homocracy': HOMO_ID, + 'the_homocracy': 147, 'justcool393': JUSTCOOL_ID } elif SITE_NAME == 'WPD': @@ -1000,6 +978,9 @@ if SITE_NAME == 'rDrama': 'bungie.net', 'soyjak.party', 'teamblind.com', + 'mainchan.com', + 'encyclopediadramatica.online', + 'thecoli.com', #fediverse 'rdrama.cc', diff --git a/files/helpers/config/modaction_types.py b/files/helpers/config/modaction_types.py index 8ac140bed..3c686e274 100644 --- a/files/helpers/config/modaction_types.py +++ b/files/helpers/config/modaction_types.py @@ -236,13 +236,23 @@ MODACTION_TYPES = { "icon": 'fa-award', "color": 'bg-primary' }, + 'set_new': { + "str": 'changed the default sorting of comments on {self.target_link} to `new`', + "icon": 'fa-sparkles', + "color": 'bg-primary' + }, + 'set_hot': { + "str": 'changed the default sorting of comments on {self.target_link} to `hot`', + "icon": 'fa-fire', + "color": 'bg-primary' + }, 'set_nsfw': { - "str": 'set nsfw on post {self.target_link}', + "str": 'set {self.target_link} as +18', "icon": 'fa-eye-evil', "color": 'bg-danger' }, 'set_nsfw_comment': { - "str": 'set nsfw on a {self.target_link}', + "str": 'set {self.target_link} as +18', "icon": 'fa-eye-evil', "color": 'bg-danger' }, @@ -302,12 +312,12 @@ MODACTION_TYPES = { "color": 'bg-muted' }, 'unset_nsfw': { - "str": 'un-set nsfw on post {self.target_link}', + "str": 'unset {self.target_link} as +18', "icon": 'fa-eye-evil', "color": 'bg-success' }, 'unset_nsfw_comment': { - "str": 'un-set nsfw on a {self.target_link}', + "str": 'unset {self.target_link} as +18', "icon": 'fa-eye-evil', "color": 'bg-success' }, diff --git a/files/helpers/cron.py b/files/helpers/cron.py index 32c871042..e2889caf4 100644 --- a/files/helpers/cron.py +++ b/files/helpers/cron.py @@ -90,7 +90,11 @@ def _sub_inactive_purge_task(): posts = g.db.query(Submission).filter(Submission.sub.in_(names)).all() for post in posts: - post.sub = None + if post.sub == 'programming': + post.sub = 'slackernews' + else: + post.sub = None + post.hole_pinned = None g.db.add(post) diff --git a/files/helpers/media.py b/files/helpers/media.py index 93932cd14..ff7f87152 100644 --- a/files/helpers/media.py +++ b/files/helpers/media.py @@ -176,7 +176,7 @@ def process_image(filename:str, v, resize=0, trim=False, uploader_id:Optional[in path = filename.rsplit('/', 1)[0] kind = path.split('/')[-1] - if kind in ('banners','sidebar','badges'): + if kind in ('banners','sidebar'): hashes = {} for img in os.listdir(path): diff --git a/files/helpers/regex.py b/files/helpers/regex.py index e36dc79a1..c13bfbf14 100644 --- a/files/helpers/regex.py +++ b/files/helpers/regex.py @@ -40,7 +40,7 @@ controversial_regex = re.compile('["> ](https:\/\/old\.reddit\.com/r/[a-zA-Z0-9_ fishylinks_regex = re.compile("https?://\S+", flags=re.A) -spoiler_regex = re.compile('\|\|(.+)\|\|(?![^<]*<\/(code|pre|a)>)', flags=re.A) +spoiler_regex = re.compile('\|\|(.+?)\|\|(?![^<]*<\/(code|pre|a)>)', flags=re.A) reddit_regex = re.compile('(^|\s|
)\/?((r|u)\/(\w|-){3,25})(?![^<]*<\/(code|pre|a)>)', flags=re.A) sub_regex = re.compile('(^|\s|
)\/?(h\/(\w|-){3,25})(?![^<]*<\/(code|pre|a)>)', flags=re.A) diff --git a/files/helpers/sanitize.py b/files/helpers/sanitize.py index 742f8d273..f7562a03b 100644 --- a/files/helpers/sanitize.py +++ b/files/helpers/sanitize.py @@ -58,14 +58,12 @@ def allowed_attributes(tag, name, value): try: value = int(value.replace('px', '')) except: return False if 0 < value <= 250: return True - return False if tag == 'a': if name == 'href' and '\\' not in value and 'xn--' not in value: return True if name == 'rel' and value == 'nofollow noopener': return True if name == 'target' and value == '_blank': return True - return False if tag == 'img': if name in {'src','data-src'}: return is_safe_url(value) @@ -73,38 +71,33 @@ def allowed_attributes(tag, name, value): if name == 'data-bs-toggle' and value == 'tooltip': return True if name in {'g','b','glow'} and not value: return True if name in {'alt','title'}: return True - return False if tag == 'lite-youtube': if name == 'params' and value.startswith('autoplay=1&modestbranding=1'): return True if name == 'videoid': return True - return False if tag == 'video': if name == 'controls' and value == '': return True if name == 'preload' and value == 'none': return True if name == 'src': return is_safe_url(value) - return False if tag == 'audio': if name == 'src': return is_safe_url(value) if name == 'controls' and value == '': return True if name == 'preload' and value == 'none': return True - return False if tag == 'p': - if name == 'class' and value == 'mb-0': return True - return False + if name == 'class' and value in ('mb-0','resizable'): return True if tag == 'span': if name == 'data-bs-toggle' and value == 'tooltip': return True if name == 'title': return True if name == 'alt': return True - return False if tag == 'table': if name == 'class' and value == 'table': return True - return False + + return False def build_url_re(tlds, protocols): """Builds the url regex used by linkifier @@ -370,7 +363,7 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_marseys sanitized = sanitized.replace(i.group(0), htmlsource) - sanitized = video_sub_regex.sub(r'\1', sanitized) + sanitized = video_sub_regex.sub(r'\1
', sanitized) sanitized = audio_sub_regex.sub(r'\1', sanitized) if count_marseys: @@ -429,7 +422,6 @@ def allowed_attributes_emojis(tag, name, value): if name == 'data-bs-toggle' and value == 'tooltip': return True if name == 'title': return True if name == 'alt': return True - return False return False diff --git a/files/routes/__init__.py b/files/routes/__init__.py index 8c60b809a..e29775253 100644 --- a/files/routes/__init__.py +++ b/files/routes/__init__.py @@ -2,7 +2,7 @@ from files.helpers.config.const import FEATURES # import flask then... -from flask import g, request, render_template, make_response, redirect, jsonify, send_from_directory, send_file +from flask import g, request, render_template, make_response, redirect, jsonify, send_file # import our app then... from files.__main__ import app diff --git a/files/routes/admin.py b/files/routes/admin.py index 7becbc01f..09336cc4f 100644 --- a/files/routes/admin.py +++ b/files/routes/admin.py @@ -1,6 +1,8 @@ import time from urllib.parse import quote, urlencode +from sqlalchemy import nullslast + from files.__main__ import app, cache, limiter from files.classes import * from files.helpers.actions import * @@ -335,7 +337,19 @@ def revert_actions(v:User, username): @app.get("/admin/shadowbanned") @admin_level_required(PERMS['USER_SHADOWBAN']) def shadowbanned(v): - users = g.db.query(User).filter(User.shadowbanned != None).order_by(User.shadowbanned).all() + users = g.db.query(User) \ + .filter( + User.shadowbanned != None, + User.truescore > 0, + not_(and_( + User.profileurl.startswith('/e/'), + User.customtitle==None, + User.namecolor == DEFAULT_COLOR, + User.patron == 0, + )) + ) \ + .order_by(nullslast(User.last_active.desc())).all() + return render_template("admin/shadowbanned.html", v=v, users=users) @@ -545,6 +559,8 @@ def badge_grant_post(v): if '\\' in url: abort(400) if url.startswith(SITE_FULL): url = url.split(SITE_FULL, 1)[1] + elif url.startswith(BAN_EVASION_FULL): + url = url.split(BAN_EVASION_FULL, 1)[1] new_badge.url = url g.db.add(new_badge) @@ -1075,12 +1091,16 @@ def agendaposter(user_id, v): try: post = int(request.values["reason"].split("/post/")[1].split(None, 1)[0]) except: abort(400) post = get_post(post) + if post.sub == 'chudrama': + abort(403, "You can't chud people in /h/chudrama") post.chuddedfor = f'{duration} by @{v.username}' g.db.add(post) elif request.values["reason"].startswith("/comment/"): try: comment = int(request.values["reason"].split("/comment/")[1].split(None, 1)[0]) except: abort(400) comment = get_comment(comment) + if comment.post.sub == 'chudrama': + abort(403, "You can't chud people in /h/chudrama") comment.chuddedfor = f'{duration} by @{v.username}' g.db.add(comment) diff --git a/files/routes/asset_submissions.py b/files/routes/asset_submissions.py index 12687893e..967e30c63 100644 --- a/files/routes/asset_submissions.py +++ b/files/routes/asset_submissions.py @@ -14,17 +14,7 @@ from files.__main__ import app, cache, limiter ASSET_TYPES = (Marsey, HatDef) CAN_APPROVE_ASSETS = (AEVANN_ID, CARP_ID, SNAKES_ID) -CAN_UPDATE_ASSETS = (AEVANN_ID, CARP_ID, SNAKES_ID, GEESE_ID, JUSTCOOL_ID) - -@app.get('/asset_submissions/Two accounts controlled by different people should have most uniqueness percentages at or above 70-80%
A sockpuppet account will have its uniqueness percentages significantly lower.
- + {% endif %} {% endif %} {% endif %} diff --git a/files/templates/admin/alts.html b/files/templates/admin/alts.html index bd12fa58c..b01f443e3 100644 --- a/files/templates/admin/alts.html +++ b/files/templates/admin/alts.html @@ -61,8 +61,8 @@ {% endif %} diff --git a/files/templates/admin/badge_admin.html b/files/templates/admin/badge_admin.html index ff1bda4d6..62cd26d4d 100644 --- a/files/templates/admin/badge_admin.html +++ b/files/templates/admin/badge_admin.html @@ -18,10 +18,10 @@Select | -Image | -Name | -Default Description | +Select | +Image | +Name | +Default Description |
---|---|---|---|---|---|---|---|
# | Name | +Last Active | +Truescore | Shadowbanned by | Shadowban reason | ||
{{loop.index}} | -{% include "user_in_table.html" %} | +{%- include 'user_in_table.html' -%} | ++ | {{user.truescore}} | {{user.shadowbanned}} | -{{user.ban_reason}} | +{% if user.ban_reason %}{{user.ban_reason}}{% endif %} |
# | +# | Name | Image | Description | -# | -Rarity | +# | +Rarity |
---|
# | Name | + {% if v and v.admin_level >= PERMS['VIEW_LAST_ACTIVE'] -%} +Last Active | + {%- endif %} +Truescore | Ban reason | Banned by | Unban in | @@ -17,17 +21,21 @@||
---|---|---|---|---|---|---|---|---|
{{loop.index}} | {% include "user_in_table.html" %} | + {% if v and v.admin_level >= PERMS['VIEW_LAST_ACTIVE'] -%} ++ {%- endif %} + | {{user.truescore}} | {% if user.ban_reason %}{{user.ban_reason}}{% endif %} | -- {% with user=user.banned_by %} - {% include "user_in_table.html" %} - {% endwith %} - | -- {{user.unban_in}} + {% with user=user.banned_by %} + | + {% include "user_in_table.html" %} | + {% endwith %} +
# | Name | + {% if v and v.admin_level >= PERMS['VIEW_LAST_ACTIVE'] -%} +Last Active | + {%- endif %} +Truescore | Unchud in | |
---|---|---|---|---|---|
{{loop.index}} | {% include "user_in_table.html" %} | -{{user.unchud_in}} | + {% if v and v.admin_level >= PERMS['VIEW_LAST_ACTIVE'] -%} ++ {%- endif %} + | {{user.truescore}} | +
+ +
Hat | -Name | -Description | +Hat | +Name | +Description | {% if SITE == 'rdrama.net' %} - {% if request.values.get("sort") == 'author_asc' %} -Author | - {% else %} -Author | - {% endif %} -Owners | -Price | -Actions | -Added on | - {% else %} -Owners | -Price | -Actions | -Added on | +Author | {% endif %} +Owners | +Price | +Actions | +Added on |
{% if hat.id not in owned_hat_ids and hat.is_purchasable %}
-
+
{% if FEATURES['MARSEYBUX'] %}
-
+
{% endif %}
{% endif %}
@@ -138,5 +129,5 @@
{% endfor %}
|
---|
+ +