Merge branch 'main' of gitlab.com:bashrc2/epicyon

main
Bob Mottram 2021-11-18 23:53:56 +00:00
commit 64ac72f1bc
16 changed files with 2210 additions and 298 deletions

View File

@ -18,7 +18,9 @@
--font-size-header: 18px; --font-size-header: 18px;
--font-color-header: #ccc; --font-color-header: #ccc;
--font-size-button-mobile: 34px; --font-size-button-mobile: 34px;
--font-size-button-tiny: 17px;
--font-size-mobile: 50px; --font-size-mobile: 50px;
--font-size-tiny: 25px;
--font-size: 30px; --font-size: 30px;
--font-size2: 24px; --font-size2: 24px;
--font-size3: 38px; --font-size3: 38px;
@ -36,6 +38,7 @@
--button-deny: darkred; --button-deny: darkred;
--button-height: 10px; --button-height: 10px;
--button-height-padding-mobile: 20px; --button-height-padding-mobile: 20px;
--button-height-padding-tiny: 10px;
--button-height-padding: 10px; --button-height-padding: 10px;
--image-corners: 10%, --image-corners: 10%,
--gallery-border: #ccc; --gallery-border: #ccc;
@ -43,6 +46,7 @@
--gallery-text-color: #ccc; --gallery-text-color: #ccc;
--gallery-font-size: 22px; --gallery-font-size: 22px;
--gallery-font-size-mobile: 35px; --gallery-font-size-mobile: 35px;
--gallery-font-size-tiny: 17px;
--button-corner-radius: 15px; --button-corner-radius: 15px;
--timeline-border-radius: 30px; --timeline-border-radius: 30px;
--focus-color: white; --focus-color: white;
@ -1403,3 +1407,350 @@ div.gallery img {
opacity: 0.7; opacity: 0.7;
} }
} }
@media screen and (max-width: 480px) {
body, html {
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
}
h1 {
font-family: var(--header-font);
font-size: var(--font-size-tiny);
color: var(--title-color);
}
div.gallerytext {
color: var(--gallery-text-color);
font-size: var(--gallery-font-size-tiny);
font-family: "Times New Roman", Roman, serif;
}
.galleryContainer {
display: grid;
grid-template-columns: auto;
background-color: var(--main-bg-color);
}
div.gallery {
margin: 5px;
border: 1px solid var(--gallery-border);
float: left;
width: 100%;
}
div.imagedesc {
padding: 35px;
text-align: center;
}
.container img {
float: left;
max-width: 400px;
width: 15%;
padding: 0px 7px;
margin-right: 20px;
border-radius: var(--image-corners);
}
.container img.emojisearch {
width: 12%;
float: right;
vertical-align: middle;
}
.container img.emojicalendar {
float: left;
max-width: 400px;
width: 12%;
-ms-transform: translateY(-25%);
transform: translateY(-25%);
}
.container img.timelineicon {
float: right;
margin-left: 0px;
margin-right:0;
padding: 0 0;
margin: 0 0;
width: 100px;
}
.container img.emojiheader {
float: none;
width: 45px;
margin-left: 0px;
margin-right: 0px;
padding-right: 0px;
border-radius: 0px;
vertical-align: middle;
}
div.mediaavatar img {
float: left;
max-width: 200px;
width: 8%;
margin: 0px 1%;
border-radius: 0%;
}
div.mediaicons img {
float: right;
max-width: 200px;
width: 10%;
margin: 0px 1%;
border-radius: 0%;
}
.containericons img {
float: right;
max-width: 200px;
width: 7%;
margin: 1% 3%;
border-radius: 0%;
}
.timeline-avatar img {
opacity: 1.0;
width: 15%;
height: 15%;
padding: 0px 0px;
-ms-transform: translateY(-10%);
transform: translateY(-10%);
border-radius: var(--avatar-rounding);
}
.cwButton {
border-radius: var(--button-corner-radius);
background-color: #554;
border: none;
color: #FFFFFE;
text-align: center;
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
padding: 2px;
cursor: pointer;
margin: 5px;
}
.buttonevent {
border-radius: var(--button-corner-radius);
background-color: var(--button-highlighted);
border: none;
color: var(--button-text);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: "Times New Roman", Roman, serif;
padding: var(--button-height-padding-tiny);
transition: all 0.5s;
cursor: pointer;
margin: 15px;
}
.button {
border-radius: var(--button-corner-radius);
background-color: var(--button-background);
border: none;
color: var(--button-text);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: "Times New Roman", Roman, serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 80px;
transition: all 0.5s;
cursor: pointer;
margin: 15px;
}
.buttonhighlighted {
border-radius: var(--button-corner-radius);
background-color: var(--button-highlighted);
border: none;
color: var(--button-text);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: "Times New Roman", Roman, serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 80px;
transition: all 0.5s;
cursor: pointer;
margin: 15px;
}
.buttonselected {
border-radius: var(--button-corner-radius);
background-color: var(--button-selected);
border: none;
color: var(--button-text);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: "Times New Roman", Roman, serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 80px;
transition: all 0.5s;
cursor: pointer;
margin: 15px;
}
.buttonselectedhighlighted {
border-radius: var(--button-corner-radius);
background-color: var(--button-selected-highlighted);
border: none;
color: var(--button-text);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: "Times New Roman", Roman, serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 80px;
transition: all 0.5s;
cursor: pointer;
margin: 15px;
}
.followApprove {
border-radius: var(--button-corner-radius);
background-color: var(--button-approve);
border: none;
color: #FFFFFF;
text-align: center;
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 80px;
cursor: pointer;
margin: 0 15px;
float: right;
}
.followDeny {
border-radius: var(--button-corner-radius);
background-color: var(--button-deny);
border: none;
color: #FFFFFF;
text-align: center;
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 80px;
cursor: pointer;
margin: 0 15px;
float: right;
}
.pageicon {
width: 14%;
}
.time-right {
float: right;
color: var(--time-color);
margin: 25px 20px;
}
input[type=text], select, textarea {
width: 100%;
padding: 12px;
border: 1px solid #ccc;
border-radius: var(--button-corner-radius);
box-sizing: border-box;
margin-top: 6px;
margin-bottom: 16px;
resize: vertical;
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
background-color: var(--main-bg-color-reply);
color: var(--main-fg-color);
}
input[type=button], input[type=submit] {
background-color: var(--button-background);
color: var(--button-text);
display: inline-block;
padding: var(--button-height-padding-tiny);
margin: 15px;
border: none;
border-radius: var(--button-corner-radius);
cursor: pointer;
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
width: 20%;
}
.question {
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
}
.questionresult {
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
}
input[type=radio] {
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
height: 90px;
vertical-align: middle;
margin-right: 20px;
}
input.vote[type=submit] {
background-color: var(--button-background);
color: var(--button-text);
float: left;
padding: var(--button-height-padding-tiny);
margin: 15px;
border: none;
border-radius: var(--button-corner-radius);
cursor: pointer;
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
width: 20%;
}
input[type=file] {
background-color: var(--button-background);
color: var(--button-text);
padding: 20px;
margin: 0px;
border: none;
border-radius: var(--button-corner-radius);
cursor: pointer;
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
width: 95.4%;
}
.cancelbtn {
background-color: var(--button-background);
color: var(--button-text);
display: inline-block;
padding: var(--button-height-padding-tiny);
margin: 15px;
border: none;
border-radius: var(--button-corner-radius);
cursor: pointer;
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
width: 20%;
}
.scope-desc {
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
}
.buttonunfollow {
border-radius: var(--button-corner-radius);
background-color: var(--button-background);
border: none;
color: var(--button-text);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: "Times New Roman", Roman, serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 200px;
min-width: 100px;
transition: all 0.5s;
cursor: pointer;
margin: 5px;
float: right;
}
.license {
float: right;
margin: 0% 1%;
width: 20%;
}
.donateButton {
background-color: var(--button-background);
color: var(--button-text);
float: none;
margin: 0px 10px;
padding: 12px 40px;
border: none;
border-radius: var(--button-corner-radius);
cursor: pointer;
font-size: var(--font-size4);
font-family: "Times New Roman", Roman, serif;
opacity: 0.7;
}
}

