~jadedctrl/jam-xwx-moe
Showing details for patch 9fce8fcdfe022819eeab80544c18959792bcc144.
diff -rN -u old-jam-xwx-moe/bloat/bloat.conf new-jam-xwx-moe/bloat/bloat.conf --- old-jam-xwx-moe/bloat/bloat.conf 1970-01-01 00:00:00.000000000 +0000 +++ new-jam-xwx-moe/bloat/bloat.conf 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,45 @@ +# Format: +# - Lines starting with a '#' are ignored +# - Key and Value are separated by a single '=' +# - Leading and trailing white spaces in Key and Value are ignored +# - Quoting and multi-line values are not supported + +# Address to listen to. Value can be of "HOSTNAME:PORT" or "IP:PORT" form. In +# case of empty HOSTNAME or IP, "0.0.0.0:PORT" is used. +# Example: ":8080", "bloat.mydomain.com" +listen_address=127.0.0.1:8090 + +# Full URL of the website. Users will be redirected to this URL after +# authentication. +# Example: "http://localhost:8080", "https://bloat.mydomain.com" +client_website=https://jam.xwx.moe:1337 + +# Name of the client. +client_name=Mancardo Jamada + +# Mastadon scopes used by the client. +# See https://docs.joinmastodon.org/api/oauth-scopes/ +client_scope=read write follow + +# Path of directory containing template files. +templates_path=instance/ŝablonoj + +# Path of directory containing static files (CSS and JS). +static_directory=instance/ktp + +# Supported post formats. Value is a list of key:value pair separated by a ','. +# Empty value will disable the format selection in frontend. +post_formats=PlainText:text/plain,HTML:text/html,Markdown:text/markdown,BBCode:text/bbcode + +# Log file. Will log to stdout if value is empty. +# log_file=log + +# In single instance mode, bloat will not ask for instance domain name and +# user will be directly redirected to login form. User login from other +# instances is not allowed in this mode. +# Empty value disables single instance mode. +single_instance=jam.xwx.moe + +# Path to custom CSS. Value can be a file path relative to the static directory. +# or a URL starting with either "http://" or "https://". +# custom_css=custom.css Binary files old-jam-xwx-moe/bloat/instance/ktp/favicon.png and new-jam-xwx-moe/bloat/instance/ktp/favicon.png differ diff -rN -u old-jam-xwx-moe/bloat/instance/ktp/fluoride.js new-jam-xwx-moe/bloat/instance/ktp/fluoride.js --- old-jam-xwx-moe/bloat/instance/ktp/fluoride.js 1970-01-01 00:00:00.000000000 +0000 +++ new-jam-xwx-moe/bloat/instance/ktp/fluoride.js 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,332 @@ +// @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt CC0 + +var reverseActions = { + "like": "unlike", + "unlike": "like", + "retweet": "unretweet", + "unretweet": "retweet" +}; + +var csrfToken = ""; +var antiDopamineMode = false; + +function checkCSRFToken() { + var tag = document.querySelector("meta[name='csrf_token']"); + if (tag) + csrfToken = tag.getAttribute("content"); +} + +function checkAntiDopamineMode() { + var tag = document.querySelector("meta[name='antidopamine_mode']"); + if (tag) + antiDopamineMode = tag.getAttribute("content") === "true"; +} + +function http(method, url, body, type, success, error) { + var req = new XMLHttpRequest(); + req.onload = function() { + if (this.status === 200 && typeof success === "function") { + success(this.responseText, this.responseType); + } else if (typeof error === "function") { + error(this.responseText); + } + }; + req.onerror = function() { + if (typeof error === "function") { + error(this.responseText); + } + }; + req.open(method, url); + req.setRequestHeader("Content-Type", type); + req.send(body); +} + +function updateActionForm(id, f, action) { + f.querySelector("[type='submit']").value = action; + f.action = "/" + action + "/" + id; + f.dataset.action = action; +} + +function handleLikeForm(id, f) { + f.onsubmit = function(event) { + event.preventDefault(); + + var action = f.dataset.action; + var forms = document. + querySelectorAll(".status-"+id+" .status-like"); + for (var i = 0; i < forms.length; i++) { + updateActionForm(id, forms[i], reverseActions[action]); + } + + var body = "csrf_token=" + encodeURIComponent(csrfToken); + var contentType = "application/x-www-form-urlencoded"; + http("POST", "/fluoride/" + action + "/" + id, + body, contentType, function(res, type) { + + if (antiDopamineMode) + return; + var data = JSON.parse(res); + var count = data.data; + if (count === 0) + count = ""; + var counts = document. + querySelectorAll(".status-"+id+" .status-like-count"); + for (var i = 0; i < counts.length; i++) { + if (count > 0) { + counts[i].innerHTML = "(" + count + ")"; + } else { + counts[i].innerHTML = ""; + } + } + }, function(err) { + for (var i = 0; i < forms.length; i++) { + updateActionForm(id, forms[i], action); + } + }); + } +} + +function handleRetweetForm(id, f) { + f.onsubmit = function(event) { + event.preventDefault(); + + var action = f.dataset.action; + var forms = document. + querySelectorAll(".status-"+id+" .status-retweet"); + for (var i = 0; i < forms.length; i++) { + updateActionForm(id, forms[i], reverseActions[action]); + } + + var body = "csrf_token=" + encodeURIComponent(csrfToken); + var contentType = "application/x-www-form-urlencoded"; + http("POST", "/fluoride/" + action + "/" + id, + body, contentType, function(res, type) { + + if (antiDopamineMode) + return; + var data = JSON.parse(res); + var count = data.data; + if (count === 0) + count = ""; + var counts = document. + querySelectorAll(".status-"+id+" .status-retweet-count"); + for (var i = 0; i < counts.length; i++) { + if (count > 0) { + counts[i].innerHTML = "(" + count + ")"; + } else { + counts[i].innerHTML = ""; + } + } + }, function(err) { + for (var i = 0; i < forms.length; i++) { + updateActionForm(id, forms[i], action); + } + }); + } +} + +function isInView(el) { + var ract = el.getBoundingClientRect(); + if (ract.top > 0 && ract.bottom < window.innerHeight) + return true; + return false; +} + +function handleReplyToLink(a) { + if (!a) + return; + var id = a.getAttribute("href"); + if (!id || id[0] != "#") + return; + a.onmouseenter = function(event) { + var id = event.target.getAttribute("href"); + var status = document.querySelector(id); + if (!status) + return; + if (isInView(status)) { + status.classList.add("highlight"); + } else { + var copy = status.cloneNode(true); + copy.id = "reply-to-popup"; + var ract = event.target.getBoundingClientRect(); + copy.style["max-width"] = (window.innerWidth - ract.left - 32) + "px"; + if (ract.top > window.innerHeight / 2) { + copy.style.bottom = (window.innerHeight - + window.scrollY - ract.top) + "px"; + } + event.target.parentElement.appendChild(copy); + } + } + a.onmouseleave = function(event) { + var popup = document.getElementById("reply-to-popup"); + if (popup) { + event.target.parentElement.removeChild(popup); + } else { + var id = event.target.getAttribute("href"); + document.querySelector(id) + .classList.remove("highlight"); + } + } +} + +function handleReplyLink(a) { + a.onmouseenter = function(event) { + var id = event.target.getAttribute("href"); + var status = document.querySelector(id); + if (!status) + return; + if (isInView(status)) { + status.classList.add("highlight"); + } else { + var copy = status.cloneNode(true); + copy.id = "reply-popup"; + var ract = event.target.getBoundingClientRect(); + copy.style["max-width"] = (window.innerWidth - 98) + "px"; + if (ract.left > window.innerWidth / 2) { + copy.style.right = (window.innerWidth - + ract.right - 12) + "px"; + } + event.target.parentElement.appendChild(copy); + } + } + a.onmouseleave = function(event) { + var popup = document.getElementById("reply-popup"); + if (popup) { + event.target.parentElement.removeChild(popup); + } else { + var id = event.target.getAttribute("href"); + document.querySelector(id).classList.remove("highlight"); + } + } +} + +function handleStatusLink(a) { + if (a.classList.contains("mention")) + a.removeAttribute("target"); + else + a.target = "_blank"; +} + +function setPos(el, cx, cy, mw, mh) { + var h = el.clientHeight; + var w = el.clientWidth; + var left, top; + if (cx < mw/2) { + if (w + cx + 20 < mw) { + left = cx + 20; + } else { + left = (mw - w); + } + } else { + if (cx - w - 20 > 0) { + left = cx - w - 20; + } else { + left = 0; + } + } + top = (cy - (h/2)); + if (top < 0) { + top = 0; + } else if (top + h > mh) { + top = (mh - h); + } + el.style.left = left + "px"; + el.style.top = top + "px"; +} + +var imgPrev = null; +var imgX = 0; +var imgY = 0; +function handleImgPreview(a) { + a.onmouseenter = function(e) { + var mw = document.documentElement.clientWidth; + var mh = document.documentElement.clientHeight - 24; + imgX = e.clientX; + imgY = e.clientY; + var img = document.createElement("img"); + img.id = "img-preview"; + img.src = e.target.getAttribute("href"); + img.style["max-width"] = mw + "px"; + img.style["max-height"] = mh + "px"; + imgPrev = img; + img.onload = function(e2) { + setPos(imgPrev, imgX, imgY, mw, mh); + } + document.body.appendChild(img); + } + a.onmouseleave = function(e) { + var img = document.getElementById("img-preview"); + if (img) + document.body.removeChild(img); + imgPrev = null; + } + a.onmousemove = function(e) { + if (!imgPrev) + return; + var mw = document.documentElement.clientWidth; + var mh = document.documentElement.clientHeight - 24; + imgX = e.clientX; + imgY = e.clientY; + setPos(imgPrev, imgX, imgY, mw, mh); + } +} + +function onPaste(e) { + if (!e.clipboardData.files) + return; + var fp = document.querySelector("#post-file-picker") + var dt = new DataTransfer(); + for (var i = 0; i < fp.files.length; i++) { + dt.items.add(fp.files[i]); + } + for (var i = 0; i < e.clipboardData.files.length; i++) { + dt.items.add(e.clipboardData.files[i]); + } + fp.files = dt.files; +} + +document.addEventListener("DOMContentLoaded", function() { + checkCSRFToken(); + checkAntiDopamineMode(); + + var statuses = document.querySelectorAll(".status-container"); + for (var i = 0; i < statuses.length; i++) { + var s = statuses[i]; + var id = s.dataset.id; + + var likeForm = s.querySelector(".status-like"); + handleLikeForm(id, likeForm); + + var retweetForm = s.querySelector(".status-retweet"); + handleRetweetForm(id, retweetForm); + + var replyToLink = s.querySelector(".status-reply-to-link"); + handleReplyToLink(replyToLink); + + var replyLinks = s.querySelectorAll(".status-reply-link"); + for (var j = 0; j < replyLinks.length; j++) { + handleReplyLink(replyLinks[j]); + } + + var links = s.querySelectorAll(".status-content a"); + for (var j = 0; j < links.length; j++) { + handleStatusLink(links[j]); + } + } + + var links = document.querySelectorAll(".user-profile-decription a, .user-fields a"); + for (var j = 0; j < links.length; j++) { + links[j].target = "_blank"; + } + + var links = document.querySelectorAll(".status-media-container .img-link"); + for (var j = 0; j < links.length; j++) { + handleImgPreview(links[j]); + } + + var pf = document.querySelector(".post-form") + if (pf) + pf.addEventListener("paste", onPaste); +}); + +// @license-end diff -rN -u old-jam-xwx-moe/bloat/instance/ktp/style.css new-jam-xwx-moe/bloat/instance/ktp/style.css --- old-jam-xwx-moe/bloat/instance/ktp/style.css 1970-01-01 00:00:00.000000000 +0000 +++ new-jam-xwx-moe/bloat/instance/ktp/style.css 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,639 @@ +body { + background-color: #d2d2d2; +} + +.status-container-container { + margin: 0 -4px 12px -4px; + padding: 4px; + border-left: 4px solid transparent; +} + +.status-container-container:target { + border-color: #777777; +} + +.status-container-container.highlight { + background-color: #eeeeee; +} + +.status-container { + display: flex; +} + +.status-content { + margin: 4px 0; + max-height: 600px; + overflow: auto; + overflow-wrap: break-word; +} + +.status-name { + overflow-wrap: break-word; +} + +.status-content p { + margin: 0px; +} + +.status-content img, +.status-image, +.status-video { + height: auto; + width: auto; + max-height: 240px; + max-width: 280px; + vertical-align: bottom; + object-fit: contain; +} + +.status-media-container { + margin: 5px 0 -5px 0; + overflow: auto; +} + +.status-media-container>a { + margin-bottom: 5px; + display: inline-block; +} + +.status-profile-img-container { + margin-right: 8px; + display: inline-block; + vertical-align: top; +} + +.status-profile-img { + height: 48px; + width: 48px; + min-height: 48px; + min-width: 48px; + max-height: 48px; + max-width: 48px; + vertical-align: top; + object-fit: contain; + margin-top: 2px; +} + +.status { + display: inline-block; + vertical-align: top; + flex: 1; + min-width: 0; +} + +.status-dname { + font-weight: 800; +} + +.status-uname { + font-style: italic; + font-size: 10pt; +} + +.status-action-container { + margin-top: 4px; +} + +.status-action { + display: inline-block; + margin-right: 16px; +} + +.status-action-last { + margin-right: 4px; +} + +.status-action form { + display: inline-block; +} + +.status-action a { + display: inline-block; +} + +.status-action * { + vertical-align: middle; +} + +.status-action a.status-time { + width: auto; +} + +.page-title { + font-size: 18pt; + margin: 8px 0; +} + +.post-form { + margin: 4px 0; +} + +.post-form>div { + margin-bottom: 4px; +} + +.signin-form { + margin: 8px 0; +} + +.signin-form input { + margin: 4px 0; +} + +.retweet-info { + margin: 0 0 4px 24px; + overflow-wrap: break-word; +} + +.retweet-info .status-profile-img { + height: 24px; + width: 24px; + min-height: 24px; + min-width: 24px; + max-height: 24px; + max-width: 24px; + vertical-align: middle; +} + +.retweet-info .status-dname { + margin-left: 4px; +} + +textarea { + padding: 4px; + font-size: 11pt; + font-family: initial; +} + +.post-content { + box-sizing: border-box; + width: 100%; +} + +#css { + box-sizing: border-box; + max-width: 100%; +} + +.pagination { + margin: 4px 4px 12px 4px; +} + +.pagination a { + margin: 0 8px; + font-size: 13pt; +} + +.notification-container { + margin: 0 -4px 12px -4px; + padding: 4px; + border-left: 4px solid transparent; +} + +.notification-container.unread { + border-color: #777777; +} + +.notification-container .status-container { + opacity: 0.6; +} + +.notification-container.mention .status-container { + opacity: unset; +} + +.notification-info-text span { + vertical-align: middle; +} + +.notification-follow-container { + overflow: auto; + display: flex; + align-items: center; +} + +.notification-follow { + overflow: auto; +} + +.notification-time { + margin-left: 8px; +} + +.status-reply-to-link { + font-size: 10pt +} + +.status-reply-container { + overflow-wrap: break-word; +} + +.status-reply-container .fa { + font-size: 10pt; + vertical-align: sub; + margin-right: -2px; +} + +.status-reply-text { + font-size: 10pt; +} + +.status-reply-link { + font-size: 10pt; +} + +.status-reply-info-divider { + margin: 0 4px; +} + +.post-content-container { + padding-right: 8px; +} + +.error-text { + margin: 8px 0; +} + +.post-attachment-div { + margin: 2px 0; +} + +.user-profile-img-container { + display: inline-block; + margin: 0 4px 4px 0; +} + +.user-profile-details-container { + display: inline-block; + vertical-align: top; +} + +.user-profile-details-container>div { + margin-bottom: 4px; +} + +.user-profile-img { + height: 96px; + width: 96px; + vertical-align: top; + object-fit: contain; + margin-top: 2px; +} + +.user-profile-decription, +.user-fields { + overflow-wrap: break-word; + margin: 8px 0; +} + +.user-profile-decription p { + margin: 0; +} + +.user-profile-decription img { + height: auto; + width: auto; + max-height: 240px; + max-width: 280px; + object-fit: contain; +} + +.d-inline { + display: inline; +} + +.p-0 { + padding: 0; +} + +.btn-link { + border: none; + outline: none; + background: none; + cursor: pointer; + padding: 0; + font-family: inherit; + font-size: inherit; +} + +a, .btn-link { + color: #464acc; + text-decoration: none; +} + +a:hover, +.btn-link:hover { + color: #8387bf; +} + +.status-visibility { + margin-left: 4px; + display: inline-block; + color: #222222; + font-size: 8pt; +} + +.remote-link { + margin-left: 4px; + font-size: 8pt; +} + +.img-link { + display: inline-block; + position: relative; +} + +.status-profile-img-container .img-link { + width: 48px; +} + +.status-nsfw-overlay { + background: black; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} + +.img-link:hover .status-nsfw-overlay { + display: none; +} + +.status-video-container { + display: inline-block; + position: relative; + margin-bottom: 5px; +} + +.status-video-container:hover .status-nsfw-overlay { + display: none; +} + +.emoji-item-container { + width: 220px; + display: inline-block; + margin: 4px 0; + overflow: hidden; +} + +.emoji-item { + display: flex; + align-items: center; +} + +img.emoji { + height: auto; + width: auto; + max-height: 32px; + max-width: 32px; + min-height: 32px; + min-width: 32px; + vertical-align: middle; + object-fit: contain; + margin: 0; +} + +.status-dname img.emoji { + height: 24px; + min-height: 24px; + min-width: 24px; +} + +.emoji-shortcode { + margin-left: 4px; +} + +.post-form-emoji-link { + margin-left: 4px; +} + +.user-info-img { + height: 64px; + width: 64px; + vertical-align: middle; + object-fit: contain; + margin-top: 2px; +} + +.user-info-img-container { + float: left; + margin-right: 8px; +} + +.user-info-details-container { + overflow: auto; +} + +.user-info-details-name, +.user-info-details-nav { + margin-bottom: 4px; +} + +.nav-link { + margin-right: 2px; +} + +.user-list-item { + overflow: auto; + margin: 0 0 12px 0; + display: flex; + align-items: center; +} + +.user-list-profile-img { + float: left; + margin: 0 8px 0 0; +} + +.user-list-name { + overflow: auto; +} + +.user-list-action { + margin: 0 12px; +} + +#settings-form { + margin: 8px 0; +} + +.settings-form-field { + margin: 4px 0; +} + +#settings-form button[type=submit] { + margin-top: 8px; +} + +#reply-popup { + position: absolute; + background-color: #d2d2d2; + border: 1px solid #aaaaaa; + padding: 4px 8px; + z-index: 3; + margin: 0; +} + +#reply-to-popup { + position: absolute; + background-color: #d2d2d2; + border: 1px solid #aaaaaa; + padding: 4px 8px; + z-index: 3; + margin: 0; +} + +.search-form { + margin: 12px 0; +} + +.more-container { + position: relative; + display: inline-block; +} + +.more-content { + display: none; + position: absolute; + background-color: #d2d2d2; + padding: 2px 4px; + border: 1px solid #aaaaaa; + z-index: 1; +} + +.more-container:hover .more-content { + display: block; +} + +.more-link { + font-size: 8pt; + display: block; + margin: 2px; +} + +.poll-form { + margin-top: 5px; + overflow: auto; + overflow-wrap: break-word; +} + +.poll-form button[type=submit] { + margin-top: 6px; +} + +.poll-info { + margin-top: 6px; +} + +.page-title-container { + margin: 8px 0; +} + +.page-refresh { + margin-right: 8px; +} + +.notification-text { + vertical-align: middle; +} + +.notification-read { + display: inline-block; +} + +.no-data-found { + margin: 12px 0; +} + +.signout { + display: inline; +} + +.signin-desc { + margin: 8px 0 16px 0; +} + +.keyboard-shortcuts { + margin-top: 12px; +} + +.keyboard-shortcuts td { + padding: 2px 4px; +} + +kbd { + border-radius: 3px; + padding: 1px 4px; + border: 1px solid #444444; + background-color: #eeeeee; + font-size: 10pt; +} + +.filters { + margin: 10px 0; +} + +.filters td { + padding: 2px 4px; +} + +#img-preview { + pointer-events: none; + z-index: 2; + position: fixed; +} + +.quote { + color: #789922; +} + +.dark { + background-color: #222222; + background-image: none; + color: #eaeaea; +} + +.dark a { + color: #81a2be; +} + +.dark textarea { + background-color: #333333; + border: 1px solid #444444; + color: #eaeaea; +} + +.dark #reply-popup, +.dark #reply-to-popup { + background-color: #222222; + border-color: #444444; +} + +.dark .status-container-container.highlight { + background-color: #333333; +} + +.dark .btn-link { + color: #81a2be; +} + +.dark a:hover, +.dark .btn-link:hover { + color: #497091; +} + +.dark .status-visibility { + color: #eaeaea; +} + +.dark .more-content { + background-color: #222222; + border-color: #444444; +} + +.dark kbd { + background-color: #333333; + border-color: #444444; + color: #eaeaea; +} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/about.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/about.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/about.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/about.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,109 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} + +<div class="page-title"> About </div> +<div> + <p> + A web client for <a href="https://pleroma.social" target="_blank">Mastadon Network</a>. + </p> + <p> + The source code is released under + <a href="https://creativecommons.org/publicdomain/zero/1.0/legalcode" target="_blank">CC0</a> + and is available on + <a href="https://git.freesoftwareextremist.com/bloat" target="_blank">git.freesoftwareextremist.com/bloat</a>. + </P> +</div> + +<div class="page-title"> Keyboard shortcuts </div> +<div> + <table class="keyboard-shortcuts"> + <tr> + <td> User profile </td> + <td> <kbd>0</kbd> </td> + </tr> + <tr> + <td> Home timeline </td> + <td> <kbd>1</kbd> </td> + </tr> + <tr> + <td> Direct timeline </td> + <td> <kbd>2</kbd> </td> + </tr> + <tr> + <td> Local timeline </td> + <td> <kbd>3</kbd> </td> + </tr> + <tr> + <td> The Whole Known Network </td> + <td> <kbd>4</kbd> </td> + </tr> + <tr> + <td> Remote timeline </td> + <td> <kbd>5</kbd> </td> + </tr> + <tr> + <td> Search </td> + <td> <kbd>6</kbd> </td> + </tr> + <tr> + <td> Lists </td> + <td> <kbd>7</kbd> </td> + </tr> + <tr> + <td> Settings </td> + <td> <kbd>8</kbd> </td> + </tr> + <tr> + <td> About </td> + <td> <kbd>9</kbd> </td> + </tr> + <tr> + <td> Emoji list </td> + <td> <kbd>L</kbd> </td> + </tr> + <tr> + <td> Edit post </td> + <td> <kbd>E</kbd> </td> + </tr> + <tr> + <td> Post format </td> + <td> <kbd>F</kbd> </td> + </tr> + <tr> + <td> Post scope </td> + <td> <kbd>S</kbd> </td> + </tr> + <tr> + <td> Post NSFW </td> + <td> <kbd>N</kbd> </td> + </tr> + <tr> + <td> Post attachments </td> + <td> <kbd>A</kbd> </td> + </tr> + <tr> + <td> Submit post </td> + <td> <kbd>P</kbd> </td> + </tr> + <tr> + <td> Refresh notifications </td> + <td> <kbd>R</kbd> </td> + </tr> + <tr> + <td> Read notifications </td> + <td> <kbd>C</kbd> </td> + </tr> + <tr> + <td> Refresh timeline/thread page </td> + <td> <kbd>T</kbd> </td> + </tr> + </table> + <p> + You can activate the shortcuts by pressing the associated key with your browser's <a href="https://en.wikipedia.org/wiki/Access_key#Access_in_different_browsers" target="_blank">accesskey modifier</a>, + which is generally <kbd>Alt</kbd> + <kbd>Shift</kbd>. + </p> +</div> + +{{template "footer.tmpl"}} +{{end}} + diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/emoji.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/emoji.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/emoji.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/emoji.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,17 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Emojis </div> + +<div class="emoji-list-container"> + {{range .Emojis}} + <div class="emoji-item-container"> + <div class="emoji-item"> + <img class="emoji" src="{{.URL}}" alt="{{.ShortCode}}" height="32" loading="lazy" /> + <span title=":{{.ShortCode}}:" class="emoji-shortcode">:{{.ShortCode}}:</span> + </div> + </div> + {{end}} +</div> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/error.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/error.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/error.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/error.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,17 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Error </div> + +<div class="error-text"> {{.Err}} </div> +<div> + <a href="/timeline/home">home</a> + {{if .Retry}} + <a href="{{$.Ctx.Referrer}}">retry</a> + {{end}} + {{if .SessionErr}} + <a href="/signin" target="_top">signin</a> + {{end}} +</div> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/filters.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/filters.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/filters.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/filters.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,40 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Filters </div> + +{{if .Filters}} +<table class="filters"> + {{range .Filters}} + <tr> + <td> {{.Phrase}}{{if not .WholeWord}}*{{end}} </td> + <td> + <form action="/unfilter/{{.ID}}" method="POST"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <button type="submit"> Delete </button> + </form> + </td> + </tr> + {{end}} +</table> +{{else}} + <div class="filters"> No filters added </div> +{{end}} + +<div class="page-title"> Add filter </div> +<form action="/filter" method="POST"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <span class="settings-form-field"> + <label for="phrase"> Phrase </label> + <input id="phrase" name="phrase" required> + </span> + <span class="settings-form-field"> + <input id="whole-word" name="whole_word" type="checkbox" value="true" checked> + <label for="whole-word"> Whole word </label> + </span> + <button type="submit"> Add </button> +</form> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/footer.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/footer.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/footer.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/footer.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,2 @@ +</body> +</html> diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/header.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/header.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/header.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/header.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,33 @@ +{{with .Data}} +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset='utf-8'> + <link rel="icon" type="image/png" href="/static/favicon.png"> + <meta content='width=device-width, initial-scale=1' name='viewport'> + {{if .Target}} + <base href="" target="{{.Target}}"> + {{end}} + {{if .CSRFToken}} + <meta name="csrf_token" content="{{.CSRFToken}}"> + {{end}} + {{if $.Ctx.AntiDopamineMode}} + <meta name="antidopamine_mode" content="{{$.Ctx.AntiDopamineMode}}"> + {{end}} + {{if .RefreshInterval}} + <meta http-equiv="refresh" content="{{.RefreshInterval}}"> + {{end}} + <title> {{if gt .Count 0}}({{.Count}}){{end}} {{.Title}} </title> + <link rel="stylesheet" href="/static/style.css"> + {{if .CustomCSS}} + <link rel="stylesheet" href="{{.CustomCSS}}"> + {{end}} + {{if $.Ctx.FluorideMode}} + <script src="/static/fluoride.js"></script> + {{end}} + {{if $.Ctx.UserCSS}} + <style>{{RawCSS $.Ctx.UserCSS}}</style> + {{end}} +</head> +<body {{if $.Ctx.DarkMode}}class="dark"{{end}}> +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/likedby.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/likedby.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/likedby.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/likedby.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,8 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Liked By </div> + +{{template "userlist.tmpl" (WithContext .Users $.Ctx)}} + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/lists.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/lists.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/lists.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/lists.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,35 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Lists </div> + +{{range .Lists}} +<div> + <a href="/timeline/list?list={{.ID}}"> {{.Title}} timeline </a> + - + <form class="d-inline" action="/list/{{.ID}}" method="GET"> + <button type="submit" class="btn-link"> edit </button> + </form> + - + <form class="d-inline" action="/list/{{.ID}}/remove" method="POST"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <button type="submit" class="btn-link"> delete </button> + </form> +</div> +{{else}} +<div class="no-data-found">No data found</div> +{{end}} + +<div class="page-title"> Add list </div> +<form action="/list" method="POST"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <span class="settings-form-field"> + <label for="title"> Title </label> + <input id="title" name="title" required> + </span> + <button type="submit"> Add </button> +</form> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/list.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/list.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/list.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/list.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,63 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> List {{.List.Title}} </div> + +<form action="/list/{{.List.ID}}/rename" method="POST"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input id="title" name="title" value="{{.List.Title}}"> + <button type="submit"> Rename </button> +</form> + +<div class="page-title"> Users </div> +{{if .Accounts}} +<table> +{{range .Accounts}} + <tr> + <td class="p-0"> {{template "userlistitem.tmpl" (WithContext . $.Ctx)}} </td> + <td class="p-0"> + <form class="user-list-action" action="/list/{{$.Data.List.ID}}/removeuser?uid={{.ID}}" method="POST"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <button type="submit"> Remove </button> + </form> + </td> + </tr> +{{end}} +</table> +{{else}} +<div class="no-data-found">No data found</div> +{{end}} + +<div class="page-title"> Add user </div> +<form class="search-form" action="/list/{{.List.ID}}" method="GET"> + <span class="post-form-field"> + <label for="query"> Query </label> + <input id="query" name="q" value="{{.Q}}"> + </span> + <button type="submit"> Search </button> +</form> + +{{if .Q}} +{{if .SearchAccounts}} +<table> +{{range .SearchAccounts}} + <tr> + <td> {{template "userlistitem.tmpl" (WithContext . $.Ctx)}} </td> + <td> + <form class="user-list-action" action="/list/{{$.Data.List.ID}}/adduser?uid={{.ID}}" method="POST"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <button type="submit"> Add </button> + </form> + </td> + </tr> +{{end}} +</table> +{{else}} +<div class="no-data-found">No data found</div> +{{end}} +{{end}} + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/mute.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/mute.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/mute.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/mute.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,29 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Mute {{.User.Acct}} </div> + +<form action="/mute/{{.User.ID}}" method="POST"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <div class="settings-form-field"> + <input id="notifications" name="notifications" type="checkbox" value="true" checked> + <label for="notifications"> Mute notifications </label> + </div> + <div class="settings-form-field"> + <label for="duration"> Auto unmute </label> + <select id="duration" name="duration"> + <option value="0" selected>Disabled</option> + <option value="300">After 5m</option> + <option value="1800">After 30m</option> + <option value="3600">After 1h</option> + <option value="21600">After 6h</option> + <option value="86400">After 1d</option> + <option value="259200">After 3d</option> + <option value="604800">After 7d</option> + </select> + </div> + <button type="submit"> Mute </button> +</form> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/nav.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/nav.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/nav.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/nav.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,40 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="user-info"> + <div class="user-info-img-container"> + <a class="img-link" href="/timeline/home" title="Home (1)"> + <img class="user-info-img" src="{{.User.Avatar}}" alt="profile-avatar" height="64" /> + </a> + </div> + <div class="user-info-details-container"> + <div class="user-info-details-name"> + <bdi class="status-dname"> {{EmojiFilter (HTML .User.DisplayName) .User.Emojis | Raw}} </bdi> + <a class="nav-link" href="/user/{{.User.ID}}" accesskey="0" title="User profile (0)"> + <span class="status-uname"> @{{.User.Acct}} </span> + </a> + </div> + <div class="user-info-details-nav"> + <a class="nav-link" href="/timeline/home" accesskey="1" title="Home timeline (1)">home</a> + <a class="nav-link" href="/timeline/direct" accesskey="2" title="Direct timeline (2)">direct</a> + <a class="nav-link" href="/timeline/local" accesskey="3" title="Local timeline (3)">local</a> + <a class="nav-link" href="/timeline/twkn" accesskey="4" title="The Whole Known Netwwork (4)">twkn</a> + <a class="nav-link" href="/timeline/remote" accesskey="5" title="Remote timeline (5)">remote</a> + <a class="nav-link" href="/search" accesskey="6" title="Search (6)">search</a> + </div> + <div> + <a class="nav-link" href="/lists" accesskey="7" title="Lists (7)">lists</a> + <a class="nav-link" href="/settings" target="_top" accesskey="8" title="Settings (8)">settings</a> + <form class="signout" action="/signout" method="post" target="_top"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="signout" class="btn-link nav-link" title="Signout"> + </form> + <a class="nav-link" href="/about" accesskey="9" title="About (9)">about</a> + </div> + </div> +</div> + +{{template "postform.tmpl" (WithContext .PostContext $.Ctx)}} + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/notification.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/notification.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/notification.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/notification.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,128 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title-container"> + <span class="page-title"> + Notifications + {{if and (not $.Ctx.AntiDopamineMode) (gt .UnreadCount 0)}} + ({{.UnreadCount }}) + {{end}} + </span> + <a class="page-refresh" href="/notifications" target="_self" accesskey="R" title="Refresh (R)">refresh</a> + {{if .ReadID}} + <form class="notification-read" action="/notifications/read?max_id={{.ReadID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="read" class="btn-link" accesskey="C" title="Clear unread notifications (C)"> + </form> + {{end}} +</div> + +{{range .Notifications}} +<div class="notification-container {{.Type}} {{if .Pleroma}}{{if not .Pleroma.IsSeen}}unread{{end}}{{end}}"> + {{if eq .Type "follow"}} + <div class="notification-follow-container"> + <div class="status-profile-img-container"> + <a class="img-link" href="/user/{{.Account.ID}}"> + <img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="profile-avatar" height="48" /> + </a> + </div> + <div class="notification-follow"> + <div class="notification-info-text"> + <bdi class="status-dname"> {{EmojiFilter (HTML .Account.DisplayName) .Account.Emojis | Raw}} </bdi> + <span class="notification-text"> followed you - + <time datetime="{{FormatTimeRFC3339 .CreatedAt}}" title="{{FormatTimeRFC822 .CreatedAt}}">{{TimeSince .CreatedAt}}</time> + </span> + </div> + <div> + <a href="/user/{{.Account.ID}}"> <span class="status-uname"> @{{.Account.Acct}} </span> </a> + </div> + </div> + </div> + + {{else if eq .Type "follow_request"}} + <div class="notification-follow-container"> + <div class="status-profile-img-container"> + <a class="img-link" href="/user/{{.Account.ID}}"> + <img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="profile-avatar" height="48" /> + </a> + </div> + <div class="notification-follow"> + <div class="notification-info-text"> + <bdi class="status-dname"> {{EmojiFilter (HTML .Account.DisplayName) .Account.Emojis | Raw}} </bdi> + <span class="notification-text"> wants to follow you - + <time datetime="{{FormatTimeRFC3339 .CreatedAt}}" title="{{FormatTimeRFC822 .CreatedAt}}">{{TimeSince .CreatedAt}}</time> + </span> + </div> + <div> + <a href="/user/{{.Account.ID}}"> <span class="status-uname"> @{{.Account.Acct}} </span> </a> + </div> + <form class="d-inline" action="/accept/{{.Account.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="accept" class="btn-link"> + </form> + - + <form class="d-inline" action="/reject/{{.Account.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="reject" class="btn-link"> + </form> + </div> + </div> + + {{else if eq .Type "mention"}} + {{template "status" (WithContext .Status $.Ctx)}} + + {{else if eq .Type "reblog"}} + <div class="retweet-info"> + <a class="img-link" href="/user/{{.Account.ID}}"> + <img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="avatar" height="48" /> + </a> + <a href="/user/{{.Account.ID}}"> + <span class="status-uname"> @{{.Account.Acct}} </span> + </a> + <span class="notification-text"> retweeted your post - + <time datetime="{{FormatTimeRFC3339 .CreatedAt}}" title="{{FormatTimeRFC822 .CreatedAt}}">{{TimeSince .CreatedAt}}</time> + </span> + </div> + {{template "status" (WithContext .Status $.Ctx)}} + + {{else if eq .Type "favourite"}} + <div class="retweet-info"> + <a class="img-link" href="/user/{{.Account.ID}}"> + <img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="avatar" height="48" /> + </a> + <a href="/user/{{.Account.ID}}"> + <span class="status-uname"> @{{.Account.Acct}} </span> + </a> + <span class="notification-text"> liked your post - + <time datetime="{{FormatTimeRFC3339 .CreatedAt}}" title="{{FormatTimeRFC822 .CreatedAt}}">{{TimeSince .CreatedAt}}</time> + </span> + </div> + {{template "status" (WithContext .Status $.Ctx)}} + + {{else}} + <div class="retweet-info"> + <a class="img-link" href="/user/{{.Account.ID}}"> + <img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="avatar" height="48" /> + </a> + <a href="/user/{{.Account.ID}}"> + <span class="status-uname"> @{{.Account.Acct}} </span> + </a> + <span class="notification-text"> {{.Type}} - + <time datetime="{{FormatTimeRFC3339 .CreatedAt}}" title="{{FormatTimeRFC822 .CreatedAt}}">{{TimeSince .CreatedAt}}</time> + </span> + </div> + {{if .Status}}{{template "status" (WithContext .Status $.Ctx)}}{{end}} + {{end}} +</div> +{{end}} + +<div class="pagination"> + {{if .NextLink}} + <a href="{{.NextLink}}" target="_self">[next]</a> + {{end}} +</div> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/postform.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/postform.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/postform.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/postform.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,51 @@ +{{with .Data}} +<form class="post-form" action="/post" method="POST" enctype="multipart/form-data" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + {{if .ReplyContext}} + <input type="hidden" name="reply_to_id" value="{{.ReplyContext.InReplyToID}}" /> + <input type="hidden" name="quickreply" value="{{.ReplyContext.QuickReply}}" /> + <label for="post-content" class="post-form-title"> Reply to @{{.ReplyContext.InReplyToName}} </label> + {{else}} + <label for="post-content" class="post-form-title"> New post </label> + {{end}} + <a class="post-form-emoji-link" href="/emojis" target="_blank" title="Emoji list (L)" accesskey="L"> + emoji list + </a> + <div class="post-form-content-container"> + <textarea id="post-content" name="content" class="post-content" cols="34" rows="5" accesskey="E" title="Edit post (E)">{{if .ReplyContext}}{{.ReplyContext.ReplyContent}}{{end}}</textarea> + </div> + <div> + {{if .Formats}} + <span class="post-form-field"> + {{$defFormat := .DefaultFormat}} + <select id="post-format" name="format" accesskey="F" title="Format (F)"> + {{range .Formats}} + <option value="{{.Type}}" {{if eq $defFormat .Type}}selected{{end}}>{{.Name}}</option> + {{end}} + </select> + </span> + {{end}} + <span class="post-form-field"> + <select id="post-visilibity" name="visibility" {{if .ReplyContext}}{{if .ReplyContext.ForceVisibility}}disabled{{end}}{{end}} accesskey="S" title="Scope (S)"> + <option value="public" {{if eq .DefaultVisibility "public"}}selected{{end}}>Public</option> + <option value="unlisted" {{if eq .DefaultVisibility "unlisted"}}selected{{end}}>Unlisted</option> + <option value="private" {{if eq .DefaultVisibility "private"}}selected{{end}}>Private</option> + <option value="direct" {{if eq .DefaultVisibility "direct"}}selected{{end}}>Direct</option> + </select> + </span> + <span class="post-form-field"> + <input type="checkbox" id="nsfw-checkbox" name="is_nsfw" value="true" accesskey="N" title="NSFW (N)"> + <label for="nsfw-checkbox"> NSFW </label> + </span> + </div> + <div> + <span class="post-form-field"> + <input id="post-file-picker" type="file" name="attachments" multiple accesskey="A" title="Attachments (A)"> + </span> + </div> + <button type="submit" accesskey="P" title="Post (P)"> Post </button> + <button type="reset" title="Reset"> Reset </button> +</form> +{{end}} + diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/quickreply.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/quickreply.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/quickreply.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/quickreply.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,12 @@ +{{with $s := .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Quick Reply </div> + +{{if .Ancestor}} +{{template "status.tmpl" (WithContext .Ancestor $.Ctx)}} +{{end}} +{{template "status.tmpl" (WithContext .Status $.Ctx)}} +{{template "postform.tmpl" (WithContext $s.PostContext $.Ctx)}} + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/requestlist.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/requestlist.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/requestlist.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/requestlist.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,36 @@ +{{with .Data}} +<div> + {{range .}} + <div class="user-list-item"> + <div class="user-list-profile-img"> + <a class="img-link" href="/user/{{.ID}}"> + <img class="status-profile-img" src="{{.Avatar}}" title="@{{.Acct}}" alt="avatar" height="48" /> + </a> + </div> + <div class="user-list-name"> + <div> + <div class="status-dname"> {{EmojiFilter (HTML .DisplayName) .Emojis | Raw}} </div> + <a class="img-link" href="/user/{{.ID}}"> + <div class="status-uname"> @{{.Acct}} </div> + </a> + </div> + <form class="d-inline" action="/accept/{{.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="accept" class="btn-link"> + </form> + - + <form class="d-inline" action="/reject/{{.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="reject" class="btn-link"> + </form> + </div> + </div> + {{else}} + <div class="no-data-found">No data found</div> + {{end}} +</div> +{{else}} +<div class="no-data-found">No data found</div> +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/retweetedby.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/retweetedby.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/retweetedby.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/retweetedby.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,8 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Retweeted By </div> + +{{template "userlist.tmpl" (WithContext .Users $.Ctx)}} + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/root.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/root.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/root.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/root.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,17 @@ +{{with .Data}} +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <link rel="icon" type="image/png" href="/static/favicon.png"> + <title>{{.Title}}</title> +</head> +<frameset cols="424px,*"> + <frameset rows="316px,*"> + <frame name="nav" src="/nav"> + <frame name="notification" src="/notifications"> + </frameset> + <frame name="main" src="/timeline/home"> +</frameset> +</html> +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/search.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/search.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/search.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/search.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,39 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Search </div> + +<form class="search-form" action="/search" method="GET"> + <span class="post-form-field"> + <label for="query"> Query </label> + <input id="query" name="q" value="{{.Q}}"> + </span> + <span class="post-form-field"> + <label for="type"> Type </label> + <select id="type" name="type"> + <option value="statuses" {{if eq .Type "statuses"}}selected{{end}}>Statuses</option> + <option value="accounts" {{if eq .Type "accounts"}}selected{{end}}>Accounts</option> + </select> + </span> + <button type="submit"> Search </button> +</form> + +{{if eq .Type "statuses"}} +{{range .Statuses}} +{{template "status.tmpl" (WithContext . $.Ctx)}} +{{else}} +{{if .Q}}<div class="no-data-found">No data found</div>{{end}} +{{end}} +{{end}} + +{{if eq .Type "accounts"}} +{{template "userlist.tmpl" (WithContext .Users $.Ctx)}} +{{end}} + +<div class="pagination"> + {{if .NextLink}} + <a href="{{.NextLink}}">[next]</a> + {{end}} +</div> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/settings.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/settings.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/settings.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/settings.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,83 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Settings </div> + +<form id="settings-form" action="/settings" method="POST"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + {{if .PostFormats}} + <div class="settings-form-field"> + <label for="post-format"> Default format </label> + {{$defFormat := .Settings.DefaultFormat}} + <select id="post-format" name="format"> + {{range .PostFormats}} + <option value="{{.Type}}" {{if eq $defFormat .Type}}selected{{end}}>{{.Name}}</option> + {{end}} + </select> + </div> + {{end}} + <div class="settings-form-field"> + <label for="visibility"> Default scope </label> + <select id="visibility" name="visibility"> + <option value="public" {{if eq .Settings.DefaultVisibility "public"}}selected{{end}}>Public</option> + <option value="unlisted" {{if eq .Settings.DefaultVisibility "unlisted"}}selected{{end}}>Unlisted</option> + <option value="private" {{if eq .Settings.DefaultVisibility "private"}}selected{{end}}>Private</option> + <option value="direct" {{if eq .Settings.DefaultVisibility "direct"}}selected{{end}}>Direct</option> + </select> + </div> + <div class="settings-form-field"> + <label for="notification-interval"> Refresh Notifications </label> + <select id="notification-interval" name="notification_interval"> + <option value="0" {{if eq .Settings.NotificationInterval 0}}selected{{end}}>Disabled</option> + <option value="30" {{if eq .Settings.NotificationInterval 30}}selected{{end}}>After 30s</option> + <option value="60" {{if eq .Settings.NotificationInterval 60}}selected{{end}}>After 1m</option> + <option value="120" {{if eq .Settings.NotificationInterval 120}}selected{{end}}>After 2m</option> + <option value="300" {{if eq .Settings.NotificationInterval 300}}selected{{end}}>After 5m</option> + <option value="600" {{if eq .Settings.NotificationInterval 600}}selected{{end}}>After 10m</option> + </select> + </div> + <div class="settings-form-field"> + <input id="copy-scope" name="copy_scope" type="checkbox" value="true" {{if .Settings.CopyScope}}checked{{end}}> + <label for="copy-scope"> Copy scope when replying </label> + </div> + <div class="settings-form-field"> + <input id="thread-tab" name="thread_in_new_tab" type="checkbox" value="true" {{if .Settings.ThreadInNewTab}}checked{{end}}> + <label for="thread-tab"> Open threads in new tab from timeline </label> + </div> + <div class="settings-form-field"> + <input id="hide-attachments" name="hide_attachments" type="checkbox" value="true" {{if .Settings.HideAttachments}}checked{{end}}> + <label for="hide-attachments"> Hide attachments </label> + </div> + <div class="settings-form-field"> + <input id="mask-nsfw" name="mask_nsfw" type="checkbox" value="true" {{if .Settings.MaskNSFW}}checked{{end}}> + <label for="mask-nsfw"> Mask NSFW attachments </label> + </div> + <div class="settings-form-field"> + <input id="fluoride-mode" name="fluoride_mode" type="checkbox" value="true" {{if .Settings.FluorideMode}}checked{{end}}> + <label for="fluoride-mode"> Enable <abbr title="Enable JavaScript based functionality, e.g., like/retweet without page reload and reply preview on thread page">fluoride mode</abbr> </label> + </div> + <div class="settings-form-field"> + <input id="anti-dopamine-mode" name="anti_dopamine_mode" type="checkbox" + value="true" {{if .Settings.AntiDopamineMode}}checked{{end}}> + <label for="anti-dopamine-mode"> Enable <abbr title="Remove like/retweet/unread notification count and disable like/retweet/follow notifications">anti-dopamine mode</abbr> </label> + </div> + <div class="settings-form-field"> + <input id="hide-unsupported-notifs" name="hide_unsupported_notifs" type="checkbox" + value="true" {{if .Settings.HideUnsupportedNotifs}}checked{{end}}> + <label for="hide-unsupported-notifs"> Hide unsupported notifications </label> + </div> + <div class="settings-form-field"> + <input id="dark-mode" name="dark_mode" type="checkbox" value="true" {{if .Settings.DarkMode}}checked{{end}}> + <label for="dark-mode"> Use dark theme </label> + </div> + <div class="settings-form-field"> + <label for="css"> Custom CSS: </label> + </div> + <div> + <textarea id="css" name="css" cols="80" rows="8">{{.Settings.CSS}}</textarea> + </div> + <button type="submit"> Save </button> +</form> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/signin.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/signin.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/signin.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/signin.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,23 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Bloat </div> +<div class="signin-desc"> + A web client for <a href="https://pleroma.social" target="_blank">Mastadon Network</a>. +</div> + +<form class="signin-form" action="/signin" method="post"> + Enter the domain name of your instance to continue + <br/> + <input type="text" name="instance" placeholder="example.com" required> + <br/> + <button type="submit"> Signin </button> +</form> + +<p> + See + <a href="https://git.freesoftwareextremist.com/bloat" target="_blank">git.freesoftwareextremist.com/bloat</a> + for more details. +</P> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/status.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/status.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/status.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/status.tmpl" 2024-11-23 19:54:47.193882400 +0000 @@ -0,0 +1,245 @@ +{{with .Data}} +<div id="status-{{.ID}}" class="status-container-container"> + {{if .Reblog}} + <div class="retweet-info"> + <a class="img-link" href="/user/{{.Account.ID}}"> + <img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="avatar" height="24" /> + </a> + <bdi class="status-dname"> {{EmojiFilter (HTML .Account.DisplayName) .Account.Emojis | Raw}} </bdi> + <a href="/user/{{.Account.ID}}"> + <span class="status-uname"> @{{.Account.Acct}} </span> + </a> + retweeted + </div> + {{template "status" (WithContext .Reblog $.Ctx)}} + {{else}} + {{block "status" (WithContext . $.Ctx)}} + {{with $s := .Data}} + <div class="status-container status-{{.ID}}" data-id="{{.ID}}"> + <div class="status-profile-img-container"> + <a class="img-link" href="/user/{{.Account.ID}}"> + <img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="avatar" height="48" /> + </a> + </div> + <div class="status"> + <div class="status-name"> + <bdi class="status-dname"> {{EmojiFilter (HTML .Account.DisplayName) .Account.Emojis | Raw}} </bdi> + <a href="/user/{{.Account.ID}}"> + <span class="status-uname"> @{{.Account.Acct}} </span> + </a> + <div class="more-container"> + <div class="remote-link"> + {{if .IDNumbers}}#{{index .IDNumbers .ID}}{{end}} {{.Visibility}} + </div> + <div class="more-content"> + <a class="more-link" href="{{.URL}}" target="_blank"> + source + </a> + <a class="more-link" href="/quickreply/{{.ID}}#status-{{.ID}}"> + quickreply + </a> + {{if .Muted}} + <form action="/unmuteconv/{{.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="unmute" class="btn-link more-link"> + </form> + {{else}} + <form action="/muteconv/{{.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="mute" class="btn-link more-link"> + </form> + {{end}} + {{if .Bookmarked}} + <form action="/unbookmark/{{.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="hidden" name="retweeted_by_id" value="{{.RetweetedByID}}"> + <input type="submit" value="unbookmark" class="btn-link more-link"> + </form> + {{else}} + <form action="/bookmark/{{.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="hidden" name="retweeted_by_id" value="{{.RetweetedByID}}"> + <input type="submit" value="bookmark" class="btn-link more-link"> + </form> + {{end}} + {{if eq $.Ctx.UserID .Account.ID}} + <form action="/delete/{{.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="delete" class="btn-link more-link"> + </form> + {{end}} + </div> + </div> + </div> + <div class="status-reply-container"> + {{if .InReplyToID}} + <a class="status-reply-to-link" href="{{if not .ShowReplies}}/thread/{{.InReplyToID}}{{end}}#status-{{.InReplyToID}}"> + in reply to {{if .IDNumbers}}#{{index .IDNumbers .InReplyToID}}{{end}} {{if .Pleroma.InReplyToAccountAcct}}@{{.Pleroma.InReplyToAccountAcct}}{{else if not .IDNumbers}}{{.InReplyToID}}{{end}} + </a> + {{if index .IDReplies .ID}} <span class="status-reply-info-divider"> - </span> {{end}} + {{end}} + {{if .ShowReplies}} + {{if index .IDReplies .ID}} <span class="status-reply-text"> replies: </span> {{end}} + {{range index .IDReplies .ID}} + <a class="status-reply-link" href="#status-{{.ID}}">#{{.Number}}</a> + {{end}} + {{end}} + </div> + {{if (or .Content .SpoilerText)}} + <div class="status-content"> + {{if .SpoilerText}}{{EmojiFilter (HTML .SpoilerText) .Emojis | Raw}}<br/>{{end}} + {{StatusContentFilter .Content .Emojis .Mentions | Raw}} + </div> + {{end}} + {{if .MediaAttachments}} + <div class="status-media-container"> + {{range .MediaAttachments}} + + {{if eq .Type "image"}} + {{if $.Ctx.HideAttachments}} + <a href="{{.URL}}" target="_blank"> + [image{{if $s.Sensitive}}/nsfw{{end}}{{if .Description}}: {{.Description}}{{end}}] + </a> + {{else}} + <a class="img-link" href="{{.URL}}" target="_blank" title="{{.Description}}"> + <img class="status-image" src="{{.PreviewURL}}" alt="status-image" height="240" /> + {{if (and $.Ctx.MaskNSFW $s.Sensitive)}} + <div class="status-nsfw-overlay"></div> + {{end}} + </a> + {{end}} + + {{else if eq .Type "audio"}} + {{if $.Ctx.HideAttachments}} + <a href="{{.URL}}" target="_blank"> + [audio{{if $s.Sensitive}}/nsfw{{end}}{{if .Description}}: {{.Description}}{{end}}] + </a> + {{else}} + <audio class="status-audio" controls title="{{.Description}}"> + <source src="{{.URL}}"> + <a href="{{.URL}}" target="_blank"> [audio] </a> + </audio> + {{end}} + + {{else if eq .Type "video"}} + {{if $.Ctx.HideAttachments}} + <a href="{{.URL}}" target="_blank"> + [video{{if $s.Sensitive}}/nsfw{{end}}{{if .Description}}: {{.Description}}{{end}}] + </a> + {{else}} + <div class="status-video-container" title="{{.Description}}"> + <video class="status-video" controls height="240"> + <source src="{{.URL}}"> + <a href="{{.URL}}" target="_blank"> [video] </a> + </video> + {{if (and $.Ctx.MaskNSFW $s.Sensitive)}} + <div class="status-nsfw-overlay"></div> + {{end}} + </div> + {{end}} + + {{else}} + <a href="{{.URL}}" target="_blank"> + [attachment{{if $s.Sensitive}}/nsfw{{end}}{{if .Description}}: {{.Description}}{{end}}] + </a> + {{end}} + {{end}} + </div> + {{end}} + {{if .Poll}} + <form class="poll-form" action="/vote/{{.Poll.ID}}" method="POST" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="hidden" name="status_id" value="{{$s.ID}}"> + {{range $i, $o := .Poll.Options}} + <div class="poll-option"> + {{if (or $s.Poll.Expired $s.Poll.Voted)}} + <div> {{EmojiFilter (HTML $o.Title) $s.Emojis | Raw}} - {{$o.VotesCount}} votes </div> + {{else}} + <input type="{{if $s.Poll.Multiple}}checkbox{{else}}radio{{end}}" name="choices" + id="poll-{{$s.ID}}-{{$i}}" value="{{$i}}"> + <label for="poll-{{$s.ID}}-{{$i}}"> + {{EmojiFilter (HTML $o.Title) $s.Emojis | Raw}} + </label> + {{end}} + </div> + {{end}} + {{if not (or .Poll.Expired .Poll.Voted)}} + <button type="submit"> Vote </button> + {{end}} + <div class="poll-info"> + <span>{{.Poll.VotesCount}} votes</span> + {{if .Poll.Expired}} + <span> - poll expired </span> + {{else if .Poll.ExpiresAt}} + <span> + - poll ends in + <time datetime="{{FormatTimeRFC3339 .Poll.ExpiresAt}}" title="{{FormatTimeRFC822 .Poll.ExpiresAt}}"> + {{TimeUntil .Poll.ExpiresAt}} + </time> + </span> + {{end}} + </div> + </form> + {{end}} + <div class="status-action-container"> + <div class="status-action"> + <a href="/thread/{{.ID}}?reply=true#status-{{.ID}}"> + reply + </a> + <a class="status-reply-count" href="/thread/{{.ID}}#status-{{.ID}}" {{if $.Ctx.ThreadInNewTab}}target="_blank"{{end}}> + {{if and (not $.Ctx.AntiDopamineMode) .RepliesCount}} + ({{DisplayInteractionCount .RepliesCount}}) + {{end}} + </a> + </div> + <div class="status-action"> + {{$rt := "retweet"}} {{if .Reblogged}} {{$rt = "unretweet"}} {{end}} + <form class="status-retweet" data-action="{{$rt}}" action="/{{$rt}}/{{.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="hidden" name="retweeted_by_id" value="{{.RetweetedByID}}"> + <input type="submit" value="{{$rt}}" class="btn-link" + {{if or (eq .Visibility "private") (eq .Visibility "direct")}}title="this status cannot be retweeted" disabled{{end}}> + <a class="status-retweet-count" href="/retweetedby/{{.ID}}" title="click to see the the list"> + {{if and (not $.Ctx.AntiDopamineMode) .ReblogsCount}} + ({{DisplayInteractionCount .ReblogsCount}}) + {{end}} + </a> + </form> + </div> + <div class="status-action"> + {{$like := "like"}} {{if .Favourited}} {{$like = "unlike"}} {{end}} + <form class="status-like" data-action="{{$like}}" action="/{{$like}}/{{.ID}}" method="post" target="_self"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="hidden" name="retweeted_by_id" value="{{.RetweetedByID}}"> + <input type="submit" value="{{$like}}" class="btn-link"> + <a class="status-like-count" href="/likedby/{{.ID}}" title="click to see the the list"> + {{if and (not $.Ctx.AntiDopamineMode) .FavouritesCount}} + ({{DisplayInteractionCount .FavouritesCount}}) + {{end}} + </a> + </form> + </div> + <div class="status-action status-action-last"> + <a class="status-time" href="{{if not .ShowReplies}}/thread/{{.ID}}{{end}}#status-{{.ID}}" + {{if $.Ctx.ThreadInNewTab}}target="_blank"{{end}}> + <time datetime="{{FormatTimeRFC3339 .CreatedAt.Time}}" title="{{FormatTimeRFC822 .CreatedAt.Time}}"> + {{TimeSince .CreatedAt.Time}} + </time> + </a> + </div> + </div> + </div> + </div> + {{end}} + {{end}} + {{end}} +</div> +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/thread.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/thread.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/thread.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/thread.tmpl" 2024-11-23 19:54:47.197882405 +0000 @@ -0,0 +1,18 @@ +{{with $s := .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title-container"> + <span class="page-title"> Thread </span> + <a class="page-refresh" href="{{$.Ctx.Referrer}}" accesskey="T" title="Refresh (T)">refresh</a> +</div> + +{{range .Statuses}} + +{{template "status.tmpl" (WithContext . $.Ctx)}} +{{if $s.PostContext.ReplyContext}}{{if eq .ID $s.PostContext.ReplyContext.InReplyToID}} +{{template "postform.tmpl" (WithContext $s.PostContext $.Ctx)}} +{{end}}{{end}} + +{{end}} + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/timeline.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/timeline.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/timeline.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/timeline.tmpl" 2024-11-23 19:54:47.197882405 +0000 @@ -0,0 +1,32 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title-container"> + <span class="page-title"> {{.Title}} </span> + <a class="page-refresh" href="{{$.Ctx.Referrer}}" accesskey="T" title="Refresh (T)">refresh</a> +</div> + +{{if eq .Type "remote"}} +<form class="search-form" action="/timeline/remote" method="GET"> + <span class="post-form-field"> + <label for="instance"> Instance </label> + <input id="instance" name="instance" value="{{.Instance}}"> + </span> + <button type="submit"> Submit </button> +</form> +{{end}} + +{{range .Statuses}} +{{template "status.tmpl" (WithContext . $.Ctx)}} +{{end}} + +<div class="pagination"> + {{if .PrevLink}} + <a href="{{.PrevLink}}">[prev]</a> + {{end}} + {{if .NextLink}} + <a href="{{.NextLink}}">[next]</a> + {{end}} +</div> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlistitem.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlistitem.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlistitem.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlistitem.tmpl" 2024-11-23 19:54:47.197882405 +0000 @@ -0,0 +1,15 @@ +{{with .Data}} +<div class="user-list-item"> + <div class="user-list-profile-img"> + <a class="img-link" href="/user/{{.ID}}"> + <img class="status-profile-img" src="{{.Avatar}}" title="@{{.Acct}}" alt="avatar" height="48" /> + </a> + </div> + <div class="user-list-name"> + <div class="status-dname"> {{EmojiFilter (HTML .DisplayName) .Emojis | Raw}} </div> + <a class="img-link" href="/user/{{.ID}}"> + <div class="status-uname"> @{{.Acct}} </div> + </a> + </div> +</div> +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlist.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlist.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlist.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlist.tmpl" 2024-11-23 19:54:47.197882405 +0000 @@ -0,0 +1,11 @@ +{{with .Data}} +<div> + {{range .}} + {{template "userlistitem.tmpl" (WithContext . $.Ctx)}} + {{else}} + <div class="no-data-found">No data found</div> + {{end}} +</div> +{{else}} +<div class="no-data-found">No data found</div> +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/usersearch.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/usersearch.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/usersearch.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/usersearch.tmpl" 2024-11-23 19:54:47.197882405 +0000 @@ -0,0 +1,26 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> Search {{EmojiFilter (HTML .User.DisplayName) .User.Emojis | Raw}}'s statuses </div> + +<form class="search-form" action="/usersearch/{{.User.ID}}" method="GET"> + <span class="post-form-field"> + <label for="query"> Query </label> + <input id="query" name="q" value="{{.Q}}"> + </span> + <button type="submit"> Search </button> +</form> + +{{range .Statuses}} +{{template "status.tmpl" (WithContext . $.Ctx)}} +{{else}} +{{if .Q}}<div class="no-data-found">No data found</div>{{end}} +{{end}} + +<div class="pagination"> + {{if .NextLink}} + <a href="{{.NextLink}}">[next]</a> + {{end}} +</div> + +{{template "footer.tmpl"}} +{{end}} diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/user.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/user.tmpl" --- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/user.tmpl" 1970-01-01 00:00:00.000000000 +0000 +++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/user.tmpl" 2024-11-23 19:54:47.197882405 +0000 @@ -0,0 +1,195 @@ +{{with .Data}} +{{template "header.tmpl" (WithContext .CommonData $.Ctx)}} +<div class="page-title"> User </div> + +<div class="user-info-container"> +<div> + <div class="user-profile-img-container"> + <a class="img-link" href="{{.User.Avatar}}" target="_blank"> + <img class="user-profile-img" src="{{.User.Avatar}}" alt="profile-avatar" height="96" /> + </a> + </div> + <div class="user-profile-details-container"> + <div> + <bdi class="status-dname"> {{EmojiFilter (HTML .User.DisplayName) .User.Emojis | Raw}} </bdi> + <span class="status-uname"> @{{.User.Acct}} </span> + <a class="remote-link" href="{{.User.URL}}" target="_blank" title="remote profile"> + source + </a> + </div> + {{if not .IsCurrent}} + <div> + <span> {{if .User.Pleroma.Relationship.FollowedBy}} follows you - {{end}} </span> + {{if .User.Pleroma.Relationship.BlockedBy}} blocks you - {{end}} + {{if .User.Pleroma.Relationship.Following}} + <form class="d-inline" action="/unfollow/{{.User.ID}}" method="post"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="unfollow" class="btn-link"> + </form> + {{else}} + <form class="d-inline" action="/follow/{{.User.ID}}" method="post"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="{{if .User.Pleroma.Relationship.Requested}}resend request{{else}}follow{{end}}" class="btn-link"> + </form> + {{end}} + {{if .User.Pleroma.Relationship.Requested}} + - + <form class="d-inline" action="/unfollow/{{.User.ID}}" method="post"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="cancel request" class="btn-link"> + </form> + {{end}} + - + {{if .User.Pleroma.Relationship.Subscribing}} + <form class="d-inline" action="/unsubscribe/{{.User.ID}}" method="post"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="unsubscribe" class="btn-link"> + </form> + {{else}} + <form class="d-inline" action="/subscribe/{{.User.ID}}" method="post"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="subscribe" class="btn-link"> + </form> + {{end}} + </div> + <div> + {{if .User.Pleroma.Relationship.Blocking}} + <form class="d-inline" action="/unblock/{{.User.ID}}" method="post"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="unblock" class="btn-link"> + </form> + {{else}} + <form class="d-inline" action="/block/{{.User.ID}}" method="post"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="block" class="btn-link"> + </form> + {{end}} + - + {{if .User.Pleroma.Relationship.Muting}} + <form class="d-inline" action="/unmute/{{.User.ID}}" method="post"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="unmute" class="btn-link"> + </form> + {{else}} + <a href="/mute/{{.User.ID}}"> mute </a> + {{end}} + {{if .User.Pleroma.Relationship.Following}} + - + {{if .User.Pleroma.Relationship.ShowingReblogs}} + <form class="d-inline" action="/follow/{{.User.ID}}?reblogs=false" method="post"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="hide retweets" class="btn-link"> + </form> + {{else}} + <form class="d-inline" action="/follow/{{.User.ID}}" method="post"> + <input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}"> + <input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}"> + <input type="submit" value="show retweets" class="btn-link"> + </form> + {{end}} + {{end}} + </div> + {{end}} + <div> + <a href="/user/{{.User.ID}}"> statuses ({{.User.StatusesCount}}) </a> - + <a href="/user/{{.User.ID}}/following"> following ({{.User.FollowingCount}}) </a> - + <a href="/user/{{.User.ID}}/followers"> followers ({{.User.FollowersCount}}) </a> - + <a href="/user/{{.User.ID}}/media"> media </a> + </div> + {{if .IsCurrent}} + <div> + <a href="/user/{{.User.ID}}/bookmarks"> bookmarks </a> + - <a href="/user/{{.User.ID}}/likes"> likes </a> + - <a href="/user/{{.User.ID}}/mutes"> mutes </a> + - <a href="/user/{{.User.ID}}/blocks"> blocks </a> + {{if .User.Locked}}- <a href="/user/{{.User.ID}}/requests"> requests </a>{{end}} + </div> + {{end}} + <div> + <a href="/usersearch/{{.User.ID}}"> search statuses </a> + {{if .IsCurrent}} - <a href="/filters"> filters </a> {{end}} + </div> + </div> + <div class="user-profile-decription"> + {{EmojiFilter .User.Note .User.Emojis | Raw}} + </div> + {{if .User.Fields}} + <div class="user-fields"> + {{range .User.Fields}} + <div>{{EmojiFilter .Name $.Data.User.Emojis | Raw}} - {{EmojiFilter .Value $.Data.User.Emojis | Raw}}</div> + {{end}} + </div> + {{end}} +</div> +</div> + +{{if eq .Type ""}} +<div class="page-title"> Statuses </div> +{{range .Statuses}} +{{template "status.tmpl" (WithContext . $.Ctx)}} +{{else}} +<div class="no-data-found">No data found</div> +{{end}} + +{{else if eq .Type "following"}} +<div class="page-title"> Following </div> +{{template "userlist.tmpl" (WithContext .Users $.Ctx)}} + +{{else if eq .Type "followers"}} +<div class="page-title"> Followers </div> +{{template "userlist.tmpl" (WithContext .Users $.Ctx)}} + +{{else if eq .Type "media"}} +<div class="page-title"> Statuses with media </div> +{{range .Statuses}} +{{template "status.tmpl" (WithContext . $.Ctx)}} +{{else}} +<div class="no-data-found">No data found</div> +{{end}} + +{{else if eq .Type "bookmarks"}} +<div class="page-title"> Bookmarks </div> +{{range .Statuses}} +{{template "status.tmpl" (WithContext . $.Ctx)}} +{{else}} +<div class="no-data-found">No data found</div> +{{end}} + +{{else if eq .Type "likes"}} +<div class="page-title"> Likes </div> +{{range .Statuses}} +{{template "status.tmpl" (WithContext . $.Ctx)}} +{{else}} +<div class="no-data-found">No data found</div> +{{end}} + +{{else if eq .Type "mutes"}} +<div class="page-title"> Mutes </div> +{{template "userlist.tmpl" (WithContext .Users $.Ctx)}} + +{{else if eq .Type "blocks"}} +<div class="page-title"> Blocks </div> +{{template "userlist.tmpl" (WithContext .Users $.Ctx)}} + +{{else if eq .Type "requests"}} +<div class="page-title"> Follow requests </div> +{{template "requestlist.tmpl" (WithContext .Users $.Ctx)}} +{{end}} + +<div class="pagination"> + {{if .NextLink}} + <a href="{{.NextLink}}">[next]</a> + {{end}} +</div> + +{{template "footer.tmpl"}} +{{end}}