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

merge-requests/30/head
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-color-header: #ccc;
--font-size-button-mobile: 34px;
--font-size-button-tiny: 17px;
--font-size-mobile: 50px;
--font-size-tiny: 25px;
--font-size: 30px;
--font-size2: 24px;
--font-size3: 38px;
@ -36,6 +38,7 @@
--button-deny: darkred;
--button-height: 10px;
--button-height-padding-mobile: 20px;
--button-height-padding-tiny: 10px;
--button-height-padding: 10px;
--image-corners: 10%,
--gallery-border: #ccc;
@ -43,6 +46,7 @@
--gallery-text-color: #ccc;
--gallery-font-size: 22px;
--gallery-font-size-mobile: 35px;
--gallery-font-size-tiny: 17px;
--button-corner-radius: 15px;
--timeline-border-radius: 30px;
--focus-color: white;
@ -1403,3 +1407,350 @@ div.gallery img {
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 {
--main-bg-color: #282c37;
--calendar-bg-color: #eee;
--lines-color: black;
--main-bg-color: #e6ebf0;
--calendar-bg-color: #e6ebf0;
--lines-color: darkblue;
--day-number: black;
--day-number2: #282c37;
--time-color: black;
@ -9,47 +9,50 @@
--event-color: #282c37;
--event-public-color: #282c37;
--today-foreground: white;
--today-circle: red;
--event-background: orange;
--event-background-private: #ddd;
--event-foreground:white;
--title-text: #282c37;
--title-background: #ccc;
--focus-color: white;
--today-circle: #03a494;
--event-background: lightgrey;
--event-background-private: grey;
--event-foreground: white;
--title-text: white;
--title-background: #2b5c6d;
--focus-color: grey;
--calendar-horizontal-padding: 0;
--calendar-cell-size: 1.5vw;
--calendar-cell-size-mobile: 1.5vw;
--calendar-cell-size-tiny: 1.5vw;
--font-size-calendar: 20px;
--font-size-calendar-mobile: 30px;
--font-size-calendar-tiny: 15px;
--font-size-calendar-header: 3rem;
--font-size-calendar-day: 1rem;
--font-size-calendar-cell: 2rem;
--font-size-calendar-cell-mobile: 4rem;
--font-size-calendar-cell-tiny: 2rem;
--calendar-header-font: 'Montserrat';
--calendar-header-font-style: italic;
--main-link-color-hover: #bbb;
--main-link-color-hover: blue;
--rendering: normal;
}
@font-face {
font-family: 'Bedstead';
font-family: 'NimbusSanL';
font-style: italic;
font-weight: normal;
font-display: block;
src: url('./fonts/bedstead.otf') format('opentype');
src: url('./fonts/NimbusSanL-italic.otf') format('opentype');
}
@font-face {
font-family: 'Bedstead';
font-family: 'NimbusSanL';
font-style: normal;
font-weight: normal;
font-display: block;
src: url('./fonts/bedstead.otf') format('opentype');
src: url('./fonts/NimbusSanL.otf') format('opentype');
}
body {
background-color: var(--main-bg-color);
color: var(--day-number2);
font-family: 'Montserrat';
font-family: 'NimbusSanL';
font-weight: 700;
image-rendering: var(--rendering);
}
@ -122,7 +125,7 @@ a:focus {
background-color: var(--title-background);
color: var(--title-text);
display: inline-block;
font-family: var(--calendar-header-font);
font-family: var(--calendar-header-font);
font-size: var(--font-size-calendar-header);
font-weight: 400;
letter-spacing: 0.1em;
@ -251,7 +254,7 @@ tr:nth-child(even) > .calendar__day__cell:nth-child(even) {
padding: var(--calendar-cell-size) 0 var(--calendar-cell-size);
}
body {
font-size: var(--font-size-calendar);
font-size: var(--font-size-calendar);
}
}
@ -271,6 +274,26 @@ tr:nth-child(even) > .calendar__day__cell:nth-child(even) {
padding: var(--calendar-cell-size-mobile) 0 var(--calendar-cell-size-mobile);
}
body {
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;
}
}
@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;
--font-size-header: 18px;
--font-size-header-mobile: 32px;
--font-size-header-tiny: 16px;
--font-color-header: #ccc;
--font-size-button-mobile: 34px;
--font-size-button-tiny: 17px;
--font-size: 30px;
--font-size2: 24px;
--font-size3: 38px;
@ -29,6 +31,7 @@
--font-size5: 20px;
--font-size-likes: 20px;
--font-size-likes-mobile: 32px;
--font-size-likes-tiny: 16px;
--font-size-pgp-key: 16px;
--font-size-pgp-key2: 8px;
--font-size-tox: 16px;
@ -46,6 +49,7 @@
--button-deny: darkred;
--button-height: 10px;
--button-height-padding-mobile: 20px;
--button-height-padding-tiny: 10px;
--button-height-padding: 10px;
--image-corners: 10%,
--gallery-border: #ccc;
@ -53,6 +57,7 @@
--gallery-text-color: #ccc;
--gallery-font-size: 22px;
--gallery-font-size-mobile: 35px;
--gallery-font-size-tiny: 17.5px;
--button-corner-radius: 15px;
--timeline-border-radius: 30px;
--icons-side: right;
@ -67,6 +72,7 @@
--column-right-width: 10vw;
--banner-height: 15vh;
--banner-height-mobile: 10vh;
--banner-height-tiny: 10vh;
--header-font: 'Arial, Helvetica, sans-serif';
--rendering: normal;
}
@ -250,7 +256,7 @@ h1 {
.containerSubmitNewPost {
margin: 20px;
}
.container img.timelineicon:hover {
filter: brightness(150%);
}
@ -1828,3 +1834,466 @@ aside .toggle-inside li {
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";
:root {
--login-bg-color: #282c37;
--link-bg-color: #282c37;
--login-fg-color: #dddddd;
--main-link-color: #999;
--main-visited-color: #888;
--border-color: #505050;
--border-width: 2px;
--login-bg-color: #010026;
--link-bg-color: #e6ebf0;
--login-fg-color: white;
--main-link-color: darkblue;
--main-visited-color: #232c37;
--border-color: #c0cdd9;
--border-width: 1px;
--font-size-header: 18px;
--font-color-header: #ccc;
--font-color-header: black;
--login-font-size: 22px;
--login-font-size-mobile: 40px;
--text-entry-foreground: #ccc;
--text-entry-background: #111;
--login-font-size-tiny: 20px;
--text-entry-foreground: #111;
--text-entry-background: white;
--time-color: #aaa;
--button-text: #FFFFFF;
--button-background: #999;
--button-selected: #666;
--form-border-radius: 30px;
--focus-color: white;
--focus-color: grey;
--line-spacing: 130%;
--login-logo-width: 20%;
--main-link-color-hover: #bbb;
--main-link-color-hover: blue;
--rendering: normal;
}
@font-face {
font-family: 'Bedstead';
font-family: 'NimbusSanL';
font-style: italic;
font-weight: normal;
font-display: block;
src: url('./fonts/bedstead.otf') format('opentype');
src: url('./fonts/NimbusSanL-italic.otf') format('opentype');
}
@font-face {
font-family: 'Bedstead';
font-family: 'NimbusSanL';
font-style: normal;
font-weight: normal;
font-display: block;
src: url('./fonts/bedstead.otf') format('opentype');
src: url('./fonts/NimbusSanL.otf') format('opentype');
}
body, html {
@ -52,7 +53,7 @@ body, html {
background-repeat: no-repeat;
background-position: center;
height: 100%;
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
max-width: 60%;
min-width: 600px;
margin: 0 auto;
@ -112,7 +113,7 @@ input[type=text], input[type=password] {
border: 1px solid #ccc;
box-sizing: border-box;
font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
}
button {
@ -124,12 +125,12 @@ button {
cursor: pointer;
width: 100%;
font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
}
.login-text {
font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
}
button:hover {
@ -170,17 +171,17 @@ span.psw {
background-color: var(--login-bg-color);
color: var(--login-fg-color);
height: 100%;
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
max-width: 60%;
min-width: 600px;
margin: 0 auto;
font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
position: relative;
}
.login-text {
font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
}
input[type=text], input[type=password] {
width: 100%;
@ -190,7 +191,7 @@ span.psw {
border: 1px solid #ccc;
box-sizing: border-box;
font-size: var(--login-font-size);
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
}
button {
background-color: var(--button-background);
@ -201,7 +202,7 @@ span.psw {
cursor: pointer;
width: 100%;
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);
color: var(--login-fg-color);
height: 100%;
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
max-width: 95%;
min-width: 600px;
margin: 0 auto;
font-size: var(--login-font-size-mobile);
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
position: relative;
}
.login-text {
font-size: var(--login-font-size-mobile);
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
}
input[type=text], input[type=password] {
width: 100%;
@ -230,7 +231,7 @@ span.psw {
border: 1px solid #ccc;
box-sizing: border-box;
font-size: var(--login-font-size-mobile);
font-family: Arial, Helvetica, sans-serif;
font-family: 'NimbusSanL';
}
button {
background-color: var(--button-background);
@ -241,6 +242,46 @@ span.psw {
cursor: pointer;
width: 100%;
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;
}
}
@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

@ -43,18 +43,18 @@
}
@font-face {
font-family: 'Bedstead';
font-style: italic;
font-weight: normal;
font-display: block;
src: url('./fonts/bedstead.otf') format('opentype');
font-family: 'Bedstead';
font-style: italic;
font-weight: normal;
font-display: block;
src: url('./fonts/bedstead.otf') format('opentype');
}
@font-face {
font-family: 'Bedstead';
font-style: normal;
font-weight: normal;
font-display: block;
src: url('./fonts/bedstead.otf') format('opentype');
font-family: 'Bedstead';
font-style: normal;
font-weight: normal;
font-display: block;
src: url('./fonts/bedstead.otf') format('opentype');
}
body, html {
@ -342,3 +342,80 @@ input[type=text] {
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;
--welcome-font-size: 22px;
--welcome-font-size-mobile: 40px;
--welcome-font-size-tiny: 20px;
--text-entry-foreground: #ccc;
--text-entry-background: #111;
--time-color: #aaa;
@ -241,3 +242,43 @@ span.psw {
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?
"""
if messageType != 'Note' and \
messageType != 'Page' and \
messageType != 'Patch':
return False
# must have a subject line

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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