diff --git a/css/mobile.css b/css/mobile.css
new file mode 100644
index 0000000..6d08ded
--- /dev/null
+++ b/css/mobile.css
@@ -0,0 +1,791 @@
+/* overall */
+
+* {
+ font-family: arial, helvetica, sans-serif;
+ font-size: 12pt;
+}
+
+a {
+ text-decoration:none;
+}
+
+h1 {
+ font-size:20px;
+}
+
+p {
+ margin: 0px !important;
+}
+
+body {
+ background: #203960;
+ margin: 0;
+}
+
+ul{
+ padding:0px;
+ margin:0px;
+}
+
+select{
+ padding:5px;
+ margin-top:5px;
+ border:0px;
+ color:darkgray;
+ font-weight:bold;
+ font-family:fontello, sans-serif;
+ background-color:white;
+ }
+
+option{
+ font-family:fontello, sans-serif;
+ }
+
+label {
+ color: gray;
+ margin-left: 5px;
+ margin-right: 5px;
+ cursor: pointer;
+}
+
+input[type="radio"]:checked+label {
+ color: black;
+}
+
+input[type="checkbox"]:checked+label {
+ color: red;
+}
+
+input[type="file"], .nloadmore {
+ cursor:pointer;
+}
+
+textarea {
+ resize: none;
+}
+
+/* omnipresent */
+
+.desktop{
+ display:none !important;
+}
+
+.link {
+ color: steelblue;
+ text-decoration: none;
+}
+
+.external:after{
+ font-family:fontello;
+ font-weight:normal;
+ content: ' ';
+ }
+
+/* basic structure */
+
+.topbar {
+ background-color: #14243D;
+ width: 100vw;
+ height: 45px;
+ margin: 0;
+ position: relative;
+}
+
+.wrapper {
+ width: 100vw;
+ clear: both;
+ display: inline-block;
+ text-align: center;
+}
+
+.container {
+ width: 100% !important;
+ display: inline-block;
+ text-align: center;
+}
+
+#posts {
+ width: 100% !important;
+}
+
+.content {
+ width: 100%;
+ display: inline-block;
+ margin:0px !important;
+ text-align: left;
+ word-break: break-all;
+}
+
+aside {
+ display:none !important;
+ margin-top: 5px;
+ width: 280px;
+ float: left;
+ background-color: rgba(255, 255, 255, 0.2);
+ display: inline-block;
+ border-radius: 3px;
+ box-shadow: 1px 1px 1px black;
+}
+
+.gotop {
+ background-color: rgba(32, 57, 96, 0.5);
+ width: 30px;
+ height: 30px;
+ padding: 5px;
+ position: fixed;
+ display: table;
+ text-align: center;
+ right: 20px;
+ bottom: 20px;
+ border-radius: 10px;
+ z-index:50;
+}
+
+.gotop a {
+ text-align: center;
+ display: table-cell;
+ vertical-align: middle;
+ color: white;
+ opacity: 0.7;
+ font-size: 20px;
+}
+
+#hiddenside {
+ background-color: rgba(255, 255, 255, 0);
+ position: fixed;
+ left: 0px;
+ bottom: 0px;
+ width: 100vw;
+ height: auto;
+ z-index: 99;
+}
+
+/* topbar elements */
+
+.mid {
+ display:none;
+}
+
+.topbutton {
+ vertical-align: middle;
+ display: table-cell;
+ line-height: 45px;
+ height: 100%;
+ width: 50px;
+ position: relative;
+}
+
+.topicon {
+ color: white;
+ text-decoration: none;
+ display: inline;
+ font-size: 20px;
+}
+
+.badge {
+ color: white;
+ text-decoration: none;
+}
+
+.alert {
+ border-radius: 90px;
+ width: 10px;
+ height: 10px;
+ background-color: red;
+ position: absolute;
+ right: 15px;
+ top: 15px;
+ display: none;
+}
+
+#notifications {
+ background-color:white;
+ position: fixed;
+ left: 0px;
+ top: 45px;
+ width: 100vw;
+ max-height: 400px;
+ display: none;
+ line-height:12px;
+ overflow-y:scroll;
+ border-radius:3px;
+ box-shadow: 1px 1px 1px black;
+}
+
+.notif{
+ width:100%;
+ height:80px;
+ display:inline-block;
+ border-bottom:1px solid lightgray;
+ text-align:left;
+ position:relative;
+ background-color:white;
+ color:black;
+ -webkit-box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);-moz-box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);
+}
+
+#quicksend {
+ background-color: #305792;
+ border-radius: 3px;
+ border: 1px solid darkgray;
+ color: white;
+ font-weight: bold;
+}
+
+.notifContents{
+ margin:10px;
+ display:flex;
+ height:60px;
+ max-width:325px;
+}
+
+.new {
+ background-color:white;
+}
+
+/* sidebar */
+
+.side_element {
+ display:none;
+ width: 92%;
+ margin: 10px;
+ display: inline-block;
+ text-align: center;
+ color: lightgray;
+}
+
+.side_element a {
+ color: lightgray;
+}
+
+/* posts area elements */
+
+.uploadedImage {
+ width: 60px;
+ margin: 10px 0px 10px 10px;
+ height: 60px;
+ border: 1px solid #ccc;
+ display: inline-block;
+ box-shadow: 3px 3px 3px grey;
+ float: left;
+ background-size: cover;
+}
+
+.uploadBox {
+ width: 100%;
+ display: inline-block;
+ border-bottom: 1px solid #ddd;
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
+}
+
+.delpic {
+ border-radius:90px;
+ color:red;
+ background-color:white;
+ display:inline-block;
+ cursor:pointer;
+}
+
+.toolbar {
+ width:100%;
+ height:30px;
+ display:block;
+ border-bottom: 1px solid #ddd;
+ background-color:#eee;
+ box-shadow: -1px -1px 1px gray inset;
+}
+
+.toolbarButton{
+ width:30px;
+ height:100%;
+ border-right: 1px solid #ccc;
+ display:inline-block;
+ overflow:hidden;
+ line-height:30px;
+ text-align:center;
+ position:relative;
+}
+
+#send {
+ padding:5px;
+ background-color:#305792;
+ border-radius:3px;
+ border: 1px solid darkgray;
+ color:white;
+ font-weight:bold;
+ margin-top:5px;
+ }
+
+.formbtn {
+ background-color:transparent;
+ border: 0px;
+ color:#305792;
+ margin-top:11px;
+ margin-left:15px;
+ float:left;
+ width:20px;
+ height:20px;
+ line-height:20px;
+ text-align:center;
+ overflow:hidden;
+ font-size:20px;
+}
+
+.formbtn label{
+ margin:-5px;
+ color:#305792;
+ font-size:20px;
+}
+
+.element {
+ width: 90% !important;
+ clear: both;
+ display: inline-block;
+ margin-top: 3px;
+}
+
+.profile {
+ float:left;
+ background-color:white;
+ border-radius:5px;
+ //width:650px;
+ width:100%;
+}
+
+.profileButton{
+ padding: 5px;
+ border-radius: 5px;
+ font-family: fontello, sans-serif;
+}
+
+#usermenu .menu {
+ display: none;
+ width: 150px;
+ height: 100px;
+ background-color: #6B91B6;
+ position: absolute;
+ top: 45px;
+ left: -80px;
+ transition: 0.4s;
+}
+
+#usermenu:hover>.menu,
+#usermenu:active>.menu {
+ display: block;
+ transition: 0.4s;
+}
+
+.postMenu,.listmenu {
+ cursor: pointer;
+ position:relative;
+}
+
+.postMenu div{
+ border-radius: 3px;
+ box-shadow: 1px 1px 2px black;
+}
+
+.postMenu li {
+ margin:0px;
+ width:100%;
+ height:35px;
+ display:block;
+ text-align:center;
+ line-height:35px;
+}
+
+.postMenu:hover > div{
+ display:block !important;
+}
+
+.postMenu li:hover {
+ background-color:#203960 !important;
+}
+
+.postMenu li a{
+ color:#203960;
+}
+
+.postMenu li:hover a{
+ color:white;
+}
+
+.postMenu ul {
+ margin:0px;
+ width:100%;
+ padding:0px;
+}
+
+.profileMenu:hover > div, .listmenu:hover > div{
+ display:block !important;
+}
+
+.listmenu li {
+ font-family: fontello, sans-serif;
+ height:30px;
+ line-height:30px;
+ text-align:left;
+ padding-left:12px;
+ list-style-type: none;
+ background-color:black;
+ color:white;
+}
+
+.listmenu li:hover {
+ background-color:white;
+ color:black;
+}
+
+.unblock,.unmute,.block,.mute,.follow,
+.unfollow,
+.nsfw,
+.unnsfw,
+.profileMenu,
+.listmenu {
+ background-color: black;
+ color: white;
+ cursor: pointer;
+}
+
+.mute:hover,.block:hover,.follow:hover,
+.nsfw:hover {
+ background-color: lime;
+}
+
+.unmute:hover,.unblock:hover,.unfollow:hover,
+.unnsfw:hover{
+ background-color: crimson !important;
+}
+
+.unbookmark{
+ color: crimson !important;
+}
+
+.felem {
+ margin-left: 10px;
+ float: left;
+}
+
+.unfav {
+ color: red !important;
+}
+
+.unreblog {
+ color: red !important;
+}
+
+.avatar {
+ display:none;
+ width: 50px;
+ background-size: cover;
+ height: 50px;
+ float: left;
+ margin: 15px;
+ border-radius: 10px;
+}
+
+.post,
+.loader,
+.loadmore,
+.rb,
+.textonly,
+.profile {
+ width: 100% !important;
+ background-color: white;
+ float: left;
+ text-align: center;
+ position: relative;
+ border-radius: 3px;
+ box-shadow: 1px 1px 2px black;
+}
+
+.postform {
+ display:none;
+ position:fixed;
+ width: 100vw !important;
+ left:0px;
+ top:45px;
+ background-color: white;
+ text-align: center;
+ border-radius: 3px;
+ box-shadow: 1px 1px 2px black;
+ z-index: 99;
+}
+
+#postform {
+ display:none;
+}
+
+.postHeader {
+ width: 100%;
+ display: inline-block;
+ height: 40px;
+ text-align: left;
+}
+
+.postHeader *,.post_footer *{
+ font-size:small;
+}
+
+.previewpost {
+ display: none;
+ position: absolute;
+ margin-top: -100px;
+ width: 400px;
+ background-color: white;
+ border: 1px solid darkgray;
+ box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
+ border-radius:3px;
+}
+
+.user {
+ position:relative;
+}
+
+.userinfo {
+ display: none;
+ position: absolute;
+ left:0px;
+ top:-198px;
+ width: 300px;
+ height: 200px;
+ background-color: white;
+ border: 1px solid darkgray;
+ box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
+ border-radius:3px;
+}
+
+
+
+.userinfo_co {
+ width: 280px;
+ margin: 10px;
+}
+
+.userinfo_he {
+ width: 300px;
+ height: 100px;
+}
+
+.media {
+ width: 100%;
+ display: inline-block;
+}
+
+.img {
+ width: 600px;
+ text-align: center;
+}
+
+.blur {
+ -webkit-filter: blur(25px) brightness(70%) grayscale(100%);
+ /* Safari 6.0 - 9.0 */
+ filter: blur(25px) brightness(70%) grayscale(100%);
+ opacity: 0.5;
+ transition: 0.4s;
+}
+
+.small {
+ width: 48% !important;
+ height: 321px;
+ line-height: 321px;
+ background-color: black;
+ float:left;
+ margin:2px !important;
+}
+
+.smaller {
+ width: 31% !important;
+ height: 212px;
+ line-height: 212px;
+ background-color: black;
+ float:left;
+ margin:2px !important;
+}
+
+.icon {
+ width: 80px !important;
+ height: 80px !important;
+ line-height: 80px;
+ background-color: black;
+ float:left;
+ text-align:center;
+ margin:2px !important;
+}
+
+.postbody {
+ margin: 15px;
+}
+
+.post_footer {
+ width: 630px;
+ display: table-cell;
+ clear: both;
+ padding: 10px;
+ height: 20px;
+ text-align: left;
+ background-color: #eee;
+ border-radius: 3px;
+}
+
+.post_buttons {
+ font-family: fontello;
+ float: right;
+ display: inline-block;
+ text-align: right;
+ font-size: 15pt;
+ color: #404040;
+}
+
+.post_buttons a,
+.post_buttons span {
+ font-family: inherit;
+ text-decoration: none;
+ color: inherit;
+ font-size: inherit;
+}
+
+.reply {
+ width: 100%;
+ background-color: #ddd;
+ clear: both;
+ text-align: left;
+ border-bottom: 1px solid #666;
+ display: block;
+}
+
+.note {
+ width: 640px;
+ background-color: #ccc;
+ float: left;
+ text-align: left;
+ border-radius: 5px;
+ padding: 5px;
+}
+
+.button {
+ padding: 15px;
+ background-color: white;
+ float: left;
+ text-align: center;
+ border-radius: 5px;
+ font-size: 20pt;
+}
+
+/* pages */
+
+.setting label {
+ display: block;
+ width: 40px;
+ height: 20px;
+ padding: 5px;
+ background-color: lightgray;
+ float: left;
+ margin: 0px;
+ text-align: center;
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
+ transition: all 0.3s ease-in-out;
+}
+
+.setting input[type="radio"]:checked+label {
+ color: black;
+ background-color: #305792;
+ box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
+ font-weight: bold;
+ color: white;
+}
+
+
+/* other stuff */
+
+/* */
+.lightbox-opened {
+ /* background-color: #333; */
+ background-color: rgba(50, 50, 50, 0.85);
+ cursor: pointer;
+ height: 100%;
+ /* left: 0; */
+ overflow-y: scroll;
+ position: fixed;
+ text-align: center;
+ top: 0;
+ width: 100%;
+ z-index:105;
+ &:before {
+ background-color: #333;
+ background-color: rgba(#333, 0.9);
+ color: #eee;
+ content: "x";
+ font-family: sans-serif;
+ padding: 6px 12px;
+ position: fixed;
+ text-transform: uppercase;
+ }
+ img {
+ box-shadow: 0 0 6px 3px #333;
+ }
+}
+/*
+.lightbox-opened {
+ //background-color: #333;
+ background-color: rgba(50, 50, 50, 0.85);
+ cursor: pointer;
+ height: 100%;
+ left: 0;
+ overflow-y: scroll;
+ padding: 24px;
+ position: fixed;
+ text-align: center;
+ top: 0;
+ width: 100%;
+ &:before {
+ background-color: #333;
+ background-color: rgba(#333, 0.9);
+ color: #eee;
+ content: "x";
+ font-family: sans-serif;
+ padding: 6px 12px;
+ position: fixed;
+ text-transform: uppercase;
+ }
+ img {
+ box-shadow: 0 0 6px 3px #333;
+ }
+}
+*/
+.no-scroll {
+ overflow: hidden;
+}
+
+/* */
+
+.fontello {
+ font-family: fontello, sans-serif;
+}
+
+.loading {
+ font-family: fontello;
+ color: black;
+ content: "\E822";
+ animation-name: spin;
+ animation-duration: 5000ms;
+ animation-iteration-count: infinite;
+ animation-timing-function: linear;
+ /* transform: rotate(3deg); */
+ /* transform: rotate(0.3rad);/ */
+ /* transform: rotate(3grad); */
+ /* transform: rotate(.03turn); */
+}
+
+@keyframes spin {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+.disabled {
+ background-color: black;
+}
diff --git a/css/style.css b/css/style.css
new file mode 100644
index 0000000..66a5ce7
--- /dev/null
+++ b/css/style.css
@@ -0,0 +1,797 @@
+/* overall */
+html {
+ scroll-behavior: smooth;
+}
+
+* {
+ font-family: arial, helvetica, sans-serif;
+ font-size: 11pt;
+}
+
+a {
+ color: steelblue;
+ text-decoration: none;
+}
+
+h1 {
+ font-size:30px;
+}
+
+p {
+ margin: 0px !important;
+}
+
+body {
+ background: #2b475d;
+ margin: 0;
+}
+
+ul{
+ padding:0px;
+ margin:0px;
+}
+
+select{
+ padding:5px;
+ margin-top:5px;
+ border:0px;
+ color:darkgray;
+ font-weight:bold;
+ font-family:fontello, sans-serif;
+ background-color:white;
+ }
+
+option{
+ font-family:fontello, sans-serif;
+ }
+
+label {
+ color: gray;
+ margin-left: 5px;
+ margin-right: 5px;
+ cursor: pointer;
+}
+
+input[type="radio"]:checked+label {
+ color: black;
+}
+
+input[type="checkbox"]:checked+label {
+ color: red;
+}
+
+input[type="file"], .nloadmore {
+ cursor:pointer;
+}
+
+textarea {
+ resize: none;
+}
+
+/* omnipresent */
+
+.mobile {
+ display:none !important;
+}
+
+.link {
+ color: steelblue;
+ text-decoration: none;
+}
+
+.external:after{
+ font-family:fontello;
+ font-weight:normal;
+ content: ' ';
+ }
+
+/* basic structure */
+
+.topbar {
+ background-color: #14243D;
+ width: 100%;
+ height: 45px;
+ margin: 0;
+ position: relative;
+}
+
+.wrapper {
+ width: 100%;
+ clear: both;
+ display: inline-block;
+ text-align: center;
+}
+
+.container {
+ display: inline-block;
+ text-align: center;
+}
+
+#posts {
+ width: 800px;
+ float: left;
+}
+
+aside {
+ margin-top: 5px;
+ width: 280px;
+ float: left;
+ display: inline-block;
+}
+
+.gotop {
+ background-color: rgba(255, 255, 255, 0.5);
+ width: 30px;
+ height: 30px;
+ padding: 5px;
+ position: fixed;
+ display: table;
+ text-align: center;
+ right: 20px;
+ bottom: 20px;
+ border-radius: 10px;
+}
+
+.gotop a {
+ text-align: center;
+ display: table-cell;
+ vertical-align: middle;
+ color: black;
+ opacity: 0.7;
+ font-size: 20px;
+}
+
+#hiddenside {
+ background-color: rgba(255, 255, 255, 0);
+ position: fixed;
+ right: 10px;
+ bottom: 115px;
+ width: 350px;
+ height: auto;
+}
+
+/* topbar elements */
+
+.topbutton {
+ vertical-align: middle;
+ display: table-cell;
+ line-height: 45px;
+ height: 100%;
+ width: 50px;
+ position: relative;
+}
+
+.topicon {
+ color: white;
+ text-decoration: none;
+ display: inline;
+ font-size: 20px;
+}
+
+.tiselected {
+ border-bottom: 2px solid white;
+}
+
+.ntbutton {
+ position:relative;
+}
+.badge {
+ color: white;
+ text-decoration: none;
+}
+
+.alert {
+ border-radius: 90px;
+ width: 10px;
+ height: 10px;
+ background-color: red;
+ position: absolute;
+ right: 15px;
+ top: 15px;
+ display: none;
+}
+
+#notifications {
+ background-color:white;
+ position: absolute;
+ right: -20px;
+ top: 45px;
+ width: 350px;
+ max-height: 500px;
+ display: none;
+ line-height:12px;
+ overflow-y:scroll;
+ border-radius:3px;
+ box-shadow: 1px 1px 1px black;
+}
+
+.notif{
+ width:330px;
+ height:80px;
+ display:inline-block;
+ border-bottom:1px solid lightgray;
+ text-align:left;
+ position:relative;
+ background-color:white;
+ color:black;
+ -webkit-box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);-moz-box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);
+}
+
+#quicksend {
+ background-color: #305792;
+ border-radius: 3px;
+ border: 1px solid darkgray;
+ color: white;
+ font-weight: bold;
+}
+
+.notifContents{
+ margin:10px;
+ display:flex;
+ height:60px;
+ max-width:325px;
+}
+
+.nloadmore {
+ display:inline-block;
+ height:20px;
+ padding-top:10px;
+ color:black
+}
+
+.new {
+ background-color:white;
+}
+
+/* sidebar */
+
+.side_element {
+ background-color: #455f78;
+ border-radius: 3px;
+ box-shadow: 1px 1px 1px black;
+ width: 92%;
+ margin: 10px;
+ display: inline-block;
+ text-align: center;
+ color: lightgray;
+}
+
+.side_element li {
+ font-family: fontello, sans-serif;
+ height:30px;
+ line-height:30px;
+ text-align:left;
+ padding-left:12px;
+ list-style-type: none;
+}
+
+.side_element li:hover {
+ background-color: rgba(255, 255, 255, 0.25);
+}
+
+.side_element li:active {
+ background-color: rgba(255, 255, 255, 0.25);
+}
+
+.side_element a {
+ color: lightgray;
+}
+
+/* posts area elements */
+
+.uploadedImage {
+ width: 60px;
+ margin: 10px 0px 10px 10px;
+ height: 60px;
+ border: 1px solid #ccc;
+ display: inline-block;
+ box-shadow: 3px 3px 3px grey;
+ float: left;
+ background-size: cover;
+}
+
+.uploadBox {
+ width: 100%;
+ display: inline-block;
+ border-bottom: 1px solid #ddd;
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
+}
+
+.delpic {
+ border-radius:90px;
+ color:red;
+ background-color:white;
+ display:inline-block;
+ cursor:pointer;
+}
+
+.toolbar {
+ width:100%;
+ height:30px;
+ display:block;
+ border-bottom: 1px solid #ddd;
+ background-color:#eee;
+ box-shadow: -1px -1px 1px gray inset;
+}
+
+.toolbarButton{
+ width:30px;
+ height:100%;
+ border-right: 1px solid #ccc;
+ display:inline-block;
+
+ line-height:30px;
+ text-align:center;
+ position:relative;
+}
+
+#send {
+ padding:5px;
+ background-color:#305792;
+ border-radius:3px;
+ border: 1px solid #305792;
+ color:white;
+ font-weight:bold;
+ margin-top:5px;
+ float:left;
+ }
+
+.formbtn {
+ background-color:transparent;
+ border: 0px;
+ color:#305792;
+ margin-top:11px;
+ margin-left:15px;
+ float:left;
+ width:20px;
+ height:20px;
+ line-height:20px;
+ text-align:center;
+ overflow:hidden;
+ font-size:20px;
+}
+
+.formbtn label{
+ margin:-5px;
+ color:#305792;
+ font-size:20px;
+}
+
+.element {
+ width: 800px;
+ clear: both;
+ display: inline-block;
+ margin-top: 5px;
+}
+
+.profile,.loader {
+ float:left;
+ background-color:white;
+ border-radius:5px;
+ width:650px;
+}
+
+.profileButton{
+ padding: 5px;
+ border-radius: 5px;
+ font-family: fontello, sans-serif;
+}
+
+#usermenu .menu {
+ display: none;
+ width: 150px;
+ height: 100px;
+ background-color: #6B91B6;
+ position: absolute;
+ top: 45px;
+ left: -80px;
+ transition: 0.4s;
+}
+
+#usermenu:hover>.menu,
+#usermenu:active>.menu {
+ display: block;
+ transition: 0.4s;
+}
+
+.postMenu {
+ cursor: pointer;
+ position:relative;
+}
+
+.postMenu div{
+ border-radius: 3px;
+ box-shadow: 1px 1px 2px black;
+}
+
+.postMenu li {
+ margin:0px;
+ width:100%;
+ height:35px;
+ display:block;
+ text-align:center;
+ line-height:35px;
+}
+
+.postMenu:hover > div{
+ display:block !important;
+}
+
+.postMenu li:hover {
+ background-color:#203960 !important;
+}
+
+.postMenu li a{
+ color:#203960;
+}
+
+.postMenu li:hover a{
+ color:white;
+}
+
+.postMenu ul {
+ margin:0px;
+ width:100%;
+ padding:0px;
+}
+
+.profileMenu:hover > div, .listmenu:hover > div{
+ display:block !important;
+}
+
+.listmenu li {
+ font-family: fontello, sans-serif;
+ height:30px;
+ line-height:30px;
+ text-align:left;
+ padding-left:12px;
+ list-style-type: none;
+ background-color:black;
+ color:white;
+}
+
+.listmenu li:hover {
+ background-color:white;
+ color:black;
+}
+
+.autl:hover li{
+ background-color:lightgreen !important;
+}
+
+.rutl:hover li{
+ background-color:crimson !important;
+}
+
+.unblock,.unmute,.block,.mute,.follow,
+.unfollow,
+.nsfw,
+.unnsfw,
+.profileMenu,
+.listmenu {
+ background-color: black;
+ color: white;
+ cursor: pointer;
+}
+
+.mute:hover,.block:hover,.follow:hover,
+.nsfw:hover {
+ background-color: lime;
+}
+
+.unmute:hover,.unblock:hover,.unfollow:hover,
+.unnsfw:hover{
+ background-color: crimson !important;
+}
+
+.unbookmark{
+ color: crimson !important;
+}
+
+.felem {
+ margin-left: 10px;
+ float: left;
+}
+
+.unfav {
+ color: red !important;
+}
+
+.unreblog {
+ color: red !important;
+}
+
+.avatar {
+ width: 80px;
+ background-size: 80px;
+ height: 80px;
+ float: left;
+ margin: 15px;
+ border-radius: 10px;
+}
+
+.post,
+.rb,
+.textonly,
+.loadmore {
+ width: 650px;
+ background-color: white;
+ float: left;
+ text-align: center;
+ position: relative;
+ border-radius: 3px;
+ box-shadow: 1px 1px 2px black;
+}
+
+.postform {
+ width:650px;
+ background-color: white;
+ float: left;
+ text-align: center;
+ position: relative;
+ border-radius: 3px;
+ box-shadow: 1px 1px 2px black;
+ display:block !important;
+}
+
+.postHeader {
+ width: 100%;
+ display: inline-block;
+ height: 40px;
+ text-align: left;
+}
+
+.previewpost {
+ display: none;
+ position: absolute;
+ margin-top: -100px;
+ width: 400px;
+ background-color: white;
+ border: 1px solid darkgray;
+ box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
+ border-radius:3px;
+}
+
+.user {
+ position:relative;
+}
+
+.userinfo {
+ display: none;
+ position: absolute;
+ left:0px;
+ top:15px;
+ width: 300px;
+ height: auto;
+ background-color: white;
+ border: 1px solid darkgray;
+ box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
+ border-radius:3px;
+ line-height:initial;
+ z-index:99;
+}
+
+.userinfo_upper{
+ top:-100px;
+}
+
+.userinfo_co {
+ width: 280px;
+ margin: 10px;
+ text-align: center;
+ position:relative;
+}
+
+.userinfo_he {
+ width: 300px;
+ height: 150px;
+}
+
+.media {
+ width: 100%;
+ display: inline-block;
+}
+
+.img {
+ width: 600px;
+ text-align: center;
+}
+
+.blur {
+ -webkit-filter: blur(25px) brightness(70%) grayscale(100%);
+ /* Safari 6.0 - 9.0 */
+ filter: blur(25px) brightness(70%) grayscale(100%);
+ opacity: 0.5;
+ transition: 0.4s;
+}
+
+.toggleblur {
+ display:none;
+ cursor: pointer;
+ font-family: sans, fontello;
+}
+
+.small {
+ width: 321px !important;
+ height: 321px;
+ line-height: 321px;
+ /* background-color: black; */
+ float:left;
+ margin:2px !important;
+}
+
+.smaller {
+ width: 212px !important;
+ height: 212px;
+ line-height: 212px;
+ /* background-color: black; */
+ float:left;
+ margin:2px !important;
+}
+
+.icon {
+ width: 80px !important;
+ height: 80px !important;
+ line-height: 80px;
+ background-color: black;
+ float:left;
+ text-align:center;
+ margin:2px !important;
+}
+
+.postbody {
+ margin: 15px;
+}
+
+.content {
+ width: 600px;
+ display: inline-block;
+ margin:0px !important;
+ text-align: left;
+}
+
+.post_footer {
+ width: 630px;
+ display: table-cell;
+ clear: both;
+ padding: 10px;
+ height: 20px;
+ text-align: left;
+ background-color: #eee;
+ border-radius: 3px;
+}
+
+.post_buttons {
+ font-family: fontello;
+ float: right;
+ display: inline-block;
+ text-align: right;
+ font-size: 15pt;
+ color: #404040;
+}
+
+.post_buttons a,
+.post_buttons span {
+ font-family: inherit;
+ text-decoration: none;
+ color: inherit;
+ font-size: inherit;
+}
+
+.reply {
+ width: 100%;
+ background-color: #ddd;
+ clear: both;
+ text-align: left;
+ border-bottom: 1px solid #666;
+ display: block;
+}
+
+.note {
+ width: 640px;
+ background-color: #ccc;
+ float: left;
+ text-align: left;
+ border-radius: 5px;
+ padding: 5px;
+}
+
+.button {
+ padding: 15px;
+ background-color: white;
+ float: left;
+ text-align: center;
+ border-radius: 5px;
+ font-size: 20pt;
+}
+
+/* pages */
+
+.setting label {
+ display: block;
+ width: 40px;
+ height: 20px;
+ padding: 5px;
+ background-color: lightgray;
+ float: left;
+ margin: 0px;
+ text-align: center;
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
+ transition: all 0.3s ease-in-out;
+}
+
+.setting input[type="radio"]:checked+label {
+ color: black;
+ background-color: #305792;
+ box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
+ font-weight: bold;
+ color: white;
+}
+
+
+/* other stuff */
+
+/* */
+.lightbox-opened {
+ /* background-color: #333; */
+ background-color: rgba(50, 50, 50, 0.85);
+ cursor: pointer;
+ height: 100%;
+ /* left: 0; */
+ overflow-y: scroll;
+ position: fixed;
+ text-align: center;
+ top: 0;
+ width: 100%;
+ z-index:105;
+ &:before {
+ background-color: #333;
+ background-color: rgba(#333, 0.9);
+ color: #eee;
+ content: "x";
+ font-family: sans-serif;
+ padding: 6px 12px;
+ position: fixed;
+ text-transform: uppercase;
+ }
+ img {
+ box-shadow: 0 0 6px 3px #333;
+ }
+}
+
+.no-scroll {
+ overflow: hidden;
+}
+
+/* */
+
+.fontello {
+ font-family: fontello;
+}
+
+.loading {
+ font-family: fontello;
+ color: black;
+ content: "\E822";
+ animation-name: spin;
+ animation-duration: 5000ms;
+ animation-iteration-count: infinite;
+ animation-timing-function: linear;
+ /* transform: rotate(3deg); */
+ /* transform: rotate(0.3rad);/ */
+ /* transform: rotate(3grad); */
+ /* transform: rotate(.03turn); */
+}
+
+@keyframes spin {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+.disabled {
+ background-color: black;
+}
diff --git a/data/Stereophonic.space.php b/data/Stereophonic.space.php
new file mode 100644
index 0000000..52cf020
--- /dev/null
+++ b/data/Stereophonic.space.php
@@ -0,0 +1,9 @@
+ 'alLxkB-yfSGvEjpaw65CwiJEkL2uYE3QFFKWdB43PFE',
+ 'client_secret' => 'RUxLBgsZnwAiyxCad3s88mFBKCTLlHDUCc4Gq56I1xs',
+ 'id' => '8895',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BHn7t5zdmM7QSJ7ubdeT_c5vchSkpEY1i9gbs5l8d5yJ8oW5XuFugA21IbNmjkOVi2aZkNte0nw0M7XFy7lvwXg',
+);
\ No newline at end of file
diff --git a/data/anime.website.php b/data/anime.website.php
new file mode 100644
index 0000000..bc713ae
--- /dev/null
+++ b/data/anime.website.php
@@ -0,0 +1,8 @@
+ '5lmktGU9RBwrdC7xMt-s7DCeH6uqEb7FWiLRBPGSuzE',
+ 'client_secret' => 'kTw3pkEc_IuKhJ_mJyHsdwBR1G9f6OsscLnuPY60sWY',
+ 'id' => '23763',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+);
\ No newline at end of file
diff --git a/data/baraag.net.php b/data/baraag.net.php
new file mode 100644
index 0000000..cf997a6
--- /dev/null
+++ b/data/baraag.net.php
@@ -0,0 +1,9 @@
+ '5643',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'nuTQpd9TBYtAX9wsn7xlxeOrBzdVQRuO_I7JNC2ceRM',
+ 'client_secret' => 'ncdk0yNzQkxfrXX7RjVd43uotYmsPaIUDvhOCdHVw_0',
+ 'vapid_key' => 'BDMJT7WA_cBFQJ6mYbJkU6KBdayb6K5kGdYXBACXCgXsi_Zxw4JrrTAna54bVe6IoVXDoXGFQQczex-Usc4bFTc=',
+);
\ No newline at end of file
diff --git a/data/be.cutewith.me.php b/data/be.cutewith.me.php
new file mode 100644
index 0000000..27e16a2
--- /dev/null
+++ b/data/be.cutewith.me.php
@@ -0,0 +1,9 @@
+ '_U1N7ykVu4q4eJLoUuPclafo98LMnT2c4n1XHX30m68',
+ 'client_secret' => 'n_WRdVblGlHYNCkkIqlC7C14zyVhaoOD_ecSqEZ1s38',
+ 'id' => '38988',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BOS2RHcHGP5doQK0vUzkxXAymWQ-hFf1y86CdLFoau0eH4nZZpLkFW9hd9FwpocI1_Mx3cKhAzVyE8TwwyssH-w',
+);
\ No newline at end of file
diff --git a/data/blob.cat.php b/data/blob.cat.php
new file mode 100644
index 0000000..280847e
--- /dev/null
+++ b/data/blob.cat.php
@@ -0,0 +1,9 @@
+ 'HRDzuNlKoEwdv1SKvxZMrHC2fb4LWY9evvC11z0n6Aw',
+ 'client_secret' => 'Aze2QLFmrVN0CIFM5xt_IIY26UpbquJgMa8weqLF3nM',
+ 'id' => '62243',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BEpg2Jgt4-zefwEPcisVDo-yAtp0iLWZ5RLr4wDon2WbS50fhz8unj2xcCHQX2YmmoC8mfBUK-1cMXJd11byyDs',
+);
\ No newline at end of file
diff --git a/data/blobturtle.club.php b/data/blobturtle.club.php
new file mode 100644
index 0000000..b2add8b
--- /dev/null
+++ b/data/blobturtle.club.php
@@ -0,0 +1,9 @@
+ '41',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'rMOHNyCOCx9FBgTj8bjWf4-vAlPQX4oS6uyEv2FtWJ0',
+ 'client_secret' => 'SSiP-44NCg8w60m8qfq7bnW0V8Cf88nZ194RV-2SB6U',
+ 'vapid_key' => 'BA7kY_9cs2gX_5qvyMYT9zP0II2AAQgWma1c5oupjXCFuA4akJhtgkwIeAZCs76KgFvazAZHzKX05KEN504Exjw=',
+);
\ No newline at end of file
diff --git a/data/cybre.club.php b/data/cybre.club.php
new file mode 100644
index 0000000..1350077
--- /dev/null
+++ b/data/cybre.club.php
@@ -0,0 +1,9 @@
+ 'KAVUfjoeQ-o_3B7xcONGBz6JocBodEKw-MvSGVgpMTw',
+ 'client_secret' => 'lZJsaTglcyk5Uu12hDo1E2-iGQgvgyzHn41MZwSRfvo',
+ 'id' => '1067',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BGmK-8r5cNH5P6EbacJy-ZfjVrxEJ9hgexHmfTmumOtxKNm4WEWIn6bxKTEvZjQlWZscha5ubwrhzFDnb3sokro',
+);
\ No newline at end of file
diff --git a/data/donotban.com.php b/data/donotban.com.php
new file mode 100644
index 0000000..389e0d4
--- /dev/null
+++ b/data/donotban.com.php
@@ -0,0 +1,9 @@
+ '1266',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => '2LL5vGcg5FZOoPcDm4lswNN9ENFY8eQzuxOWinmf-EU',
+ 'client_secret' => 'ksnjmYvDyw-FETRIwu4xY-43BtBCS1dk0FMF_kR2ZuQ',
+ 'vapid_key' => 'BNGdnDTY9yPqYrgSz8udvBrwkcFCzed6LVybZ-RboItnW4RUPUOz66Mfu-OxXvO6i7-TtlB7Xz4sxnEAZldLfVA=',
+);
\ No newline at end of file
diff --git a/data/dragon.style.php b/data/dragon.style.php
new file mode 100644
index 0000000..50070bb
--- /dev/null
+++ b/data/dragon.style.php
@@ -0,0 +1,8 @@
+ '472',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => '0686b19db624ff6c93a1629e4ca7cbe9bc32bff15986049b1ac2d0e612ae1dd9',
+ 'client_secret' => '56e631b1bafb2390fd854fca52dd883cc147b92afb6412fcb3c32e1fc5af1e24',
+);
\ No newline at end of file
diff --git a/data/fedi.absturztau.be.php b/data/fedi.absturztau.be.php
new file mode 100644
index 0000000..be7454d
--- /dev/null
+++ b/data/fedi.absturztau.be.php
@@ -0,0 +1,9 @@
+ 'JkSmdaIEfHfO-vpOz-ZeF4eqlK5zBlcaByMhh-EVmcU',
+ 'client_secret' => 'L5YM6GBWgeo46jKlhK3upsEyiM2L2E_vlWgjPUElTIE',
+ 'id' => '269897',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BKVMhK46FlOvwk8b2jTJKhUXjIcumAEBReINMZ48n4hhmKeAmOUPBn1g9ubWJ-WxmS2cNNZOcsFtzbnrA4O6D7M',
+);
\ No newline at end of file
diff --git a/data/framapiaf.org.php b/data/framapiaf.org.php
new file mode 100644
index 0000000..6265b11
--- /dev/null
+++ b/data/framapiaf.org.php
@@ -0,0 +1,9 @@
+ '24398',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'teKWp3CYBuLW5fpgER4SHBOw06LGEYJkDalulprBg7U',
+ 'client_secret' => 'cW6Nd1N0xEqGKb9NDb-0xyRreJO9yYAXkRhcpx8NtLc',
+ 'vapid_key' => 'BC27PlV5okiLY2t8GQ5i1f-P9dru1LuLAckRalgkgFNN87MMvz7G9Pe-40CsJl96tq3nfqFCiFQgX9xUp3W4M60=',
+);
\ No newline at end of file
diff --git a/data/freespeechextremist.com.php b/data/freespeechextremist.com.php
new file mode 100644
index 0000000..28ed34f
--- /dev/null
+++ b/data/freespeechextremist.com.php
@@ -0,0 +1,9 @@
+ 'MuBl4XCxc52UsD7C5sDNu8DmA3vl3Dy-RRNgdp_vXNg',
+ 'client_secret' => 'BI-6Q2POqPcy6as1OLTJ7bC3_dS7v72DmsE9dVzWYeM',
+ 'id' => '886479',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BMlgz5vKE3ryzdfQyqCwm3CLqxvfmd8j5l9jvcJn6Wf3xzRB_TyADNMVe79EdASSFI8qSrZW1kUIIHx8HFWJrP4',
+);
\ No newline at end of file
diff --git a/data/gab.com.php b/data/gab.com.php
new file mode 100644
index 0000000..5e602ed
--- /dev/null
+++ b/data/gab.com.php
@@ -0,0 +1,9 @@
+ '77890',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => '2zBO6zYFO2gxHq8Ze6hTuMdRNflXtgN7xtJhvmmtEf4',
+ 'client_secret' => '2Mkc5Crk8IlRHmTKOS717-N-1aySbKEToKb5FF3yzVI',
+ 'vapid_key' => 'BO_CXXKZ4X6nRHs3rjx1ld-mejF4i080a_IWbvPN_-CwsREbsqB6QjXNvtHaQXe05-LhYd9s_dsJuU2fry0AjOw=',
+);
\ No newline at end of file
diff --git a/data/humblr.social.php b/data/humblr.social.php
new file mode 100644
index 0000000..77fbad3
--- /dev/null
+++ b/data/humblr.social.php
@@ -0,0 +1,9 @@
+ '53177',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'Fte9mqjlolh0Suhr1zVle5asuxSTRV-bzjWelnO5i8g',
+ 'client_secret' => 'DurR12T68dc72s-aMdpd1p5xdu0CzFjKoXl9hb9IFIY',
+ 'vapid_key' => 'BDm34vjUyFOtDXvx_pREZ84niaTMJ83EJ6jotLx2YRTnd8yHEB5lnSmwgidvDSSVXo9efSy6tM1pwEp-QWU9mw0=',
+);
\ No newline at end of file
diff --git a/data/iscute.moe.php b/data/iscute.moe.php
new file mode 100644
index 0000000..236f6c2
--- /dev/null
+++ b/data/iscute.moe.php
@@ -0,0 +1,9 @@
+ 'BmBQoJlgMPKfl2z2mCqXiIXnNeBBuNh8Gw45KBYaXrc',
+ 'client_secret' => 'yL2uTh4pVP250dhr5PRICLRH1yhm7NXLCSNCSlTvJ6I',
+ 'id' => '45604',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BFykwLQJwK62zBMVZT4KeQU4tGs9_bygn-E-4PKq9-n4YUrmZc-gjC4mX1MkKABq1laYZxDMdpb9eWPDZdLiAW8',
+);
\ No newline at end of file
diff --git a/data/koyu.space.php b/data/koyu.space.php
new file mode 100644
index 0000000..2690f14
--- /dev/null
+++ b/data/koyu.space.php
@@ -0,0 +1,9 @@
+ '620',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'pdi9kFuB3-pdNMglpG_C7kmKLgUAi8YZOxZGWYg-08M',
+ 'client_secret' => 'tCquIF8GTNzoKogozwWqyO6ROOYaZqpvVojxXhtdN80',
+ 'vapid_key' => 'BGs_-SacwAZac9UD7yX0G0ez046U74TTqLsk1UB-HjP310sqMhkkgtvU44vkIi4CO_f2pmoK6NJqGuwyGJruRpc=',
+);
\ No newline at end of file
diff --git a/data/lets.bemoe.online.php b/data/lets.bemoe.online.php
new file mode 100644
index 0000000..d1161b0
--- /dev/null
+++ b/data/lets.bemoe.online.php
@@ -0,0 +1,9 @@
+ '1JcuN7XwPZaGopeQLKvfRXH4F7g3KaBYLYrN3KwCRbA',
+ 'client_secret' => '6F9UTES1IXlouhwNmvGO85cdP0x7B-m5UBDS6Sdp5Bo',
+ 'id' => '8404',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BArHFQeb_OPy4cjYBMYHYpnGkVqWu9NNnmQRaNRsZ-j2HasNs6L8D4kNRmtaUIEXZCFmkTfcCkbYhGC00KUkfVU',
+);
\ No newline at end of file
diff --git a/data/mastodon.ml.php b/data/mastodon.ml.php
new file mode 100644
index 0000000..7d5c3f7
--- /dev/null
+++ b/data/mastodon.ml.php
@@ -0,0 +1,9 @@
+ '141',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'trP4MmzNE_qqbA9vw0zbGPPxxFP-AsuxDe3idAQNt74',
+ 'client_secret' => '4P3PXUNS1gcL_HZTFrBEIS-vOiWEZKfCy-UFaFgMgB0',
+ 'vapid_key' => 'BBqZRaF-YBnGFh-c6VZO9dkjfzAmOeCSMwQEgb7sp0EnMH1xHzfks29tTNtvLw45MdLjNKN4-8W7JvG1vP4376o=',
+);
\ No newline at end of file
diff --git a/data/mastodon.social.php b/data/mastodon.social.php
new file mode 100644
index 0000000..46065f0
--- /dev/null
+++ b/data/mastodon.social.php
@@ -0,0 +1,9 @@
+ '566995',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => '9sooHSd-iUlGmoZszymi64lpLDmjz74kjsSPkFONrQI',
+ 'client_secret' => '3EzFaZH3b4zdzgb7Idz-0bnK_4wLgAMfDsm5QrsXXSk',
+ 'vapid_key' => 'BCk-QqERU0q-CfYZjcuB6lnyyOYfJ2AifKqfeGIm7Z-HiTU5T9eTG5GxVA0_OH5mMlI4UkkDTpaZwozy0TzdZ2M=',
+);
\ No newline at end of file
diff --git a/data/merveilles.town.php b/data/merveilles.town.php
new file mode 100644
index 0000000..58c0478
--- /dev/null
+++ b/data/merveilles.town.php
@@ -0,0 +1,9 @@
+ '772',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'S-s0KAVnhNpnz2DrEcdcLKhJ2tPn0DPX_lRNYohnLRY',
+ 'client_secret' => 'XwNcjtUzLvp2VFe4uQS98ekLrGBD3azugW0Dh3T6jlM',
+ 'vapid_key' => 'BM47lDD_eJW9P1pAgBTdrnWxeDr64bGKpZ-iQ5faWBD7bTW1MotyNN_2auqKM_K8fubKMXOOnTKKt138TJUNimQ=',
+);
\ No newline at end of file
diff --git a/data/ministry.moonbutt.science.php b/data/ministry.moonbutt.science.php
new file mode 100644
index 0000000..4067faf
--- /dev/null
+++ b/data/ministry.moonbutt.science.php
@@ -0,0 +1,9 @@
+ 'bF_2tw64deJbr1uJfCvZ-HO6pg9Y49lk8xUjZPSDC-g',
+ 'client_secret' => '9lKA3T8FxptBSXj_x39or1TAmx3MDjzeEUxQjMI3vb8',
+ 'id' => '65311',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BLxhvcgHssTvFuTlrWyk2TdUSWWR9hB4TAEqLipZaVpp-tCBdtC-juti24V8ftFK0eM_sy6Jx7HV1QSfyDozOVs',
+);
\ No newline at end of file
diff --git a/data/mstdn.ikebuku.ro.php b/data/mstdn.ikebuku.ro.php
new file mode 100644
index 0000000..39947b0
--- /dev/null
+++ b/data/mstdn.ikebuku.ro.php
@@ -0,0 +1,9 @@
+ '68',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'VncEb8NWRHUX7ZKHkB_5n8kRFlglRPT43RGzhGiJ91E',
+ 'client_secret' => '9uRCulGfSCqn8O9mesryO5La1cepJlqrq0bAn__3I60',
+ 'vapid_key' => 'BIlwGmPD2zG5UNtaF_zLy6inNB0psAIKbwJKlX0KJtcIqHRkjuWOj3vCVq5pyQ5EPMLebu_wYvhyATLbz204W-A=',
+);
\ No newline at end of file
diff --git a/data/nulled.red.php b/data/nulled.red.php
new file mode 100644
index 0000000..d6600f9
--- /dev/null
+++ b/data/nulled.red.php
@@ -0,0 +1,9 @@
+ '511',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'NYKpFmRvnzhF0Qng43S4EG80PXm-C8Cn-pqaRQqqFJE',
+ 'client_secret' => 'ogId3V5iUTjsoqCeIaGoVVBqBeFew48phrR9q26luOE',
+ 'vapid_key' => 'BOAhbzr1GB9sfpBiCpmpcDd5lfML3GJI7L078T4csZwNbojKQs8vRKk7JLAgXolC-nn2y16TtixG4JCflxgs84k=',
+);
\ No newline at end of file
diff --git a/data/pawoo.net.php b/data/pawoo.net.php
new file mode 100644
index 0000000..a6db37a
--- /dev/null
+++ b/data/pawoo.net.php
@@ -0,0 +1,8 @@
+ '2418935',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'b91a1df97b4d415bee4d6242b6fbf5de099bf85651f834e2e88d1064142310ce',
+ 'client_secret' => '61f7d502594136f9202b415de69e21afd38f43241d7f1f3893b42f8d15d45996',
+);
\ No newline at end of file
diff --git a/data/phreedom.tk.php b/data/phreedom.tk.php
new file mode 100644
index 0000000..2f29476
--- /dev/null
+++ b/data/phreedom.tk.php
@@ -0,0 +1,9 @@
+ '423',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => '8XCccDbB329dLYBsWbqTph7VrqTocAyhB6JB_D-t49k',
+ 'client_secret' => 'jgoKmK11vaJoWFfqDQut-tRHOhd3x0aFBb-1pbhCbVQ',
+ 'vapid_key' => 'BFFTQAQVeDVUGKBIyGV_TqsUaEiVU4itmFmNK430dbqoXAQx72H75g4Co04sC0FmXElA79NIp13lfU5d17jd5_8=',
+);
\ No newline at end of file
diff --git a/data/pipou.academy.php b/data/pipou.academy.php
new file mode 100644
index 0000000..f269315
--- /dev/null
+++ b/data/pipou.academy.php
@@ -0,0 +1,9 @@
+ '223',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'Y7g0iYKnTg_JwgG4BeEudbKRjQcqUeDarhmZVbXl0-Y',
+ 'client_secret' => 'ok6I1BZJ-w7g6EA50eJRv_RUWDHi2hwr3qj_xAjk1tg',
+ 'vapid_key' => 'BCrKBO-ty8LDbQhjr7wD21XETR2BIHxcDsBN_NiqWBd5n9TYuAyjxhTRU5yhHVQopPt5T_VI7UFPwnjNOi1ljoA=',
+);
\ No newline at end of file
diff --git a/data/pl.ohno.host.php b/data/pl.ohno.host.php
new file mode 100644
index 0000000..5dbb263
--- /dev/null
+++ b/data/pl.ohno.host.php
@@ -0,0 +1,9 @@
+ 'uIpsD2vT5JHETjqV3ULG2jnn5iKIbfOMUDVUXMVLZGs',
+ 'client_secret' => 'Q6wZWM2dLIywkosUn8XfKXWByHwVy5QFkQ7L7ernrdc',
+ 'id' => '8674',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BHVyS3AtpMfRSPzu45QEuonZIa5KUq7ewBOsBdQAeSTargsUlSLJrCyUKA94spGeO-S3fpvz6eUf3sXM7lfH4Aw',
+);
\ No newline at end of file
diff --git a/data/pl.smuglo.li.php b/data/pl.smuglo.li.php
new file mode 100644
index 0000000..2942883
--- /dev/null
+++ b/data/pl.smuglo.li.php
@@ -0,0 +1,8 @@
+ 'RHd2Ij-Xc3eq5YxU1IR8K7CfHIlsdgf1OWABk3LMha4',
+ 'client_secret' => 'stEe6PLnEEs2llqSRkdbzSQrz9OAZTQNse13q1f42Hc',
+ 'id' => '234966',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+);
\ No newline at end of file
diff --git a/data/pleroma.gidikroon.eu.php b/data/pleroma.gidikroon.eu.php
new file mode 100644
index 0000000..2ec40e1
--- /dev/null
+++ b/data/pleroma.gidikroon.eu.php
@@ -0,0 +1,9 @@
+ 'BB4_NF8QrodgftY23TnH1L01wPH3sU6d_RYZiX3d4GM',
+ 'client_secret' => 'RLJdLdD5hFL-2aCl4dMT8nt2GFxFc33XLaoUiseehjw',
+ 'id' => '27149',
+ 'name' => 'Dashboard FE',
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'website' => NULL,
+ 'vapid_key' => 'BKjSA5DxLQGPCm_UsFFIeGDqaxJWy9MQEIrUuGdGSxf_m_LJpoF9IskwrcXYnEIfPseauFqX1vObCFZA1RJta7w',
+);
\ No newline at end of file
diff --git a/data/psychocandy.club.php b/data/psychocandy.club.php
new file mode 100644
index 0000000..cd64c1e
--- /dev/null
+++ b/data/psychocandy.club.php
@@ -0,0 +1,9 @@
+ '3',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'HoDpiygT3SqW8RJKJ2VvbbOU2FhMI7kaHzjjw6vzVDQ',
+ 'client_secret' => 'bFC9jnGkqB-lBOGy-gmzAttaA5By3OiCuaiGQcKOltI',
+ 'vapid_key' => 'BPZPTz32H7MNcVB6h6x3kDdxY28QjOBxPZW05ZyHiGG99UAMFQnSYS-SfgsHO_PU85pebPvtoMAVUqb8UYoXteY=',
+);
\ No newline at end of file
diff --git a/data/quey.org.php b/data/quey.org.php
new file mode 100644
index 0000000..7c358b1
--- /dev/null
+++ b/data/quey.org.php
@@ -0,0 +1,9 @@
+ '3051',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => '9w9b7w6Uu2LxkJaoEMwRcazV6ePRKdC8ZQLIE0ViFUM',
+ 'client_secret' => 'uOxITxUMQQE-KjfhAw5h7XGiBjtixw0GCGzJiweH0cc',
+ 'vapid_key' => 'BJ9eUAEusCcxl_aZ27el3jBOzFzec576oZT11lfgIJ9amx9sPq2pObxSfHsKWvhlJJ-JREckd0G_2S16DiWJhR4=',
+);
\ No newline at end of file
diff --git a/data/radical.town.php b/data/radical.town.php
new file mode 100644
index 0000000..fa93200
--- /dev/null
+++ b/data/radical.town.php
@@ -0,0 +1,9 @@
+ '3891',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'WFOTnDnyPWK3-vrxs04vsjCqkjJvPVWwDAx5T76IEg8',
+ 'client_secret' => 'A8H8W6Bo0a9vZwEkJ3ZYoB-EHddqX3gWActVY7TnKUQ',
+ 'vapid_key' => 'BP684BcPRpZzFikKDGi1RW9zRisWOAFbY545CI1I3zwznKoBb5J3Zx7VVYHEz81s-kPIx3Qo27EmkkX5K5aBn6I=',
+);
\ No newline at end of file
diff --git a/data/social.melonbread.xyz.php b/data/social.melonbread.xyz.php
new file mode 100644
index 0000000..7b3566a
--- /dev/null
+++ b/data/social.melonbread.xyz.php
@@ -0,0 +1,8 @@
+ NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'name' => 'Dashboard FE',
+ 'id' => '84',
+ 'client_secret' => 'P69QQNTphMZd_edggN-jcgqp6oDhyqXuM3IZ2Yjdnkk=',
+ 'client_id' => 'ngL_SJ6VdJL55zBjQ9KCX7RhDLOJ_dyvTCJNyNP82eo=',
+);
\ No newline at end of file
diff --git a/data/social.wake.st.php b/data/social.wake.st.php
new file mode 100644
index 0000000..0343a6a
--- /dev/null
+++ b/data/social.wake.st.php
@@ -0,0 +1,9 @@
+ '38',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'Mfz3MX_3RQUeqr--0uraCX_YctdK61L8ac6Jx9iCyro',
+ 'client_secret' => 'CAxt7QQG1HSnbGf3smHdZbI1rkhhl5tjvd5fkV5MLpg',
+ 'vapid_key' => 'BB3Kx-GKmYnMkIGxKInQjNUSyT9O1kDqKO-VsyxGlBVzaFI0rEqBvrblO2jXwy2wC9-ycbtPuWOY1_0Ego71CZU=',
+);
\ No newline at end of file
diff --git a/data/tiny.tilde.website.php b/data/tiny.tilde.website.php
new file mode 100644
index 0000000..3bf0028
--- /dev/null
+++ b/data/tiny.tilde.website.php
@@ -0,0 +1,9 @@
+ '460',
+ 'name' => 'Dashboard FE',
+ 'website' => NULL,
+ 'redirect_uri' => 'http://ayanami.ga/dashboard',
+ 'client_id' => 'dfpr0uIGgDSXokP5vVRCyhmHez-DwGL-QQAKbAz3lmU',
+ 'client_secret' => 'I3we4jTv98io-eY4sMZ86cP6GpnCnE-e7Jay0ZjIi-A',
+ 'vapid_key' => NULL,
+);
\ No newline at end of file
diff --git a/include/2functions.php b/include/2functions.php
new file mode 100644
index 0000000..0db1596
--- /dev/null
+++ b/include/2functions.php
@@ -0,0 +1,738 @@
+]*>)$i'; // refine this for better/more specific results
+ if (preg_match_all($pattern, $input, $matches)) {
+ list($dummy, $links) = ($matches);
+ return $links;
+ }
+ return false;
+}
+
+function emoji($text, $size = 30, $srv) {
+ $data = json_decode(file_get_contents("https://$srv/api/v1/custom_emojis") , true) [0]['url'];
+ $u = explode("/", $data);
+ array_pop($u);
+ $url = implode("/", $u);
+ $text = str_replace("http:", "http;", $text);
+ $text = str_replace("https:", "https;", $text);
+ $text = preg_replace('~:([a-z0-9_]+):~', "", $text);
+ $text = str_replace("http;", "http:", $text);
+ $text = str_replace("https;", "https:", $text);
+ return $text;
+}
+
+function emojify($string, $emojis, $size = 40) {
+ foreach ($emojis as $emoji) {
+ $string = str_replace(":" . $emoji['shortcode'] . ":", "", $string);
+ }
+ return $string;
+}
+
+function context($post) {
+ global $srv;
+ global $token;
+
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, "https://$srv/api/v1/statuses/$post/context");
+ if (!is_null($token)) {
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array(
+ 'Authorization: Bearer ' . $token
+ ));
+ }
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ $result = curl_exec($curl);
+ curl_close($curl);
+ return $result;
+}
+
+function averageColor($url) {
+ @$image = imagecreatefromstring(file_get_contents($url));
+
+ if (!$image) {
+ $mainColor = "CCCCCC";
+ }
+ else {
+ $thumb = imagecreatetruecolor(1, 1);
+ imagecopyresampled($thumb, $image, 0, 0, 0, 0, 1, 1, imagesx($image) , imagesy($image));
+ $mainColor = strtoupper(dechex(imagecolorat($thumb, 0, 0)));
+ }
+
+ return $mainColor;
+}
+
+function user_info($user) {
+ global $user_settings;
+ $info = api_get("accounts/" . $user);
+ $rel = api_get("accounts/relationships?id=" . $user);
+ return array(
+ $info,
+ $rel
+ );
+}
+
+function api_get($url) {
+ global $srv;
+ global $token;
+
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, "https://$srv/api/v1/" . $url);
+ if (!is_null($token)) {
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array(
+ 'Authorization: Bearer ' . $token
+ ));
+ }
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ $result = curl_exec($curl);
+ curl_close($curl);
+ return json_decode($result, true);
+}
+
+function api_post($url, $array) {
+ global $srv;
+ global $token;
+
+ $cSession = curl_init();
+ curl_setopt($cSession, CURLOPT_HEADER, false);
+ curl_setopt($cSession, CURLOPT_POST, 1);
+ curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/" . $url);
+ if (!is_null($token)) {
+ curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
+ 'Authorization: Bearer ' . $token
+ ));
+ }
+ curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query($array));
+ curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
+ $result = curl_exec($cSession);
+ curl_close($cSession);
+
+ return json_decode($result, true);
+}
+
+function api_delete($url, $array) {
+ global $srv;
+ global $token;
+
+ $cSession = curl_init();
+ curl_setopt($cSession, CURLOPT_HEADER, false);
+ curl_setopt($cSession, CURLOPT_POST, 1);
+ curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/" . $url);
+ curl_setopt($cSession, CURLOPT_CUSTOMREQUEST, "DELETE");
+ if (!is_null($token)) {
+ curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
+ 'Authorization: Bearer ' . $token
+ ));
+ }
+ curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query($array));
+ curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
+ $result = curl_exec($cSession);
+ curl_close($cSession);
+
+ return json_decode($result, true);
+}
+
+function render_reply($item) {
+ global $user_settings;
+ global $logedin;
+ global $srv;
+
+ $reply['mode'] = "";
+ if (isset($item['type']) && $item['type'] == 'ancestor') {
+ $reply['mode'] = "ancestor";
+ }
+
+ $reply['id'] = $item['id'];
+ $reply['uid'] = $item['account']['id'];
+ $reply['name'] = emojify($item['account']['display_name'], $item['account']['emojis'], 15);
+ $reply['acct'] = $item['account']['acct'];
+ $reply['avatar'] = $item['account']['avatar'];
+
+ $reply['menu'] = "
";
+ if ($logedin) {
+ $reply['menu'] .= ($item['account']['id'] == $user_settings['uid'] ? "- Delete Post
" : "");
+
+ $reply['menu'] .= ($item['account']['id'] != $user_settings['uid'] ? "- Mute User
" : "");
+
+ $reply['menu'] .= ($item['account']['id'] != $user_settings['uid'] ? "- User is NSFW
" : "");
+ }
+
+ $reply['menu'] .= "- Original Note
";
+
+ $reply['menu'] .= "
";
+
+ $json['id'] = $item['id'];
+ $json['scope'] = $item['visibility'];
+ if ($logedin) {
+ $json['mentions'] = "";
+ $array = $item["mentions"];
+ $json['mentions'] = ($user_settings['acct'] == $item["account"]['acct'] ? "" : "@" . $item["account"]['acct']) . " ";
+ if (!empty($array)) {
+ foreach ($array as $mnt) {
+ if ($mnt['acct'] != $user_settings['acct']) {
+ $json['mentions'] .= "@" . $mnt['acct'] . " ";
+ }
+ }
+ }
+ }
+ $reply['json'] = json_encode($json);
+
+ $reply['replyto'] = ($item['in_reply_to_id'] ? " " : "");
+ $reply['text'] = processText($item);
+
+ $public = "";
+ $private = "";
+ $unlisted = "";
+ $direct = "";
+
+ $reply['date'] = " - " . date("d/m/y H:i", strtotime($item['created_at'])) . " - " . $$item['visibility'] . "";
+
+ $reply['media'] = "";
+ if (!empty($item['media_attachments'])) {
+ $reply['media'] = "";
+ $images = count($item['media_attachments']);
+ $class = ($images > 1 ? "class='icon'" : "");
+ foreach ($item['media_attachments'] as $file) {
+ $ext = explode(".", $file['url']);
+ $ext = end($ext);
+ $ext = explode("?", $ext) [0];
+ if ($ext == 'mp4' || $ext == 'webm') {
+ $reply['media'] .= "
+ ";
+ }
+ elseif ($ext == 'mp3' || $ext == 'ogg') {
+ $reply['media'] .= "
";
+ }
+ else {
+ if ($item['sensitive'] == true && $user_settings['explicit'] != 'off') {
+ $reply['media'] .= "
";
+ }
+ else {
+ $reply['media'] .= "
";
+
+ }
+ }
+ }
+ $reply['media'] .= "
";
+ }
+
+
+ $reply['buttons'] = "
+ " . ($logedin ? "" : "") . "
+
+
+ ";
+
+ $result = file_get_contents("templates/reply.txt");
+
+ foreach ($reply as $key => $elem) {
+ $result = str_replace(":$key:", $elem, $result);
+ }
+
+ return $result;
+}
+
+function favourite($post, $mode) {
+ $result = api_post(($mode == true ? "statuses/$post/favourite" : "statuses/$post/unfavourite"),array());
+
+ if (isset($result['favourites_count'])) {
+ return $result['favourites_count'];
+ }
+ else {
+ return "error";
+ }
+}
+
+function reblog($post, $mode) {
+ $result = api_post(($mode == true ? "statuses/$post/reblog" : "statuses/$post/unreblog"),array());
+ if (isset($result['reblog']['reblogs_count'])) {
+ return $result['reblog']['reblogs_count'];
+ }
+ elseif (isset($result['reblogs_count'])) {
+ return $result['reblogs_count'];
+ }
+ else {
+ return "error";
+ }
+}
+
+function delpost($id) {
+ global $srv;
+ global $token;
+
+ if (!is_null($token)) {
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_HEADER, false);
+ curl_setopt($curl, CURLOPT_POST, 1);
+ curl_setopt($curl, CURLOPT_URL, "https://$srv/api/v1/statuses/$id");
+ curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array(
+ 'Authorization: Bearer ' . $token
+ ));
+
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ $result = curl_exec($curl);
+ curl_close($curl);
+ $result = json_decode($result, true);
+ if (empty($result)) {
+ return "1";
+ }
+ else {
+ return "0";
+ }
+ }
+}
+
+function sendpost($text, $media, $reply, $markdown = false, $scope, $sensitive, $spoiler = false) {
+ global $srv;
+ global $token;
+ if (!is_null($token)) {
+
+ $cSession = curl_init();
+ curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/statuses");
+ curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($cSession, CURLOPT_POST, 1);
+ curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
+ 'Authorization: Bearer ' . $token
+ ));
+ $query = "";
+ $query .= "status=" . urlencode(html_entity_decode($text, ENT_QUOTES)) . "&visibility=" . $scope;;
+ if (!is_null($reply) && $reply != "null") {
+ $query .= "&in_reply_to_id=" . $reply;
+ }
+ if ($markdown == true) {
+ $query .= "&content_type=text/markdown";
+ }
+ if ($sensitive == 'true') {
+ $query .= "&sensitive=true";
+ }
+ if ($spoiler == true) {
+ $query .= "&spoiler_text=" . $spoiler;
+ }
+
+ if (!is_null($media)) {
+ foreach ($media as $mid) {
+ $query .= "&media_ids[]=" . $mid;
+ }
+ }
+
+ file_put_contents("query.txt",var_export($query,true));
+
+ curl_setopt($cSession, CURLOPT_POSTFIELDS, $query);
+ $result = curl_exec($cSession);
+ curl_close($cSession);
+ return $result;
+ }
+ else {
+ return false;
+ }
+}
+
+function uploadpic($file) {
+ global $srv;
+ global $token;
+ if (!is_null($token)) {
+ $mime = get_mime($file);
+ $info = pathinfo($file);
+ $name = $info['basename'];
+ $output = new CURLFile($file, $mime, $name);
+
+ do {
+ $cSession = curl_init();
+ curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/media");
+ curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($cSession, CURLOPT_POST, 1);
+ curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
+ 'Authorization: Bearer ' . $token
+ ));
+ curl_setopt($cSession, CURLOPT_POSTFIELDS, array(
+ 'file' => $output
+ ));
+ $result = curl_exec($cSession);
+ } while (empty($result));
+ curl_close($cSession);
+ $array = json_decode($result, true);
+
+ $ext = explode(".", $array['url']);
+ $ext = end($ext);
+ $ext = explode("?", $ext) [0];
+
+ if (in_array($ext, array(
+ 'jpg',
+ 'jpeg',
+ 'gif',
+ 'png',
+ 'svg'
+ ))) {
+ $file = $array['url'];
+ }
+ else {
+ $file = "img/doc.png";
+ }
+ return json_encode(array(
+ $array['id'],
+ $file
+ ));
+ }
+ else {
+ return false;
+ }
+}
+
+function register_app($instance) {
+ global $setting;
+
+ $cSession = curl_init();
+ curl_setopt($cSession, CURLOPT_URL, "https://$instance/api/v1/apps");
+ curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($cSession, CURLOPT_HEADER, false);
+ curl_setopt($cSession, CURLOPT_POST, 1);
+ curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query(array(
+ 'client_name' => $setting['appname'],
+ 'redirect_uris' => $setting['url'],
+ 'scopes' => 'read write follow'
+ )));
+ $result = curl_exec($cSession);
+ curl_close($cSession);
+
+ return json_decode($result, true);
+}
+
+function getnotif($id = false, $max = false) {
+ global $srv;
+ global $token;
+ global $user_settings;
+ $n = "";
+ $notif = api_get("notifications?" . ($id == false ? "limit=9&" : "") . ($id != false ? ($max == true ? "max_id=$id" : "since_id=$id") : ""));
+ if (!empty($notif)) {
+ foreach ($notif as $post) {
+ $user = "" . emojify($post['account']['display_name'], $post['account']['emojis'], 10) . "";
+ $preview = "";
+ $buttons = "";
+ $media = "";
+
+ switch ($post["type"]) {
+ case "mention":
+ if ($post['status']['in_reply_to_id'] == null) {
+ $type = "";
+ $string = "mentioned you in a post";
+ $preview = "" . emojify(strip_tags(trim($post['status']['content']) , '
') , $post['status']['emojis'], 15) . "";
+ $media = (!empty($post['status']['media_attachments']) ? "" : "");
+ }
+ else {
+ $type = "";
+ $string = "replied to your post";
+ $preview = "" . emojify(strip_tags(trim($post['status']['content']) , '
') , $post['status']['emojis'], 15) . "";
+ $media = (!empty($post['status']['media_attachments']) ? "" : "");
+ }
+
+ $array = $post['status']["mentions"];
+ $mentions = ($user_settings['acct'] == $post['status']['account']['acct'] ? "" : "@" . $post['status']['account']['acct']) . " ";
+ if (!empty($array)) {
+ foreach ($array as $mnt) {
+ if ($mnt['acct'] != $user_settings['acct']) {
+ $mentions .= "@" . $mnt['acct'] . " ";
+ }
+ }
+ }
+
+ $buttons = "";
+ break;
+
+ case "favourite":
+ $type = "";
+ $string = "favourited your post";
+ $preview = "" . (!empty($post['status']['content']) ? emojify(strip_tags(trim($post['status']['content']) , '
') , $post['status']['emojis'], 15) : "Favourited your image") . "";
+ $media = (!empty($post['status']['media_attachments']) ? "" : "");
+ break;
+
+ case "reblog":
+ $type = "";
+ $string = "reblogged your post";
+ $preview = "" . (!empty($post['status']['content']) ? emojify(strip_tags(trim($post['status']['content']) , '
') , $post['status']['emojis'], 15) : "Reblogged your image") . "";
+ @$media = (!is_null($post['status']['media_attachments']) ? "" : "");
+ break;
+
+ case "pleroma:emoji_reaction":
+ $type = "";
+ $string = "favourited your post";
+ $preview = "" . (!empty($post['status']['content']) ? emojify(strip_tags(trim($post['status']['content']) , '
') , $post['status']['emojis'], 15) : "Favourited your image") . "";
+ $media = (!empty($post['status']['media_attachments']) ? "" : "");
+ break;
+
+ case "follow":
+ $type = "";
+ $string = "started following you";
+ break;
+ }
+
+ $n .= "
+
+
+
+
+ $type $user
+ " . trim($preview) . "
+ $buttons
+
+ $media
+
+
+ ";
+
+ }
+ return $n;
+ }
+}
+
+function getnotes($thread) {
+ global $user_settings;
+ global $token;
+ global $srv;
+ global $setting;
+ global $logedin;
+ @$reb = array(
+ json_decode(file_get_contents("https://$srv/api/v1/statuses/" . $thread . "/reblogged_by") , true)
+ );
+ @$fab = array(
+ json_decode(file_get_contents("https://$srv/api/v1/statuses/" . $thread . "/favourited_by") , true)
+ );
+ $limit = (count($reb[0]) > count($fab[0]) ? count($reb[0]) - 1 : count($fab[0]) - 1);
+
+ $notes = array();
+ $index = 0;
+
+ for ($i = 0;$i <= $limit;$i++) {
+ if (isset($reb[0][$i])) {
+ $notes[$index][0] = "reb";
+ $notes[$index][1] = $reb[0][$i];
+ $index++;
+ }
+ if (isset($fab[0][$i])) {
+ $notes[$index][0] = "fav";
+ $notes[$index][1] = $fab[0][$i];
+ $index++;
+ }
+ }
+
+ return $notes;
+}
+
+function getreplies($thread, $since = false) {
+ global $user_settings;
+ global $token;
+ global $srv;
+ global $setting;
+ global $logedin;
+ $context = json_decode(context($thread) , true);
+ $array = array();
+ if (!empty($context['ancestors'])) {
+ if ($since == false) {
+ foreach ($context['ancestors'] as $elem) {
+ $elem['type'] = 'ancestor';
+ $array[] = $elem;
+ }
+ }
+ }
+ $flag = 0;
+ if (!empty($context['descendants'])) {
+ foreach ($context['descendants'] as $elem) {
+ if (($since != false && $flag == 1) || $since == false) {
+ $elem['type'] = 'descendant';
+ $array[] = $elem;
+ }
+ if ($since != false && $elem['id'] == $since) {
+ $flag = 1;
+ }
+ }
+ }
+
+ $replies = array();
+
+ foreach ($array as $item) {
+ $reply['mode'] = "";
+ if ($item['type'] == 'ancestor') {
+ $reply['mode'] = "ancestor";
+ }
+
+ $replies[] = array(
+ 'mode' => $reply['mode'],
+ 'content' => $item
+ );
+ }
+
+ return $replies;
+}
+
+function timeline($query) {
+ global $token;
+ global $srv;
+
+ $notes = "";
+ $media = ($query['text'] == "on" ? "" : "&only_media=true");
+ $next = ($query['next'] ? "&max_id=" . $query['next'] : ($query['since'] ? "&since_id=" . $query['since'] : ""));
+
+ switch ($query['mode']) {
+ case "home":
+ $array = api_get("timelines/home?limit=25{$media}{$next}");
+ break;
+
+ case "federated":
+ $array = api_get("timelines/public?limit=25{$media}{$next}");
+ break;
+
+ case "tag":
+ $array = api_get("timelines/tag/" . $query['tag'] . "?limit=25{$media}{$next}");
+ break;
+
+ case "local":
+ $array = api_get("timelines/public?limit=25&local=true{$media}{$next}");
+ break;
+
+ case "user":
+ $array = api_get("accounts/" . $query['user'] . "/statuses?limit=25{$media}{$next}");
+ break;
+
+ case "thread":
+ $array = array(
+ api_get("statuses/" . $query['thread'])
+ );
+ break;
+
+ case "favourites":
+ $array = api_get("favourites?limit=25{$media}{$next}");
+ break;
+
+ case "direct":
+ $array = api_get("timelines/direct?limit=25{$next}");
+ break;
+
+ case "list":
+ $array = api_get("timelines/list/" . $query['list'] . "?limit=25{$next}");
+ break;
+
+ case "bookmarks":
+ $array = api_get("bookmarks?limit=25{$next}");
+ break;
+
+ case "account":
+ $info = api_get("accounts/verify_credentials");
+ $array = api_get("accounts/" . $info['id'] . "/statuses?limit=25{$media}{$next}");
+ break;
+
+ default:
+ $array = api_get("timelines/public?limit=25{$media}{$next}");
+ break;
+ }
+
+ if (!is_array($array)) {
+ return false;
+ }
+
+ $next = end($array) ['id'];
+ $thread = array();
+
+ foreach ($array as $elem) {
+ if ($query['replies'] == "on" || $query['mode'] == "thread") {
+ $thread[] = $elem;
+ }
+ else {
+ if ($elem['in_reply_to_id'] == null) {
+ $thread[] = $elem;
+ }
+ }
+
+ }
+
+ return array(
+ $thread,
+ $next
+ );
+}
+
+function processText($elem) {
+ global $user_settings;
+ require_once "vendor/simple_html_dom.php";
+ $content = trim(html_entity_decode($elem['content'],ENT_QUOTES));
+
+ if (!empty($content)) {
+ $html = str_get_html($content);
+ foreach ($html->find('a') as $lnk) {
+ foreach ($elem['media_attachments'] as $f) {
+ if (is_numeric(strpos($f['description'],explode("…",$lnk->innertext)[0]))) {
+ $content = str_replace($lnk->outertext . "
", null, $content);
+ $content = str_replace("
" . $lnk->outertext, null, $content);
+ $content = str_replace($lnk->outertext, null, $content);
+ }
+ }
+
+ if (is_numeric(strpos($lnk->href, $user_settings['instance'])) || in_array($lnk->class, array(
+ "u-url mention",
+ "hashtag"
+ )) || $lnk->rel == "tag") {
+ $content = str_replace($lnk->outertext, $lnk->innertext, $content);
+ }
+ else {
+ $prv = $lnk->outertext;
+ $lnk->target = '_blank';
+ $lnk->class = 'link external';
+ $content = str_replace($prv, $lnk->outertext, $content);
+ }
+ }
+ }
+
+ $result = strip_tags($content, '
');
+ $result = str_replace('
', '
', $result);
+ //$result = str_replace(''', "'", $result);
+
+ foreach ($elem['mentions'] as $mention) {
+ $result = str_replace("@" . $mention['username'], "@" . $mention['username'] . "", $result);
+ }
+
+ //$result = preg_replace("/(?$1", $result);
+ $result = emojify($result, $elem['emojis']);
+ $result = preg_replace("/#([A-Za-z0-9\/\.]*)/", "#$1", $result);
+
+ return $result;
+}
+
+function get_mime($filename) {
+ $result = new finfo();
+
+ if (is_resource($result) === true) {
+ return $result->file($filename, FILEINFO_MIME_TYPE);
+ }
+
+ return false;
+}
diff --git a/include/functions.php b/include/functions.php
index 3f31ece..49c21c2 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -485,13 +485,13 @@ function getnotif($id = false, $max = false) {
$type = "";
$string = "mentioned you in a post";
$preview = "" . emojify(strip_tags(trim($post['status']['content']) , '
') , $post['status']['emojis'], 15) . "";
- $media = (!empty($post['status']['media_attachments']) ? "" : "");
+ $media = (!empty($post['status']['media_attachments']) ? "" : "");
}
else {
$type = "";
$string = "replied to your post";
$preview = "" . emojify(strip_tags(trim($post['status']['content']) , '
') , $post['status']['emojis'], 15) . "";
- $media = (!empty($post['status']['media_attachments']) ? "" : "");
+ $media = (!empty($post['status']['media_attachments']) ? "" : "");
}
$array = $post['status']["mentions"];
@@ -514,14 +514,14 @@ function getnotif($id = false, $max = false) {
$type = "";
$string = "favourited your post";
$preview = "" . (!empty($post['status']['content']) ? emojify(strip_tags(trim($post['status']['content']) , '
') , $post['status']['emojis'], 15) : "Favourited your image") . "";
- $media = (!empty($post['status']['media_attachments']) ? "" : "");
+ $media = (!empty($post['status']['media_attachments']) ? "" : "");
break;
case "reblog":
$type = "";
$string = "reblogged your post";
$preview = "" . (!empty($post['status']['content']) ? emojify(strip_tags(trim($post['status']['content']) , '
') , $post['status']['emojis'], 15) : "Reblogged your image") . "";
- @$media = (!is_null($post['status']['media_attachments']) ? "" : "");
+ @$media = (!is_null($post['status']['media_attachments']) ? "" : "");
break;
case "follow":
diff --git a/js/scripts.js b/js/scripts.js
index f315f4e..2271073 100644
--- a/js/scripts.js
+++ b/js/scripts.js
@@ -425,6 +425,7 @@ $('body').on('click', '#settings #send', function() {
$('#settings #loading').remove();
$('#settings #send').after('Settings Saved');
$('#settings #saved').delay(1000).fadeOut("slow");
+ window.location.reload(true);
});
});
diff --git a/layout/header.php b/layout/header.php
index 7c31bb9..98edf3d 100644
--- a/layout/header.php
+++ b/layout/header.php
@@ -108,7 +108,7 @@ endif; ?>
-
+
@@ -142,23 +142,23 @@ endif; ?>
-
+
-
+
-
+
-
+
- Login
+ Login
@@ -186,9 +186,9 @@ if ($logedin) {
diff --git a/login/index.php b/login/index.php
index fa6e20c..37aceb0 100644
--- a/login/index.php
+++ b/login/index.php
@@ -8,8 +8,8 @@ include "../include/functions.php";
$message = "";
-if (isset($_POST['user'])){
- $instance = htmlentities($_POST['user']);
+if (isset($_POST['user']) || isset($_GET['instance'])){
+ $instance = (isset($_POST['user']) ? htmlentities($_POST['user']) : htmlentities($_GET['instance']));
$check = json_decode(file_get_contents("https://$instance/api/v1/instance"),true);
if(is_null($check['title'])){
diff --git a/modules/2timeline.php b/modules/2timeline.php
new file mode 100644
index 0000000..912191e
--- /dev/null
+++ b/modules/2timeline.php
@@ -0,0 +1,297 @@
+
+
+
+
+ " : "");
+
+ if ($logedin && $rel[0]['following']) {
+ $profile['top'] .= "";
+ }
+
+ if ($logedin) {
+ if ($rel[0]['following']) {
+ $label = " Following";
+ $class = "unfollow";
+ }
+ else {
+ if ($info['locked']) {
+ if ($rel[0]['requested']) {
+ $label = " Follow Requested";
+ $class = "unfollow";
+ }
+ else {
+ $label = " Request Follow";
+ $class = "follow";
+ }
+ }
+ else {
+ $label = " Follow";
+ $class = "follow";
+ }
+ }
+ $profile['top'] .= "$label";
+ }
+ $profile['top'] .= "" . (in_array($info['id'], $user_settings['nsfw']) ? "NSFW " : "NSFW ") . "";
+
+ if ($logedin) {
+ $profile['bottom'] = "
+ " . ($info['locked'] ? " Locked" : "") . "
+ " . ($rel[0]['followed_by'] ? " Follows You" : "") . "
+ " . ($rel[0]['blocking'] ? " Blocked" : "") . "
+ " . ($rel[0]['muting'] ? " Muted" : "") . "
+ ";
+ }
+ else {
+ $profile['bottom'] = "";
+ }
+
+ $profile['avatar'] = $info['avatar'];
+ $profile['name'] = emojify($info['display_name'], $info['emojis'], 40);
+ $profile['acct'] = $info['acct'];
+ $profile['url'] = $info['url'];
+ $profile['note'] = emojify(trim($info['note']) , $info['emojis']);
+ $profile['statuses'] = $info['statuses_count'];
+ $profile['following'] = $info['following_count'];
+ $profile['followers'] = $info['followers_count'];
+
+ foreach ($profile as $key => $value) {
+ $template = str_replace(":$key:", $value, $template);
+ }
+
+ echo $template;
+}
+elseif (!isset($_GET['next']) && !isset($_GET['since'])) {
+ echo "";
+}
+
+if ((!isset($thread[0]['id']) && !empty($thread)) || !is_array($thread)) {
+ echo " Error loading the timeline. " . json_encode($thread) . " ";
+}
+else {
+ $e = 0;
+ foreach ($thread as $elem) {
+
+ $post = array();
+ $post['pid'] = $elem['id'];
+ $post['replyto'] = "";
+ $post['rt'] = "";
+
+ if ($elem['reblog'] != null) {
+ $post['name'] = "" . emojify($elem['reblog']['account']['display_name'], $elem['reblog']['account']['emojis'], 15) . "";
+
+ $post['replyto'] = "" . ($elem['reblog']['in_reply_to_id'] ? " " : "") . "";
+
+ //$post['rt'] = "[ by " . emojify($elem['account']['display_name'],$elem['account']['emojis'],15) . " ]";
+ $post['rt'] = "[ by " . emojify($elem['account']['display_name'], $elem['account']['emojis'], 15) . "@" . explode("@", $elem['account']['acct']) [0] . " ]";
+
+ $elem = $elem['reblog'];
+ }
+ else {
+ $post['name'] = "" . emojify($elem['account']['display_name'], $elem['account']['emojis'], 20) . " (" . $elem['account']['acct'] . ") ";
+
+ $post['replyto'] = "" . ($elem['in_reply_to_id'] ? " " : "") . "";
+ }
+
+ if (in_array($elem["account"]['id'], $user_settings['nsfw'])) {
+ $elem['sensitive'] = true;
+ }
+
+ if ($user_settings['explicit'] == "hide" && $elem['sensitive'] == true && $tl['mode'] != "thread") {
+ continue;
+ }
+ if (@in_array($elem["pleroma"]['conversation_id'], $user_settings['hide'])) {
+ continue;
+ }
+
+ $json['id'] = $elem['id'];
+ $json['scope'] = $elem['visibility'];
+ if ($logedin) {
+ $pos['mentions'] = "";
+ $array = $elem["mentions"];
+ $json['mentions'] = ($user_settings['acct'] == $elem["account"]['acct'] ? "" : "@" . $elem["account"]['acct']) . " ";
+ if (!empty($array)) {
+ foreach ($array as $mnt) {
+ if ($mnt['acct'] != $user_settings['acct']) {
+ $json['mentions'] .= "@" . $mnt['acct'] . " ";
+ }
+ }
+ }
+ }
+ $post['json'] = json_encode($json);
+
+ $post['menu'] = "";
+
+ $post['text'] = processText($elem);
+
+ $post['spoiler'] = (empty($elem['spoiler_text']) ? "" : "" . $elem['spoiler_text'] . "
");
+ $post['media'] = "";
+
+ $urls = get_urls(strip_tags($elem['content'], '
'));
+
+ if (!empty($urls)) {
+ foreach ($urls as $url) {
+ parse_str(parse_url($url, PHP_URL_QUERY) , $my_array_of_vars);
+ if (isset($my_array_of_vars['v'])) {
+ $post['media'] = "