View File

@ -1,7 +1,7 @@
:root { :root {
--main-bg-color: #282c37; --main-bg-color: #e6ebf0;
--calendar-bg-color: #eee; --calendar-bg-color: #e6ebf0;
--lines-color: black; --lines-color: darkblue;
--day-number: black; --day-number: black;
--day-number2: #282c37; --day-number2: #282c37;
--time-color: black; --time-color: black;
@ -9,47 +9,50 @@
--event-color: #282c37; --event-color: #282c37;
--event-public-color: #282c37; --event-public-color: #282c37;
--today-foreground: white; --today-foreground: white;
--today-circle: red; --today-circle: #03a494;
--event-background: orange; --event-background: lightgrey;
--event-background-private: #ddd; --event-background-private: grey;
--event-foreground: white; --event-foreground: white;
--title-text: #282c37; --title-text: white;
--title-background: #ccc; --title-background: #2b5c6d;
--focus-color: white; --focus-color: grey;
--calendar-horizontal-padding: 0; --calendar-horizontal-padding: 0;
--calendar-cell-size: 1.5vw; --calendar-cell-size: 1.5vw;
--calendar-cell-size-mobile: 1.5vw; --calendar-cell-size-mobile: 1.5vw;
--calendar-cell-size-tiny: 1.5vw;
--font-size-calendar: 20px; --font-size-calendar: 20px;
--font-size-calendar-mobile: 30px; --font-size-calendar-mobile: 30px;
--font-size-calendar-tiny: 15px;
--font-size-calendar-header: 3rem; --font-size-calendar-header: 3rem;
--font-size-calendar-day: 1rem; --font-size-calendar-day: 1rem;
--font-size-calendar-cell: 2rem; --font-size-calendar-cell: 2rem;
--font-size-calendar-cell-mobile: 4rem; --font-size-calendar-cell-mobile: 4rem;
--font-size-calendar-cell-tiny: 2rem;
--calendar-header-font: 'Montserrat'; --calendar-header-font: 'Montserrat';
--calendar-header-font-style: italic; --calendar-header-font-style: italic;
--main-link-color-hover: #bbb; --main-link-color-hover: blue;
--rendering: normal; --rendering: normal;
} }
@font-face { @font-face {
font-family: 'Bedstead'; font-family: 'NimbusSanL';
font-style: italic; font-style: italic;
font-weight: normal; font-weight: normal;
font-display: block; font-display: block;
src: url('./fonts/bedstead.otf') format('opentype'); src: url('./fonts/NimbusSanL-italic.otf') format('opentype');
} }
@font-face { @font-face {
font-family: 'Bedstead'; font-family: 'NimbusSanL';
font-style: normal; font-style: normal;
font-weight: normal; font-weight: normal;
font-display: block; font-display: block;
src: url('./fonts/bedstead.otf') format('opentype'); src: url('./fonts/NimbusSanL.otf') format('opentype');
} }
body { body {
background-color: var(--main-bg-color); background-color: var(--main-bg-color);
color: var(--day-number2); color: var(--day-number2);
font-family: 'Montserrat'; font-family: 'NimbusSanL';
font-weight: 700; font-weight: 700;
image-rendering: var(--rendering); image-rendering: var(--rendering);
} }
@ -274,3 +277,23 @@ tr:nth-child(even) > .calendar__day__cell:nth-child(even) {
font-size: var(--font-size-calendar-mobile); font-size: var(--font-size-calendar-mobile);
} }
} }
@media screen and (max-width: 480px) {
.calendar {
table-display: fixed;
margin: 0 0;
width: 100%;
padding: 0 var(--calendar-horizontal-padding);
}
.calendar__day__cell {
font-size: var(--font-size-calendar-cell-tiny);
position: relative;
}
.calendar__day__header,
.calendar__day__cell {
padding: var(--calendar-cell-size-tiny) 0 var(--calendar-cell-size-tiny);
}
body {
font-size: var(--font-size-calendar-tiny);
}
}

View File

