Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6c780e5b8f | ||
|
|
1055495e1d | ||
|
|
28c643943f | ||
|
|
e2605dcd54 | ||
|
|
6dad00d41d | ||
|
|
fa37b2c302 |
+1
-1
@@ -3,7 +3,7 @@ internal/database/comfychan.db
|
|||||||
tmp
|
tmp
|
||||||
out
|
out
|
||||||
|
|
||||||
media/
|
/media/
|
||||||
|
|
||||||
# direnv
|
# direnv
|
||||||
.direnv
|
.direnv
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
live/templ:
|
live/templ:
|
||||||
templ generate --watch --proxy="http://localhost:8080" --cmd="go run ./web" --open-browser=false -v
|
templ generate --watch --proxy="http://localhost:7676" --cmd="go run ./web" --open-browser=false -v
|
||||||
|
|
||||||
live/sync_assets:
|
live/sync_assets:
|
||||||
go run github.com/air-verse/air@latest \
|
go run github.com/air-verse/air@latest \
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ CREATE TABLE IF NOT EXISTS bans (
|
|||||||
-- Boards
|
-- Boards
|
||||||
|
|
||||||
INSERT INTO boards (slug, name, tag) VALUES
|
INSERT INTO boards (slug, name, tag) VALUES
|
||||||
('c', 'Comfy', 'Be comfy, fren'),
|
('c', 'Comfy', 'Stay awhile'),
|
||||||
('r', 'Robots', 'Beep, boop'),
|
('r', 'Robots', 'Beep, boop'),
|
||||||
('gn', 'Goon', 'God is watching');
|
('gn', 'Goon', 'God is watching');
|
||||||
|
|
||||||
|
|||||||
@@ -49,12 +49,11 @@ var urlRx = regexp.MustCompile(`(?i)\bhttps?://[^\s<]+`)
|
|||||||
func EnrichPost(body string) string {
|
func EnrichPost(body string) string {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
|
|
||||||
for _, rawLine := range strings.Split(body, "\n") {
|
for rawLine := range strings.SplitSeq(body, "\n") {
|
||||||
var outLine string
|
var outLine string
|
||||||
for i, rawWord := range strings.Split(rawLine, " ") {
|
for i, rawWord := range strings.Split(rawLine, " ") {
|
||||||
var outWord string
|
var outWord string
|
||||||
if strings.HasPrefix(rawWord, ">>") {
|
if postId, ok := strings.CutPrefix(rawWord, ">>"); ok {
|
||||||
postId := strings.TrimPrefix(rawWord, ">>")
|
|
||||||
outWord = fmt.Sprintf(
|
outWord = fmt.Sprintf(
|
||||||
`<a onclick="onReplyLinkClick(event)" onmouseover="highlightPost(%[1]s,event)" `+
|
`<a onclick="onReplyLinkClick(event)" onmouseover="highlightPost(%[1]s,event)" `+
|
||||||
`onmouseleave="highlightPost(%[1]s,event,false)" href="#post-%[1]s" class="reply-link">%[2]s</a>`,
|
`onmouseleave="highlightPost(%[1]s,event,false)" href="#post-%[1]s" class="reply-link">%[2]s</a>`,
|
||||||
|
|||||||
+44
-21
@@ -2,27 +2,28 @@
|
|||||||
:root {
|
:root {
|
||||||
--bg-main: #1d1f21;
|
--bg-main: #1d1f21;
|
||||||
--text-color: #c5c8c6;
|
--text-color: #c5c8c6;
|
||||||
--text-muted: #81a2be;
|
--text-muted: #85a28a;
|
||||||
--brand-red: #c5c8c6;
|
--brand-green: #4e5f3f;
|
||||||
|
--brand-yellow: #db9f12;
|
||||||
|
|
||||||
--form-header-bg: #282a2e;
|
--form-header-bg: #282a2e;
|
||||||
--border-light: #282a2e;
|
--border-light: #282a2e;
|
||||||
--subject: #b294bb;
|
--subject: #718a5b;
|
||||||
--link-secondary: #81a2be;
|
--link-secondary: #85a28a;
|
||||||
|
|
||||||
--post-bg: #282a2e;
|
--post-bg: #282a2e;
|
||||||
--post-highlight: #D6BAD0;
|
--post-highlight: #D6BAD0;
|
||||||
--post-author: #c5c8c6;
|
--post-author: #c5c8c6;
|
||||||
--greentext: #b5bd68;
|
--greentext: #949055;
|
||||||
|
|
||||||
--reply-link: #81a2be;
|
--reply-link: #85a28a;
|
||||||
--dialog-bg: #EDEFF7;
|
--dialog-bg: #EDEFF7;
|
||||||
|
|
||||||
--danger: #b294bb;
|
--danger: #4e5f3f;
|
||||||
--warning-bg: #b294bb;
|
--warning-bg: #929661;
|
||||||
--black: #000000;
|
--black: #000000;
|
||||||
|
|
||||||
--heading-bg: #b294bb45;
|
--heading-bg: #4e5f3f;
|
||||||
--heading-text: #FFFFFF;
|
--heading-text: #FFFFFF;
|
||||||
--box-bg: #282a2e;
|
--box-bg: #282a2e;
|
||||||
|
|
||||||
@@ -41,6 +42,15 @@ body {
|
|||||||
color: var(--text-color)
|
color: var(--text-color)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
cursor: pointer;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: var(--danger);
|
||||||
|
}
|
||||||
|
|
||||||
/* INDEX */
|
/* INDEX */
|
||||||
|
|
||||||
#clavis {
|
#clavis {
|
||||||
@@ -52,25 +62,16 @@ body {
|
|||||||
/* BOARD LIST */
|
/* BOARD LIST */
|
||||||
|
|
||||||
#boardList {
|
#boardList {
|
||||||
font-size: 12pt;
|
cursor: default;
|
||||||
|
font-size: 14pt;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#boardList a {
|
|
||||||
cursor: pointer;
|
|
||||||
color: var(--text-muted);
|
|
||||||
}
|
|
||||||
|
|
||||||
#boardList a:hover {
|
|
||||||
color: var(--danger);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* BOARD */
|
/* BOARD */
|
||||||
|
|
||||||
.board-header {
|
.board-header {
|
||||||
margin: 25px auto;
|
margin: 25px auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: var(--brand-red);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.board-header h1 {
|
.board-header h1 {
|
||||||
@@ -78,15 +79,19 @@ body {
|
|||||||
font-size: 1.8rem;
|
font-size: 1.8rem;
|
||||||
margin: 8px;
|
margin: 8px;
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
|
color: var(--brand-yellow);
|
||||||
}
|
}
|
||||||
|
|
||||||
.board-header p {
|
.board-header p {
|
||||||
font-size: .8rem;
|
font-size: .8rem;
|
||||||
margin: 4px;
|
margin: 4px;
|
||||||
|
font-style: italic;
|
||||||
|
color: var(--brand-yellow);
|
||||||
}
|
}
|
||||||
|
|
||||||
.board-header img {
|
.board-header img {
|
||||||
width: 300px;
|
width: 300px;
|
||||||
|
height: 100px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.action-bar {
|
.action-bar {
|
||||||
@@ -422,11 +427,29 @@ body {
|
|||||||
background-color: var(--box-bg);
|
background-color: var(--box-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.box h2 {
|
.box-table {
|
||||||
|
font-size: 10pt;
|
||||||
|
border: 1px solid var(--black);
|
||||||
|
background-color: var(--box-bg);
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-table td {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-table tbody tr:nth-child(even) {
|
||||||
|
background-color: color-mix(in srgb, var(--box-bg) 85%, black);
|
||||||
|
}
|
||||||
|
|
||||||
|
.box h2,
|
||||||
|
.box-table th {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background-color: var(--heading-bg);
|
background-color: var(--heading-bg);
|
||||||
color: var(--heading-text);
|
color: var(--heading-text);
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.box p {
|
.box p {
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 213 KiB After Width: | Height: | Size: 64 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.4 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
+26
-2
@@ -4,16 +4,40 @@ import "github.com/dominicf2001/comfychan/web/views/shared"
|
|||||||
|
|
||||||
templ Index() {
|
templ Index() {
|
||||||
@shared.Layout("Comfychan") {
|
@shared.Layout("Comfychan") {
|
||||||
|
<img style="width: 150px; float: right;" src="/static/media/comfychan.png"/>
|
||||||
<section class="container">
|
<section class="container">
|
||||||
<img id="clavis" src="/static/media/clavis.png"/>
|
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<h2>Welcome to Comfychan</h2>
|
<h2>Welcome to Comfychan</h2>
|
||||||
<div>
|
<div>
|
||||||
<p>
|
<p>
|
||||||
<strong>Comfychan</strong> is place to share comfy images and videos.
|
<strong>Comfychan</strong> is place to share comfy images, videos and retardation.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<section style="margin-top: 25px;" class="container">
|
||||||
|
<table class="box-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Board</th>
|
||||||
|
<th>Description</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/c">/c/ - Comfy</a></td>
|
||||||
|
<td>Stay awhile</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/r">/r/ - Robots</a></td>
|
||||||
|
<td>Beep, boop</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/gn">/gn/ - Goon</a></td>
|
||||||
|
<td>God is watching</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user