@ -294,3 +294,53 @@ input[type=text] {
margin: 30px 40px; margin: 30px 40px;
} }
} }
@media screen and (max-width: 480px) {
body, html {
min-width: 400px;
}
.hashtagswarm {
font-size: var(--font-size2);
font-family: Arial, Helvetica, sans-serif;
margin: var(--hashtag-margin);
line-height: var(--hashtag-vertical-spacing3);
}
.followText {
font-size: var(--font-size2);
font-family: Arial, Helvetica, sans-serif;
}
input[type=text] {
width: var(--follow-text-entry-width);
clear: both;
font-size: 20px;
font-family: Arial, Helvetica, sans-serif;
text-align: center;
color: var(--text-entry-foreground);
background-color: var(--text-entry-background);
}
.button {
border-radius: 4px;
background-color: var(--button-background);
border: none;
color: var(--button-text);
text-align: center;
padding: 10px;
font-size: 20px;
font-family: Arial, Helvetica, sans-serif;
width: 20%;
max-width: 200px;
min-width: 100px;
cursor: pointer;
margin: 30px;
}
input[type=checkbox]
{
-ms-transform: scale(4);
-moz-transform: scale(4);
-webkit-transform: scale(4);
-o-transform: scale(4);
transform: scale(4);
padding: 20px;
margin: 30px 40px;
}
}

View File

@ -20,8 +20,10 @@
--border-width: 2px; --border-width: 2px;
--font-size-header: 18px; --font-size-header: 18px;
--font-size-header-mobile: 32px; --font-size-header-mobile: 32px;
--font-size-header-tiny: 16px;
--font-color-header: #ccc; --font-color-header: #ccc;
--font-size-button-mobile: 34px; --font-size-button-mobile: 34px;
--font-size-button-tiny: 17px;
--font-size: 30px; --font-size: 30px;
--font-size2: 24px; --font-size2: 24px;
--font-size3: 38px; --font-size3: 38px;
@ -29,6 +31,7 @@
--font-size5: 20px; --font-size5: 20px;
--font-size-likes: 20px; --font-size-likes: 20px;
--font-size-likes-mobile: 32px; --font-size-likes-mobile: 32px;
--font-size-likes-tiny: 16px;
--font-size-pgp-key: 16px; --font-size-pgp-key: 16px;
--font-size-pgp-key2: 8px; --font-size-pgp-key2: 8px;
--font-size-tox: 16px; --font-size-tox: 16px;
@ -46,6 +49,7 @@
--button-deny: darkred; --button-deny: darkred;
--button-height: 10px; --button-height: 10px;
--button-height-padding-mobile: 20px; --button-height-padding-mobile: 20px;
--button-height-padding-tiny: 10px;
--button-height-padding: 10px; --button-height-padding: 10px;
--image-corners: 10%, --image-corners: 10%,
--gallery-border: #ccc; --gallery-border: #ccc;
@ -53,6 +57,7 @@
--gallery-text-color: #ccc; --gallery-text-color: #ccc;
--gallery-font-size: 22px; --gallery-font-size: 22px;
--gallery-font-size-mobile: 35px; --gallery-font-size-mobile: 35px;
--gallery-font-size-tiny: 17.5px;
--button-corner-radius: 15px; --button-corner-radius: 15px;
--timeline-border-radius: 30px; --timeline-border-radius: 30px;
--icons-side: right; --icons-side: right;
@ -67,6 +72,7 @@
--column-right-width: 10vw; --column-right-width: 10vw;
--banner-height: 15vh; --banner-height: 15vh;
--banner-height-mobile: 10vh; --banner-height-mobile: 10vh;
--banner-height-tiny: 10vh;
--header-font: 'Arial, Helvetica, sans-serif'; --header-font: 'Arial, Helvetica, sans-serif';
--rendering: normal; --rendering: normal;
} }
@ -1828,3 +1834,466 @@ aside .toggle-inside li {
margin: 40px 80px; margin: 40px 80px;
} }
} }
@media screen and (max-width: 480px) {
body, html {
background-color: var(--main-bg-color);
color: var(--main-fg-color);
height: 100%;
font-family: Arial, Helvetica, sans-serif;
min-width: 400px;
margin-left: 0;
font-size: var(--font-size);
line-height: var(--line-spacing);
}
.timeline {
border: 0;
width: 100vw;
}
.timeline-banner {
object-fit: cover;
width: 98vw;
height: var(--banner-height-tiny);
}
.column-left {
width: 0%;
}
.col-left {
float: left;
width: 0%;
display: none;
}
.col-center {
width: 100vw;
}
.col-right {
float: right;
width: 0%;
display: none;
}
.column-right {
width: 0%;
}
.column-center {
display: inline-block;
width: 100%;
}
.likesCount {
font-size: var(--font-size-likes-tiny);
font-family: Arial, Helvetica, sans-serif;
float: right;
padding: 32px 0;
transform: translateX(-20px);
font-weight: bold;
}
.container p.administeredby {
font-size: var(--font-size-tox2);
font-family: Arial, Helvetica, sans-serif;
}
.toxaddr {
font-size: var(--font-size-tox2);
font-family: Arial, Helvetica, sans-serif;
}
.ssbaddr {
font-size: var(--font-size-pgp-key2);
font-family: Arial, Helvetica, sans-serif;
}
.pgp {
font-size: var(--font-size-pgp-key2);
color: var(--main-link-color);
background: var(--link-bg-color);
font-family: 'monospace';
}
body, html {
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
}
div.gallerytext {
color: var(--gallery-text-color);
font-size: var(--gallery-font-size-tiny);
font-family: Arial, Helvetica, sans-serif;
}
.galleryContainer {
display: grid;
grid-template-columns: auto;
background-color: var(--main-bg-color);
}
div.gallery {
margin: 5px;
border: 1px solid var(--gallery-border);
float: left;
width: 100%;
}
div.imagedesc {
padding: 35px;
text-align: center;
}
.container img {
float: left;
max-width: 400px;
width: 15%;
padding: 0px 7px;
margin-right: 20px;
border-radius: var(--image-corners);
}
.container img.emojisearch {
width: 25%;
float: right;
}
.container img.emojicalendar {
float: left;
max-width: 400px;
width: 12%;
-ms-transform: translateY(-25%);
transform: translateY(-25%);
}
.container img.timelineicon {
float: var(--icons-side);
margin-left: 0px;
margin-right:0;
padding: 0 0;
margin: 0 0;
width: 100px;
}
.container img.emojiheader {
float: none;
width: 45px;
margin-left: 0px;
margin-right: 0px;
padding-right: 0px;
border-radius: 0px;
vertical-align: middle;
}
div.mediaavatar img {
float: left;
max-width: 200px;
width: 8%;
margin: 0px 1%;
border-radius: 0%;
}
div.mediaicons img {
float: right;
max-width: 200px;
width: 10%;
margin: 0px 1%;
border-radius: 0%;
}
.containericons img {
float: var(--icons-side);
max-width: 200px;
width: 7%;
margin: 1% 3%;
border-radius: 0%;
}
.timeline-avatar img {
opacity: 1.0;
width: 15%;
height: 15%;
padding: 0px 0px;
-ms-transform: translateY(-10%);
transform: translateY(-10%);
border-radius: var(--avatar-rounding);
}
.buttonevent {
border-radius: var(--button-corner-radius);
background-color: var(--button-highlighted);
border: none;
color: var(--button-fg-highlighted);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: Arial, Helvetica, sans-serif;
padding: var(--button-height-padding-tiny);
transition: all 0.5s;
cursor: pointer;
margin: 15px;
}
.button {
border-radius: var(--button-corner-radius);
background-color: var(--button-background);
border: none;
color: var(--button-text);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: Arial, Helvetica, sans-serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 10ch;
transition: all 0.5s;
cursor: pointer;
margin: 15px;
}
.buttonhighlighted {
border-radius: var(--button-corner-radius);
background-color: var(--button-highlighted);
border: none;
color: var(--button-fg-highlighted);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: Arial, Helvetica, sans-serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 10ch;
transition: all 0.5s;
cursor: pointer;
margin: 15px;
}
.buttonselected {
border-radius: var(--button-corner-radius);
background-color: var(--button-selected);
border: none;
color: var(--button-text);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: Arial, Helvetica, sans-serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 10ch;
transition: all 0.5s;
cursor: pointer;
margin: 15px;
}
.buttonselectedhighlighted {
border-radius: var(--button-corner-radius);
background-color: var(--button-selected-highlighted);
border: none;
color: var(--button-text);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: Arial, Helvetica, sans-serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 10ch;
transition: all 0.5s;
cursor: pointer;
margin: 15px;
}
.followApprove {
border-radius: var(--button-corner-radius);
background-color: var(--button-approve);
border: none;
color: #FFFFFF;
text-align: center;
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 80px;
cursor: pointer;
margin: 0 15px;
float: right;
}
.followDeny {
border-radius: var(--button-corner-radius);
background-color: var(--button-deny);
border: none;
color: #FFFFFF;
text-align: center;
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 400px;
min-width: 80px;
cursor: pointer;
margin: 0 15px;
float: right;
}
.pageicon {
width: 14%;
}
.time-right {
float: var(--icons-side);
color: var(--time-color);
margin: 25px 20px;
}
input[type=text], select, textarea {
width: 100%;
padding: 12px;
border: 1px solid #ccc;
border-radius: var(--button-corner-radius);
box-sizing: border-box;
margin-top: 6px;
margin-bottom: 16px;
resize: vertical;
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
background-color: var(--main-bg-color-reply);
color: var(--main-fg-color);
}
input[type=button], input[type=submit] {
background-color: var(--button-background);
color: var(--button-text);
display: inline-block;
padding: var(--button-height-padding-tiny);
margin: 15px;
border: none;
border-radius: var(--button-corner-radius);
cursor: pointer;
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
width: 20%;
}
.question {
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
}
.questionresult {
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
}
input[type=radio] {
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
height: 90px;
vertical-align: middle;
margin-right: 20px;
}
input.vote[type=submit] {
background-color: var(--button-background);
color: var(--button-text);
float: left;
padding: var(--button-height-padding-tiny);
margin: 15px;
border: none;
border-radius: var(--button-corner-radius);
cursor: pointer;
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
width: 20%;
}
input[type=file] {
background-color: var(--button-background);
color: var(--button-text);
padding: 20px;
margin: 0px;
border: none;
border-radius: var(--button-corner-radius);
cursor: pointer;
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
width: 95.4%;
}
.cancelbtn {
background-color: var(--button-background);
color: var(--button-text);
display: inline-block;
padding: var(--button-height-padding-tiny);
margin: 15px;
border: none;
border-radius: var(--button-corner-radius);
cursor: pointer;
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
width: 20%;
}
.scope-desc {
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
}
.buttonunfollow {
border-radius: var(--button-corner-radius);
background-color: var(--button-background);
border: none;
color: var(--button-text);
text-align: center;
font-size: var(--font-size-button-tiny);
font-family: Arial, Helvetica, sans-serif;
padding: var(--button-height-padding-tiny);
width: 20%;
max-width: 200px;
min-width: 100px;
transition: all 0.5s;
cursor: pointer;
margin: 5px;
float: right;
}
.license {
float: right;
margin: 0% 1%;
width: 20%;
}
.donateButton {
background-color: var(--button-background);
color: var(--button-text);
float: none;
margin: 0px 10px;
padding: 12px 40px;
border: none;
border-radius: var(--button-corner-radius);
cursor: pointer;
font-size: var(--font-size3);
font-family: Arial, Helvetica, sans-serif;
opacity: 0.7;
}
#msgscope label img {
width: 64px;
height: 64px;
padding: 0px 0px;
}
.toggle-msgScope img {
width: 64px;
height: 64px;
margin: -15px 0px;
padding: 0px 20px;
}
.dropdown-menutoggle {
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;
-webkit-padding-start: 40px;
border-top-left-radius: 0;
border-top-right-radius: 0;
position: absolute;
top: 100%;
left: 21px;
width: 460%;
min-width: 100%;
z-index: 1000;
display: block;
float: left;
padding: 0 17px !important;
margin: 2px 0 0 !important;
font-size: var(--font-size3);
text-align: left;
list-style: none;
color: var(--dropdown-fg-color);
background-color: var(--dropdown-bg-color);
-webkit-background-clip: padding-box;
background-clip: padding-box;
}
input[type=checkbox]
{
-ms-transform: scale(4);
-moz-transform: scale(4);
-webkit-transform: scale(4);
-o-transform: scale(4);
transform: scale(4);
padding: 20px;
margin: 30px 40px;
}
input[type=radio]
{
-ms-transform: scale(2);
-moz-transform: scale(2);
-webkit-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
padding: 20px;
margin: 30px 40px;
}
input[type=number]
{
-ms-transform: scale(2);
-moz-transform: scale(2);
-webkit-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
padding: 10px;
margin: 40px 80px;
}
}

View File

@ -1,44 +1,45 @@
@charset "UTF-8"; @charset "UTF-8";
:root { :root {
--login-bg-color: #282c37; --login-bg-color: #010026;
--link-bg-color: #282c37; --link-bg-color: #e6ebf0;
--login-fg-color: #dddddd; --login-fg-color: white;
--main-link-color: #999; --main-link-color: darkblue;
--main-visited-color: #888; --main-visited-color: #232c37;
--border-color: #505050; --border-color: #c0cdd9;
--border-width: 2px; --border-width: 1px;
--font-size-header: 18px; --font-size-header: 18px;
--font-color-header: #ccc; --font-color-header: black;
--login-font-size: 22px; --login-font-size: 22px;
--login-font-size-mobile: 40px; --login-font-size-mobile: 40px;
--text-entry-foreground: #ccc; --login-font-size-tiny: 20px;
--text-entry-background: #111; --text-entry-foreground: #111;
--text-entry-background: white;
--time-color: #aaa; --time-color: #aaa;
--button-text: #FFFFFF; --button-text: #FFFFFF;
--button-background: #999; --button-background: #999;
--button-selected: #666; --button-selected: #666;
--form-border-radius: 30px; --form-border-radius: 30px;
--focus-color: white; --focus-color: grey;
--line-spacing: 130%; --line-spacing: 130%;
--login-logo-width: 20%; --login-logo-width: 20%;
--main-link-color-hover: #bbb; --main-link-color-hover: blue;
--rendering: normal; --rendering: normal;
} }
@font-face { @font-face {
font-family: 'Bedstead'; font-family: 'NimbusSanL';
font-style: italic; font-style: italic;
font-weight: normal; font-weight: normal;
font-display: block; font-display: block;
src: url('./fonts/bedstead.otf') format('opentype'); src: url('./fonts/NimbusSanL-italic.otf') format('opentype');
} }
@font-face { @font-face {
font-family: 'Bedstead'; font-family: 'NimbusSanL';
font-style: normal; font-style: normal;
font-weight: normal; font-weight: normal;
font-display: block; font-display: block;
src: url('./fonts/bedstead.otf') format('opentype'); src: url('./fonts/NimbusSanL.otf') format('opentype');
} }
body, html { body, html {
@ -52,7 +53,7 @@ body, html {
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
height: 100%; height: 100%;
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
max-width: 60%; max-width: 60%;
min-width: 600px; min-width: 600px;
margin: 0 auto; margin: 0 auto;
@ -112,7 +113,7 @@ input[type=text], input[type=password] {
border: 1px solid #ccc; border: 1px solid #ccc;
box-sizing: border-box; box-sizing: border-box;
font-size: var(--login-font-size); font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
} }
button { button {
@ -124,12 +125,12 @@ button {
cursor: pointer; cursor: pointer;
width: 100%; width: 100%;
font-size: var(--login-font-size); font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
} }
.login-text { .login-text {
font-size: var(--login-font-size); font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
} }
button:hover { button:hover {
@ -170,17 +171,17 @@ span.psw {
background-color: var(--login-bg-color); background-color: var(--login-bg-color);
color: var(--login-fg-color); color: var(--login-fg-color);
height: 100%; height: 100%;
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
max-width: 60%; max-width: 60%;
min-width: 600px; min-width: 600px;
margin: 0 auto; margin: 0 auto;
font-size: var(--login-font-size); font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
position: relative; position: relative;
} }
.login-text { .login-text {
font-size: var(--login-font-size); font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
} }
input[type=text], input[type=password] { input[type=text], input[type=password] {
width: 100%; width: 100%;
@ -190,7 +191,7 @@ span.psw {
border: 1px solid #ccc; border: 1px solid #ccc;
box-sizing: border-box; box-sizing: border-box;
font-size: var(--login-font-size); font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
} }
button { button {
background-color: var(--button-background); background-color: var(--button-background);
@ -201,7 +202,7 @@ span.psw {
cursor: pointer; cursor: pointer;
width: 100%; width: 100%;
font-size: var(--login-font-size); font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
} }
} }
@ -210,17 +211,17 @@ span.psw {
background-color: var(--login-bg-color); background-color: var(--login-bg-color);
color: var(--login-fg-color); color: var(--login-fg-color);
height: 100%; height: 100%;
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
max-width: 95%; max-width: 95%;
min-width: 600px; min-width: 600px;
margin: 0 auto; margin: 0 auto;
font-size: var(--login-font-size-mobile); font-size: var(--login-font-size-mobile);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
position: relative; position: relative;
} }
.login-text { .login-text {
font-size: var(--login-font-size-mobile); font-size: var(--login-font-size-mobile);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
} }
input[type=text], input[type=password] { input[type=text], input[type=password] {
width: 100%; width: 100%;
@ -230,7 +231,7 @@ span.psw {
border: 1px solid #ccc; border: 1px solid #ccc;
box-sizing: border-box; box-sizing: border-box;
font-size: var(--login-font-size-mobile); font-size: var(--login-font-size-mobile);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
} }
button { button {
background-color: var(--button-background); background-color: var(--button-background);
@ -241,6 +242,46 @@ span.psw {
cursor: pointer; cursor: pointer;
width: 100%; width: 100%;
font-size: var(--login-font-size-mobile); font-size: var(--login-font-size-mobile);
font-family: Arial, Helvetica, sans-serif; font-family: 'NimbusSanL';
}
}
@media screen and (max-width: 480px) {
body, html {
background-color: var(--login-bg-color);
color: var(--login-fg-color);
height: 100%;
font-family: 'NimbusSanL';
max-width: 95%;
min-width: 400px;
margin: 0 auto;
font-size: var(--login-font-size-tiny);
font-family: 'NimbusSanL';
position: relative;
}
.login-text {
font-size: var(--login-font-size-tiny);
font-family: 'NimbusSanL';
}
input[type=text], input[type=password] {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
box-sizing: border-box;
font-size: var(--login-font-size-tiny);
font-family: 'NimbusSanL';
}
button {
background-color: var(--button-background);
color: var(--button-text);
padding: 14px 20px;
margin: 8px 0;
border: none;
cursor: pointer;
width: 100%;
font-size: var(--login-font-size-mobile);
font-family: 'NimbusSanL';
} }
} }

View File

@ -303,3 +303,80 @@ a:focus {
margin: 30px 40px; margin: 30px 40px;
} }
} }
@media screen and (max-width: 480px) {
textarea {
font-family: Arial, Helvetica, sans-serif;
font-size: var(--font-size2);
width: 90%;
background-color: var(--text-entry-background);
color: var(--text-entry-foreground);
}
.followText {
font-size: var(--follow-text-size2);
}
input[type=text] {
width: var(--follow-text-entry-width);
clear: both;
font-size: var(--font-size2);
text-align: center;
max-width: 50%;
min-width: var(--petname-width-chars);
color: var(--text-entry-foreground);
background-color: var(--text-entry-background);
font-family: Arial, Helvetica, sans-serif;
}
.button {
border-radius: 4px;
background-color: var(--button-background);
font-family: Arial, Helvetica, sans-serif;
border: none;
color: var(--button-text);
text-align: center;
padding: 10px;
font-size: var(--font-size2);
width: 10ch;
max-width: 200px;
min-width: 100px;
cursor: pointer;
margin: 30px;
}
.buttonIcon {
border-radius: 4px;
background-color: var(--button-background);
font-family: Arial, Helvetica, sans-serif;
border: none;
color: var(--button-text);
text-align: center;
padding: 6px 80px;
font-size: var(--font-size2);
max-width: 200px;
min-width: 100px;
cursor: pointer;
}
.buttonsmall {
border-radius: 4px;
background-color: var(--button-small-background);
font-family: Arial, Helvetica, sans-serif;
border: none;
color: var(--button-small-text);
text-align: center;
padding: 10px;
font-size: var(--font-size2);
width: 7ch;
max-width: 200px;
min-width: 100px;
cursor: pointer;
margin: 30px;
}
input[type=checkbox]
{
-ms-transform: scale(4);
-moz-transform: scale(4);
-webkit-transform: scale(4);
-o-transform: scale(4);
transform: scale(4);
padding: 20px;
margin: 30px 40px;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -342,3 +342,80 @@ input[type=text] {
margin: 30px 40px; margin: 30px 40px;
} }
} }
@media screen and (max-width: 480px) {
body, html {
min-width: 400px;
}
details {
font-size: var(--hashtag-size3);
}
.domainHistogram {
border: 0;
font-size: var(--hashtag-size3);
}
.timeline-banner {
object-fit: cover;
width: 98vw;
max-height: var(--search-banner-height-mobile);
}
.hashtagswarm {
font-size: var(--font-size2);
font-family: 'NimbusSanL';
margin: var(--hashtag-margin);
line-height: var(--hashtag-vertical-spacing3);
}
.followText {
font-size: var(--follow-text-size3);
font-family: 'NimbusSanL';
}
input[type=text] {
width: var(--follow-text-entry-width);
clear: both;
font-size: 40px;
font-family: 'NimbusSanL';
text-align: center;
color: var(--text-entry-foreground);
background-color: var(--text-entry-background);
}
.button {
border-radius: 4px;
background-color: var(--button-background);
border: none;
color: var(--button-text);
text-align: center;
padding: 10px;
font-size: 40px;
font-family: 'NimbusSanL';
width: 20%;
max-width: 200px;
min-width: 100px;
cursor: pointer;
margin: 30px;
}
input[type=checkbox]
{
-ms-transform: scale(4);
-moz-transform: scale(4);
-webkit-transform: scale(4);
-o-transform: scale(4);
transform: scale(4);
padding: 20px;
margin: 30px 40px;
}
.button {
border-radius: 4px;
background-color: var(--button-background);
border: none;
color: var(--button-text);
text-align: center;
padding: 10px;
font-size: var(--font-size2);
font-family: 'NimbusSanL';
width: 20%;
max-width: 200px;
min-width: 100px;
cursor: pointer;
margin: 30px;
}
}

View File

@ -12,6 +12,7 @@
--font-color-header: #ccc; --font-color-header: #ccc;
--welcome-font-size: 22px; --welcome-font-size: 22px;
--welcome-font-size-mobile: 40px; --welcome-font-size-mobile: 40px;
--welcome-font-size-tiny: 20px;
--text-entry-foreground: #ccc; --text-entry-foreground: #ccc;
--text-entry-background: #111; --text-entry-background: #111;
--time-color: #aaa; --time-color: #aaa;
@ -241,3 +242,43 @@ span.psw {
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }
} }
@media screen and (max-width: 480px) {
body, html {
background-color: var(--welcome-bg-color);
color: var(--welcome-fg-color);
height: 100%;
font-family: Arial, Helvetica, sans-serif;
max-width: 95%;
min-width: 400px;
margin: 0 auto;
font-size: var(--welcome-font-size-tiny);
font-family: Arial, Helvetica, sans-serif;
position: relative;
}
.welcome-text {
font-size: var(--welcome-font-size-tiny);
font-family: Arial, Helvetica, sans-serif;
}
input[type=text], input[type=password], textarea {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
box-sizing: border-box;
font-size: var(--welcome-font-size-tiny);
font-family: Arial, Helvetica, sans-serif;
}
button {
background-color: var(--button-background);
color: var(--button-text);
padding: 14px 20px;
margin: 8px 0;
border: none;
cursor: pointer;
width: var(--welcome-button-width);
font-size: var(--welcome-font-size-tiny);
font-family: Arial, Helvetica, sans-serif;
}
}

1
git.py
View File

@ -50,6 +50,7 @@ def isGitPatch(baseDir: str, nickname: str, domain: str,
"""Is the given post content a git patch? """Is the given post content a git patch?
""" """
if messageType != 'Note' and \ if messageType != 'Note' and \
messageType != 'Page' and \
messageType != 'Patch': messageType != 'Patch':
return False return False
# must have a subject line # must have a subject line

View File

@ -173,7 +173,7 @@ def signPostHeadersNew(dateStr: str, privateKeyPem: str,
hazutils.Prehashed(hashes.SHA512())) hazutils.Prehashed(hashes.SHA512()))
signature = base64.b64encode(rawSignature).decode('ascii') signature = base64.b64encode(rawSignature).decode('ascii')
else: else:
# default sha256 # default rsa-sha256
headerDigest = getSHA256(signedHeaderText.encode('ascii')) headerDigest = getSHA256(signedHeaderText.encode('ascii'))
rawSignature = key.sign(headerDigest, rawSignature = key.sign(headerDigest,
padding.PKCS1v15(), padding.PKCS1v15(),

View File

@ -446,6 +446,7 @@ def _isPublicFeedPost(item: {}, personPosts: {}, debug: bool) -> bool:
return False return False
if item['type'] != 'Create' and \ if item['type'] != 'Create' and \
item['type'] != 'Announce' and \ item['type'] != 'Announce' and \
item['type'] != 'Page' and \
item['type'] != 'Note': item['type'] != 'Note':
if debug: if debug:
print('Not a Create/Note/Announce type') print('Not a Create/Note/Announce type')
@ -465,7 +466,7 @@ def _isPublicFeedPost(item: {}, personPosts: {}, debug: bool) -> bool:
if debug: if debug:
print('object is not a dict or string') print('object is not a dict or string')
return False return False
elif item['type'] == 'Note': elif item['type'] == 'Note' or item['type'] == 'Page':
if not item.get('published'): if not item.get('published'):
if debug: if debug:
print('No published attribute') print('No published attribute')
@ -476,6 +477,10 @@ def _isPublicFeedPost(item: {}, personPosts: {}, debug: bool) -> bool:
thisItem = item['object'] thisItem = item['object']
# check that this is a public post # check that this is a public post
# #Public should appear in the "to" list # #Public should appear in the "to" list
itemIsNote = False
if item['type'] == 'Note' or item['type'] == 'Page':
itemIsNote = True
if isinstance(thisItem, dict): if isinstance(thisItem, dict):
if thisItem.get('to'): if thisItem.get('to'):
isPublic = False isPublic = False
@ -485,7 +490,7 @@ def _isPublicFeedPost(item: {}, personPosts: {}, debug: bool) -> bool:
break break
if not isPublic: if not isPublic:
return False return False
elif isinstance(thisItem, str) or item['type'] == 'Note': elif isinstance(thisItem, str) or itemIsNote:
if item.get('to'): if item.get('to'):
isPublic = False isPublic = False
for recipient in item['to']: for recipient in item['to']:
@ -581,7 +586,7 @@ def _getPosts(session, outboxUrl: str, maxPosts: int,
continue continue
thisItem = item thisItem = item
if item['type'] != 'Note': if item['type'] != 'Note' and item['type'] != 'Page':
thisItem = item['object'] thisItem = item['object']
content = getBaseContentFromPost(item, systemLanguage) content = getBaseContentFromPost(item, systemLanguage)
@ -3409,6 +3414,7 @@ def isImageMedia(session, baseDir: str, httpPrefix: str,
if postJsonObject['object'].get('moderationStatus'): if postJsonObject['object'].get('moderationStatus'):
return False return False
if postJsonObject['object']['type'] != 'Note' and \ if postJsonObject['object']['type'] != 'Note' and \
postJsonObject['object']['type'] != 'Page' and \
postJsonObject['object']['type'] != 'Event' and \ postJsonObject['object']['type'] != 'Event' and \
postJsonObject['object']['type'] != 'Article': postJsonObject['object']['type'] != 'Article':
return False return False
@ -4555,6 +4561,7 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
recentPostsCache) recentPostsCache)
return None return None
if announcedJson['type'] != 'Note' and \ if announcedJson['type'] != 'Note' and \
announcedJson['type'] != 'Page' and \
announcedJson['type'] != 'Article': announcedJson['type'] != 'Article':
# You can only announce Note or Article types # You can only announce Note or Article types
_rejectAnnounce(announceFilename, _rejectAnnounce(announceFilename,

View File

@ -2246,8 +2246,8 @@ def testGroupFollow(baseDir: str) -> None:
testgroupDir + '/wfendpoints/testgroup@' + \ testgroupDir + '/wfendpoints/testgroup@' + \
testgroupDomain + ':' + str(testgroupPort) + '.json' testgroupDomain + ':' + str(testgroupPort) + '.json'
assert os.path.isfile(testgroupWebfingerFilename) assert os.path.isfile(testgroupWebfingerFilename)
assert 'group:testgroup@' in open(testgroupWebfingerFilename).read() assert 'acct:testgroup@' in open(testgroupWebfingerFilename).read()
print('group: exists within the webfinger endpoint for testgroup') print('acct: exists within the webfinger endpoint for testgroup')
testgroupHandle = 'testgroup@' + testgroupDomain testgroupHandle = 'testgroup@' + testgroupDomain
followingStr = '' followingStr = ''
@ -2321,8 +2321,8 @@ def testGroupFollow(baseDir: str) -> None:
testgroupDir + '/wfendpoints/testgroup@' + \ testgroupDir + '/wfendpoints/testgroup@' + \
testgroupDomain + ':' + str(testgroupPort) + '.json' testgroupDomain + ':' + str(testgroupPort) + '.json'
assert os.path.isfile(testgroupWebfingerFilename) assert os.path.isfile(testgroupWebfingerFilename)
assert 'group:testgroup@' in open(testgroupWebfingerFilename).read() assert 'acct:testgroup@' in open(testgroupWebfingerFilename).read()
print('group: exists within the webfinger endpoint for testgroup') print('acct: exists within the webfinger endpoint for testgroup')
testgroupHandle = 'testgroup@' + testgroupDomain testgroupHandle = 'testgroup@' + testgroupDomain
followingStr = '' followingStr = ''

View File

@ -2583,6 +2583,7 @@ def isDM(postJsonObject: {}) -> bool:
if not hasObjectDict(postJsonObject): if not hasObjectDict(postJsonObject):
return False return False
if postJsonObject['object']['type'] != 'Note' and \ if postJsonObject['object']['type'] != 'Note' and \
postJsonObject['object']['type'] != 'Page' and \
postJsonObject['object']['type'] != 'Patch' and \ postJsonObject['object']['type'] != 'Patch' and \
postJsonObject['object']['type'] != 'EncryptedMessage' and \ postJsonObject['object']['type'] != 'EncryptedMessage' and \
postJsonObject['object']['type'] != 'Article': postJsonObject['object']['type'] != 'Article':
@ -2611,6 +2612,7 @@ def isReply(postJsonObject: {}, actor: str) -> bool:
if postJsonObject['object'].get('moderationStatus'): if postJsonObject['object'].get('moderationStatus'):
return False return False
if postJsonObject['object']['type'] != 'Note' and \ if postJsonObject['object']['type'] != 'Note' and \
postJsonObject['object']['type'] != 'Page' and \
postJsonObject['object']['type'] != 'EncryptedMessage' and \ postJsonObject['object']['type'] != 'EncryptedMessage' and \
postJsonObject['object']['type'] != 'Article': postJsonObject['object']['type'] != 'Article':
return False return False

View File

@ -291,7 +291,7 @@ def htmlProfileAfterSearch(cssCache: {},
if not hasObjectDict(item): if not hasObjectDict(item):
continue continue
if item['type'] != 'Create' and item['type'] != 'Announce': if item['type'] != 'Create' and item['type'] != 'Announce':
if item['type'] != 'Note': if item['type'] != 'Note' and item['type'] != 'Page':
continue continue
if not item.get('to'): if not item.get('to'):
continue continue
@ -312,7 +312,8 @@ def htmlProfileAfterSearch(cssCache: {},
item = newItem item = newItem
if not item.get('actor'): if not item.get('actor'):
continue continue
if not isAnnouncedFeedItem and item['actor'] != personUrl: if not isAnnouncedFeedItem:
if item['actor'] != personUrl and item['type'] != 'Page':
continue continue
profileStr += \ profileStr += \

View File

@ -75,8 +75,6 @@ def webfingerHandle(session, handle: str, httpPrefix: str,
nickname, domain, grpAccount = _parseHandle(handle) nickname, domain, grpAccount = _parseHandle(handle)
if not nickname: if not nickname:
return None return None
if grpAccount:
groupAccount = True
wfDomain = removeDomainPort(domain) wfDomain = removeDomainPort(domain)
wfHandle = nickname + '@' + wfDomain wfHandle = nickname + '@' + wfDomain
@ -89,14 +87,9 @@ def webfingerHandle(session, handle: str, httpPrefix: str,
hdr = { hdr = {
'Accept': 'application/jrd+json' 'Accept': 'application/jrd+json'
} }
if not groupAccount:
par = { par = {
'resource': 'acct:{}'.format(wfHandle) 'resource': 'acct:{}'.format(wfHandle)
} }
else:
par = {
'resource': 'group:{}'.format(wfHandle)
}
try: try:
result = \ result = \
getJson(signingPrivateKeyPem, session, url, hdr, par, getJson(signingPrivateKeyPem, session, url, hdr, par,
@ -147,10 +140,7 @@ def createWebfingerEndpoint(nickname: str, domain: str, port: int,
personName = nickname personName = nickname
personId = localActorUrl(httpPrefix, personName, domain) personId = localActorUrl(httpPrefix, personName, domain)
if not groupAccount:
subjectStr = "acct:" + personName + "@" + originalDomain subjectStr = "acct:" + personName + "@" + originalDomain
else:
subjectStr = "group:" + personName + "@" + originalDomain
profilePageHref = httpPrefix + "://" + domain + "/@" + nickname profilePageHref = httpPrefix + "://" + domain + "/@" + nickname
if nickname == 'inbox' or nickname == originalDomain: if nickname == 'inbox' or nickname == originalDomain:
personName = 'actor' personName = 'actor'
@ -232,20 +222,17 @@ def webfingerLookup(path: str, baseDir: str,
if not path.startswith('/.well-known/webfinger?'): if not path.startswith('/.well-known/webfinger?'):
return None return None
handle = None handle = None
resourceTypes = ('acct', 'group') resType = 'acct'
for resType in resourceTypes:
if 'resource=' + resType + ':' in path: if 'resource=' + resType + ':' in path:
handle = path.split('resource=' + resType + ':')[1].strip() handle = path.split('resource=' + resType + ':')[1].strip()
handle = urllib.parse.unquote(handle) handle = urllib.parse.unquote(handle)
if debug: if debug:
print('DEBUG: WEBFINGER handle ' + handle) print('DEBUG: WEBFINGER handle ' + handle)
break
elif 'resource=' + resType + '%3A' in path: elif 'resource=' + resType + '%3A' in path:
handle = path.split('resource=' + resType + '%3A')[1] handle = path.split('resource=' + resType + '%3A')[1]
handle = urllib.parse.unquote(handle.strip()) handle = urllib.parse.unquote(handle.strip())
if debug: if debug:
print('DEBUG: WEBFINGER handle ' + handle) print('DEBUG: WEBFINGER handle ' + handle)
break
if not handle: if not handle:
if debug: if debug:
print('DEBUG: WEBFINGER handle missing') print('DEBUG: WEBFINGER handle missing')