commit d124d172d461b4c143df53e0edd53a3e99b03929
parent 9fc3bfcaaf12fccf5daa3b917723510df9923486
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 7 Jun 2023 02:21:59 -0700
first version of code modal
Diffstat:
5 files changed, 633 insertions(+), 522 deletions(-)
diff --git a/pkg/web/handlers/api/v1/messages.qtpl b/pkg/web/handlers/api/v1/messages.qtpl
@@ -198,6 +198,28 @@
}
@keyframes i1 { 0% { background-color: #006400; } 32% { background-color: #006400; } 33% { background-color: #626400; } 99% { background-color: #626400; } 100% { background-color: #8b0000; } }
@keyframes i2 { 0% { background-color: #006400; } 32% { background-color: #006400; } 33% { background-color: #626400; } 99% { background-color: #626400; } 100% { background-color: #8b0000; } }
+ .code-modal {
+ display: block;
+ width: calc(100% - 185px - 100px);
+ height: calc(100% - 50px);
+ position: absolute;
+ top: 0;
+ left: calc(50% - ((100% - 185px - 100px)/2) - 92px);
+ background-color: gray;
+ z-index: 999;
+ border-radius: 5px;
+ }
+ .code-modal textarea {
+ position: absolute;
+ top: 10px; left: 10px; right: 10px; bottom: 30px;
+ background-color: rgba(79,79,79,1);
+ color: #fff;
+ border: 1px solid rgba(90,90,90,1);
+ }
+ .code-modal .controls {
+ position: absolute;
+ left: 10px; right: 10px; bottom: 5px;
+ }
</style>
{%- endfunc -%}
diff --git a/pkg/web/handlers/api/v1/messages.qtpl.go b/pkg/web/handlers/api/v1/messages.qtpl.go
@@ -260,88 +260,110 @@ func StreamGenerateStyle(qw422016 *qt422016.Writer, AuthUser *database.User, Dat
}
@keyframes i1 { 0% { background-color: #006400; } 32% { background-color: #006400; } 33% { background-color: #626400; } 99% { background-color: #626400; } 100% { background-color: #8b0000; } }
@keyframes i2 { 0% { background-color: #006400; } 32% { background-color: #006400; } 33% { background-color: #626400; } 99% { background-color: #626400; } 100% { background-color: #8b0000; } }
+ .code-modal {
+ display: block;
+ width: calc(100% - 185px - 100px);
+ height: calc(100% - 50px);
+ position: absolute;
+ top: 0;
+ left: calc(50% - ((100% - 185px - 100px)/2) - 92px);
+ background-color: gray;
+ z-index: 999;
+ border-radius: 5px;
+ }
+ .code-modal textarea {
+ position: absolute;
+ top: 10px; left: 10px; right: 10px; bottom: 30px;
+ background-color: rgba(79,79,79,1);
+ color: #fff;
+ border: 1px solid rgba(90,90,90,1);
+ }
+ .code-modal .controls {
+ position: absolute;
+ left: 10px; right: 10px; bottom: 5px;
+ }
</style>
`)
-//line messages.qtpl:202
+//line messages.qtpl:224
}
-//line messages.qtpl:202
+//line messages.qtpl:224
func WriteGenerateStyle(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMessagesData) {
-//line messages.qtpl:202
+//line messages.qtpl:224
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:202
+//line messages.qtpl:224
StreamGenerateStyle(qw422016, AuthUser, Data)
-//line messages.qtpl:202
+//line messages.qtpl:224
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:202
+//line messages.qtpl:224
}
-//line messages.qtpl:202
+//line messages.qtpl:224
func GenerateStyle(AuthUser *database.User, Data ChatMessagesData) string {
-//line messages.qtpl:202
+//line messages.qtpl:224
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:202
+//line messages.qtpl:224
WriteGenerateStyle(qb422016, AuthUser, Data)
-//line messages.qtpl:202
+//line messages.qtpl:224
qs422016 := string(qb422016.B)
-//line messages.qtpl:202
+//line messages.qtpl:224
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:202
+//line messages.qtpl:224
return qs422016
-//line messages.qtpl:202
+//line messages.qtpl:224
}
-//line messages.qtpl:204
+//line messages.qtpl:226
func StreamMessages(qw422016 *qt422016.Writer, VERSION, CSRF, NullUsername string, AuthUser *database.User, Data ChatMessagesData) {
-//line messages.qtpl:204
+//line messages.qtpl:226
qw422016.N().S(`<html lang="en">
<head>
<title></title>
`)
-//line messages.qtpl:208
+//line messages.qtpl:230
if !Data.ChatMenuData.PreventRefresh && !Data.ForceManualRefresh {
-//line messages.qtpl:208
+//line messages.qtpl:230
qw422016.N().S(`<meta http-equiv="refresh" content="`)
-//line messages.qtpl:208
+//line messages.qtpl:230
qw422016.N().DL(AuthUser.RefreshRate)
-//line messages.qtpl:208
+//line messages.qtpl:230
qw422016.N().S(`">`)
-//line messages.qtpl:208
+//line messages.qtpl:230
}
-//line messages.qtpl:209
+//line messages.qtpl:231
if AuthUser.CollectMetadata {
-//line messages.qtpl:209
+//line messages.qtpl:231
qw422016.N().S(`<link rel="stylesheet" type="text/css" href="/public/css/meta.css?v=`)
-//line messages.qtpl:209
+//line messages.qtpl:231
qw422016.E().S(VERSION)
-//line messages.qtpl:209
+//line messages.qtpl:231
qw422016.N().S(`" />`)
-//line messages.qtpl:209
+//line messages.qtpl:231
}
-//line messages.qtpl:210
+//line messages.qtpl:232
StreamGenerateStyle(qw422016, AuthUser, Data)
-//line messages.qtpl:210
+//line messages.qtpl:232
qw422016.N().S(` </head>
<body>
`)
-//line messages.qtpl:214
+//line messages.qtpl:236
if Data.ForceManualRefresh {
-//line messages.qtpl:214
+//line messages.qtpl:236
qw422016.N().S(` <div id="manualrefresh">
<h4>Manual refresh required</h4>
<form method="get" action="/chat/`)
-//line messages.qtpl:217
+//line messages.qtpl:239
qw422016.E().S(Data.ChatMenuData.RoomName)
-//line messages.qtpl:217
+//line messages.qtpl:239
qw422016.N().S(`" target="_top">
<input type="submit" value="Reload" />
</form>
</div>
`)
-//line messages.qtpl:221
+//line messages.qtpl:243
} else if !Data.ChatMenuData.PreventRefresh {
-//line messages.qtpl:221
+//line messages.qtpl:243
qw422016.N().S(` <div id="manualrefresh">
<h4>Manual refresh required</h4>
<form method="get">
@@ -349,1113 +371,1113 @@ func StreamMessages(qw422016 *qt422016.Writer, VERSION, CSRF, NullUsername strin
</form>
</div>
`)
-//line messages.qtpl:228
+//line messages.qtpl:250
}
-//line messages.qtpl:228
+//line messages.qtpl:250
qw422016.N().S(`
`)
-//line messages.qtpl:230
+//line messages.qtpl:252
if Data.Error != "" {
-//line messages.qtpl:230
+//line messages.qtpl:252
qw422016.N().S(` <a href="/api/v1/chat/messages/`)
-//line messages.qtpl:231
+//line messages.qtpl:253
qw422016.E().S(Data.ChatMenuData.RoomName)
-//line messages.qtpl:231
+//line messages.qtpl:253
qw422016.N().S(`" id="msg-err">× `)
-//line messages.qtpl:231
+//line messages.qtpl:253
qw422016.E().S(Data.Error)
-//line messages.qtpl:231
+//line messages.qtpl:253
qw422016.N().S(`</a>
`)
-//line messages.qtpl:232
+//line messages.qtpl:254
}
-//line messages.qtpl:232
+//line messages.qtpl:254
qw422016.N().S(`
`)
-//line messages.qtpl:234
+//line messages.qtpl:256
if Data.PmSound || Data.TaggedSound {
-//line messages.qtpl:234
+//line messages.qtpl:256
qw422016.N().S(` <audio src="/public/mp3/sound5.mp3" autoplay></audio>
`)
-//line messages.qtpl:236
+//line messages.qtpl:258
} else if Data.NewMessageSound {
-//line messages.qtpl:236
+//line messages.qtpl:258
qw422016.N().S(` <audio src="/public/mp3/sound6.mp3" autoplay></audio>
`)
-//line messages.qtpl:238
+//line messages.qtpl:260
}
-//line messages.qtpl:238
+//line messages.qtpl:260
qw422016.N().S(`
<div id="msgs">
`)
-//line messages.qtpl:241
+//line messages.qtpl:263
StreamRenderMessages(qw422016, AuthUser, Data, CSRF, NullUsername)
-//line messages.qtpl:241
+//line messages.qtpl:263
qw422016.N().S(` </div>
`)
-//line messages.qtpl:244
+//line messages.qtpl:266
if !AuthUser.HideRightColumn {
-//line messages.qtpl:244
+//line messages.qtpl:266
qw422016.N().S(`
<div id="rgt-pane-w">
`)
-//line messages.qtpl:246
+//line messages.qtpl:268
StreamRenderRightColumn(qw422016, AuthUser, Data.ChatMenuData)
-//line messages.qtpl:246
+//line messages.qtpl:268
qw422016.N().S(` </div>
`)
-//line messages.qtpl:248
+//line messages.qtpl:270
}
-//line messages.qtpl:249
+//line messages.qtpl:271
if AuthUser.CollectMetadata {
-//line messages.qtpl:249
+//line messages.qtpl:271
qw422016.N().S(` <div class="div_1"></div>
<div class="div_2"></div>
<div class="div_f0">a</div>
`)
-//line messages.qtpl:253
+//line messages.qtpl:275
}
-//line messages.qtpl:253
+//line messages.qtpl:275
qw422016.N().S(` </body>
</html>
`)
-//line messages.qtpl:256
+//line messages.qtpl:278
}
-//line messages.qtpl:256
+//line messages.qtpl:278
func WriteMessages(qq422016 qtio422016.Writer, VERSION, CSRF, NullUsername string, AuthUser *database.User, Data ChatMessagesData) {
-//line messages.qtpl:256
+//line messages.qtpl:278
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:256
+//line messages.qtpl:278
StreamMessages(qw422016, VERSION, CSRF, NullUsername, AuthUser, Data)
-//line messages.qtpl:256
+//line messages.qtpl:278
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:256
+//line messages.qtpl:278
}
-//line messages.qtpl:256
+//line messages.qtpl:278
func Messages(VERSION, CSRF, NullUsername string, AuthUser *database.User, Data ChatMessagesData) string {
-//line messages.qtpl:256
+//line messages.qtpl:278
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:256
+//line messages.qtpl:278
WriteMessages(qb422016, VERSION, CSRF, NullUsername, AuthUser, Data)
-//line messages.qtpl:256
+//line messages.qtpl:278
qs422016 := string(qb422016.B)
-//line messages.qtpl:256
+//line messages.qtpl:278
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:256
+//line messages.qtpl:278
return qs422016
-//line messages.qtpl:256
+//line messages.qtpl:278
}
-//line messages.qtpl:259
+//line messages.qtpl:281
func StreamRenderRightColumn(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMenuData) {
-//line messages.qtpl:259
+//line messages.qtpl:281
qw422016.N().S(`<div id="rgt-pane">
<div class="mb-20px">
<div class="rgt-title">Inbox (<a href="/settings/inbox" target="_top"`)
-//line messages.qtpl:262
+//line messages.qtpl:284
if Data.InboxCount > 0 {
-//line messages.qtpl:262
+//line messages.qtpl:284
qw422016.N().S(`class="notif"`)
-//line messages.qtpl:262
+//line messages.qtpl:284
}
-//line messages.qtpl:262
+//line messages.qtpl:284
qw422016.N().S(`>`)
-//line messages.qtpl:262
+//line messages.qtpl:284
qw422016.N().DL(Data.InboxCount)
-//line messages.qtpl:262
+//line messages.qtpl:284
qw422016.N().S(`</a>)</div>
</div>
<div class="mb-20px">
<div class="rgt-title">Rooms:</div>
`)
-//line messages.qtpl:266
+//line messages.qtpl:288
for _, e := range Data.OfficialRooms {
-//line messages.qtpl:267
+//line messages.qtpl:289
if e.Name == "club" {
-//line messages.qtpl:268
+//line messages.qtpl:290
if AuthUser.IsClubMember {
-//line messages.qtpl:268
+//line messages.qtpl:290
qw422016.N().S(` <div><a href="/chat/club" target="_top"`)
-//line messages.qtpl:269
+//line messages.qtpl:291
if e.IsUnread {
-//line messages.qtpl:269
+//line messages.qtpl:291
qw422016.N().S(` class="unread_room"`)
-//line messages.qtpl:269
+//line messages.qtpl:291
}
-//line messages.qtpl:269
+//line messages.qtpl:291
qw422016.N().S(`>#club</a></div>
`)
-//line messages.qtpl:270
+//line messages.qtpl:292
}
-//line messages.qtpl:271
+//line messages.qtpl:293
} else if e.Name == "moderators" {
-//line messages.qtpl:272
+//line messages.qtpl:294
if AuthUser.IsModerator() {
-//line messages.qtpl:272
+//line messages.qtpl:294
qw422016.N().S(` <div><a href="/chat/moderators" target="_top"`)
-//line messages.qtpl:273
+//line messages.qtpl:295
if e.IsUnread {
-//line messages.qtpl:273
+//line messages.qtpl:295
qw422016.N().S(` class="unread_room"`)
-//line messages.qtpl:273
+//line messages.qtpl:295
}
-//line messages.qtpl:273
+//line messages.qtpl:295
qw422016.N().S(`>#moderators</a></div>
`)
-//line messages.qtpl:274
+//line messages.qtpl:296
}
-//line messages.qtpl:275
+//line messages.qtpl:297
} else {
-//line messages.qtpl:275
+//line messages.qtpl:297
qw422016.N().S(` <div><a href="/chat/`)
-//line messages.qtpl:276
+//line messages.qtpl:298
qw422016.E().S(e.Name)
-//line messages.qtpl:276
+//line messages.qtpl:298
qw422016.N().S(`" target="_top"`)
-//line messages.qtpl:276
+//line messages.qtpl:298
if e.IsUnread {
-//line messages.qtpl:276
+//line messages.qtpl:298
qw422016.N().S(` class="unread_room"`)
-//line messages.qtpl:276
+//line messages.qtpl:298
}
-//line messages.qtpl:276
+//line messages.qtpl:298
qw422016.N().S(`>#`)
-//line messages.qtpl:276
+//line messages.qtpl:298
qw422016.E().S(e.Name)
-//line messages.qtpl:276
+//line messages.qtpl:298
qw422016.N().S(`</a></div>
`)
-//line messages.qtpl:277
+//line messages.qtpl:299
}
-//line messages.qtpl:278
+//line messages.qtpl:300
}
-//line messages.qtpl:279
+//line messages.qtpl:301
if len(Data.SubscribedRooms) > 0 {
-//line messages.qtpl:279
+//line messages.qtpl:301
qw422016.N().S(` <div class="mt-10px"></div>
`)
-//line messages.qtpl:281
+//line messages.qtpl:303
for _, e := range Data.SubscribedRooms {
-//line messages.qtpl:281
+//line messages.qtpl:303
qw422016.N().S(` <div><a href="/chat/`)
-//line messages.qtpl:282
+//line messages.qtpl:304
qw422016.E().S(e.Name)
-//line messages.qtpl:282
+//line messages.qtpl:304
qw422016.N().S(`" target="_top"`)
-//line messages.qtpl:282
+//line messages.qtpl:304
if e.IsUnread {
-//line messages.qtpl:282
+//line messages.qtpl:304
qw422016.N().S(` class="unread_room"`)
-//line messages.qtpl:282
+//line messages.qtpl:304
}
-//line messages.qtpl:282
+//line messages.qtpl:304
qw422016.N().S(`>#`)
-//line messages.qtpl:282
+//line messages.qtpl:304
qw422016.E().S(e.Name)
-//line messages.qtpl:282
+//line messages.qtpl:304
qw422016.N().S(`</a></div>
`)
-//line messages.qtpl:283
+//line messages.qtpl:305
}
-//line messages.qtpl:284
+//line messages.qtpl:306
}
-//line messages.qtpl:284
+//line messages.qtpl:306
qw422016.N().S(` <div class="mt-5px"><a href="/rooms" target="_top">[...]</a></div>
</div>
<div class="mb-20px">
<div class="rgt-title">In this room:</div>
`)
-//line messages.qtpl:289
+//line messages.qtpl:311
for _, e := range Data.Members {
-//line messages.qtpl:289
+//line messages.qtpl:311
qw422016.N().S(` `)
-//line messages.qtpl:290
+//line messages.qtpl:312
StreamMember(qw422016, AuthUser, Data, e)
-//line messages.qtpl:290
+//line messages.qtpl:312
qw422016.N().S(`
`)
-//line messages.qtpl:291
+//line messages.qtpl:313
}
-//line messages.qtpl:291
+//line messages.qtpl:313
qw422016.N().S(` </div>
`)
-//line messages.qtpl:293
+//line messages.qtpl:315
if Data.VisibleMemberInChat || AuthUser.DisplayHellbanned {
-//line messages.qtpl:293
+//line messages.qtpl:315
qw422016.N().S(` <div class="mb-30px">
`)
-//line messages.qtpl:295
+//line messages.qtpl:317
if len(Data.MembersInChat) > 0 {
-//line messages.qtpl:295
+//line messages.qtpl:317
qw422016.N().S(` <div class="rgt-title">In other rooms:</div>
`)
-//line messages.qtpl:297
+//line messages.qtpl:319
for _, e := range Data.MembersInChat {
-//line messages.qtpl:297
+//line messages.qtpl:319
qw422016.N().S(` `)
-//line messages.qtpl:298
+//line messages.qtpl:320
StreamMember(qw422016, AuthUser, Data, e)
-//line messages.qtpl:298
+//line messages.qtpl:320
qw422016.N().S(`
`)
-//line messages.qtpl:299
+//line messages.qtpl:321
}
-//line messages.qtpl:300
+//line messages.qtpl:322
}
-//line messages.qtpl:300
+//line messages.qtpl:322
qw422016.N().S(` </div>
`)
-//line messages.qtpl:302
+//line messages.qtpl:324
}
-//line messages.qtpl:302
+//line messages.qtpl:324
qw422016.N().S(`</div>
`)
-//line messages.qtpl:304
+//line messages.qtpl:326
}
-//line messages.qtpl:304
+//line messages.qtpl:326
func WriteRenderRightColumn(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMenuData) {
-//line messages.qtpl:304
+//line messages.qtpl:326
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:304
+//line messages.qtpl:326
StreamRenderRightColumn(qw422016, AuthUser, Data)
-//line messages.qtpl:304
+//line messages.qtpl:326
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:304
+//line messages.qtpl:326
}
-//line messages.qtpl:304
+//line messages.qtpl:326
func RenderRightColumn(AuthUser *database.User, Data ChatMenuData) string {
-//line messages.qtpl:304
+//line messages.qtpl:326
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:304
+//line messages.qtpl:326
WriteRenderRightColumn(qb422016, AuthUser, Data)
-//line messages.qtpl:304
+//line messages.qtpl:326
qs422016 := string(qb422016.B)
-//line messages.qtpl:304
+//line messages.qtpl:326
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:304
+//line messages.qtpl:326
return qs422016
-//line messages.qtpl:304
+//line messages.qtpl:326
}
-//line messages.qtpl:306
+//line messages.qtpl:328
func StreamRenderMessages(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMessagesData, CSRF, NullUsername string) {
-//line messages.qtpl:308
+//line messages.qtpl:330
baseTopBarURL := "/api/v1/chat/top-bar/" + Data.ChatMenuData.RoomName
readMarkerRendered := false
isFirstMsg := true
-//line messages.qtpl:312
+//line messages.qtpl:334
for idx, e := range Data.Messages {
-//line messages.qtpl:313
+//line messages.qtpl:335
StreamRenderMessage(qw422016, idx, e, AuthUser, Data, baseTopBarURL, &readMarkerRendered, &isFirstMsg, CSRF, NullUsername)
-//line messages.qtpl:313
+//line messages.qtpl:335
qw422016.N().S(` `)
-//line messages.qtpl:314
+//line messages.qtpl:336
}
-//line messages.qtpl:314
+//line messages.qtpl:336
qw422016.N().S(`
`)
-//line messages.qtpl:315
+//line messages.qtpl:337
if len(Data.Messages) == 0 {
-//line messages.qtpl:315
+//line messages.qtpl:337
qw422016.N().S(`
<div id="no-msg"><em>No message yet</em></div>
`)
-//line messages.qtpl:317
+//line messages.qtpl:339
}
-//line messages.qtpl:317
+//line messages.qtpl:339
qw422016.N().S(`
`)
-//line messages.qtpl:318
+//line messages.qtpl:340
}
-//line messages.qtpl:318
+//line messages.qtpl:340
func WriteRenderMessages(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMessagesData, CSRF, NullUsername string) {
-//line messages.qtpl:318
+//line messages.qtpl:340
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:318
+//line messages.qtpl:340
StreamRenderMessages(qw422016, AuthUser, Data, CSRF, NullUsername)
-//line messages.qtpl:318
+//line messages.qtpl:340
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:318
+//line messages.qtpl:340
}
-//line messages.qtpl:318
+//line messages.qtpl:340
func RenderMessages(AuthUser *database.User, Data ChatMessagesData, CSRF, NullUsername string) string {
-//line messages.qtpl:318
+//line messages.qtpl:340
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:318
+//line messages.qtpl:340
WriteRenderMessages(qb422016, AuthUser, Data, CSRF, NullUsername)
-//line messages.qtpl:318
+//line messages.qtpl:340
qs422016 := string(qb422016.B)
-//line messages.qtpl:318
+//line messages.qtpl:340
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:318
+//line messages.qtpl:340
return qs422016
-//line messages.qtpl:318
+//line messages.qtpl:340
}
-//line messages.qtpl:320
+//line messages.qtpl:342
func StreamRenderMessage(qw422016 *qt422016.Writer, idx int, e database.ChatMessage, AuthUser *database.User,
Data ChatMessagesData, baseTopBarURL string, readMarkerRendered, isFirstMsg *bool, CSRF, NullUsername string) {
-//line messages.qtpl:322
+//line messages.qtpl:344
if e.UserCanSee(*AuthUser) {
-//line messages.qtpl:323
+//line messages.qtpl:345
if AuthUser.ChatReadMarkerEnabled && e.CreatedAt.Before(Data.ReadMarker.ReadAt) && !*readMarkerRendered {
-//line messages.qtpl:323
+//line messages.qtpl:345
qw422016.N().S(`
<div class="read-marker read-marker-0"`)
-//line messages.qtpl:324
+//line messages.qtpl:346
if idx == 0 {
-//line messages.qtpl:324
+//line messages.qtpl:346
qw422016.N().S(` style="display:none;"`)
-//line messages.qtpl:324
+//line messages.qtpl:346
}
-//line messages.qtpl:324
+//line messages.qtpl:346
qw422016.N().S(`></div>
`)
-//line messages.qtpl:325
+//line messages.qtpl:347
*readMarkerRendered = true
-//line messages.qtpl:326
+//line messages.qtpl:348
}
-//line messages.qtpl:326
+//line messages.qtpl:348
qw422016.N().S(` <div id="msgid-`)
-//line messages.qtpl:327
+//line messages.qtpl:349
qw422016.E().S(e.UUID)
-//line messages.qtpl:327
+//line messages.qtpl:349
qw422016.N().S(`" class="msgidc-`)
-//line messages.qtpl:327
+//line messages.qtpl:349
qw422016.E().S(e.UUID)
-//line messages.qtpl:327
+//line messages.qtpl:349
qw422016.N().S(`-`)
-//line messages.qtpl:327
+//line messages.qtpl:349
qw422016.N().DL(e.Rev)
-//line messages.qtpl:327
+//line messages.qtpl:349
qw422016.N().S(` msg
`)
-//line messages.qtpl:328
+//line messages.qtpl:350
if (e.User.IsHellbanned || e.IsHellbanned) && AuthUser.DisplayHellbanned {
-//line messages.qtpl:328
+//line messages.qtpl:350
qw422016.N().S(` hb-row
`)
-//line messages.qtpl:329
+//line messages.qtpl:351
} else if AuthUser.ID == e.User.ID && AuthUser.HighlightOwnMessages {
-//line messages.qtpl:329
+//line messages.qtpl:351
qw422016.N().S(` own-highlight`)
-//line messages.qtpl:329
+//line messages.qtpl:351
}
-//line messages.qtpl:329
+//line messages.qtpl:351
qw422016.N().S(` ">
`)
-//line messages.qtpl:331
+//line messages.qtpl:353
if e.UserCanDelete(*AuthUser) {
-//line messages.qtpl:332
+//line messages.qtpl:354
if !e.TooOldToDelete() {
-//line messages.qtpl:333
+//line messages.qtpl:355
if AuthUser.DisplayDeleteButton {
-//line messages.qtpl:333
+//line messages.qtpl:355
qw422016.N().S(` <form method="post" action="/api/v1/chat/messages/delete/`)
-//line messages.qtpl:334
+//line messages.qtpl:356
qw422016.E().S(e.UUID)
-//line messages.qtpl:334
+//line messages.qtpl:356
qw422016.N().S(`" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:335
+//line messages.qtpl:357
qw422016.E().S(CSRF)
-//line messages.qtpl:335
+//line messages.qtpl:357
qw422016.N().S(`" />
<button class="mod-btn delete_msg_btn
" title="delete"
style="
`)
-//line messages.qtpl:339
+//line messages.qtpl:361
if string(e.User.Username) != NullUsername {
-//line messages.qtpl:340
+//line messages.qtpl:362
if (AuthUser.IsModerator() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || (e.Room.OwnerUserID != nil && *e.Room.OwnerUserID == AuthUser.ID) {
-//line messages.qtpl:340
+//line messages.qtpl:362
qw422016.N().S(` animation: `)
-//line messages.qtpl:341
+//line messages.qtpl:363
qw422016.N().DL(e.DeleteSecondsRemaining())
-//line messages.qtpl:341
+//line messages.qtpl:363
qw422016.N().S(`s 1s forwards orange_btn;
`)
-//line messages.qtpl:342
+//line messages.qtpl:364
} else {
-//line messages.qtpl:342
+//line messages.qtpl:364
qw422016.N().S(` animation: `)
-//line messages.qtpl:343
+//line messages.qtpl:365
qw422016.N().DL(e.DeleteSecondsRemaining())
-//line messages.qtpl:343
+//line messages.qtpl:365
qw422016.N().S(`s 1s forwards hide_btn;
`)
-//line messages.qtpl:344
+//line messages.qtpl:366
}
-//line messages.qtpl:345
+//line messages.qtpl:367
}
-//line messages.qtpl:345
+//line messages.qtpl:367
qw422016.N().S(` "
></button>
</form>
`)
-//line messages.qtpl:349
+//line messages.qtpl:371
}
-//line messages.qtpl:350
+//line messages.qtpl:372
} else if (AuthUser.IsModerator() && e.TooOldToDelete() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || (e.Room.OwnerUserID != nil && *e.Room.OwnerUserID == AuthUser.ID) {
-//line messages.qtpl:351
+//line messages.qtpl:373
if AuthUser.DisplayDeleteButton {
-//line messages.qtpl:351
+//line messages.qtpl:373
qw422016.N().S(` <form method="post" action="/api/v1/chat/messages/delete/`)
-//line messages.qtpl:352
+//line messages.qtpl:374
qw422016.E().S(e.UUID)
-//line messages.qtpl:352
+//line messages.qtpl:374
qw422016.N().S(`" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:353
+//line messages.qtpl:375
qw422016.E().S(CSRF)
-//line messages.qtpl:353
+//line messages.qtpl:375
qw422016.N().S(`" />
<button class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button>
</form>
`)
-//line messages.qtpl:356
+//line messages.qtpl:378
}
-//line messages.qtpl:357
+//line messages.qtpl:379
} else if AuthUser.IsModerator() {
-//line messages.qtpl:358
+//line messages.qtpl:380
if AuthUser.DisplayDeleteButton {
-//line messages.qtpl:358
+//line messages.qtpl:380
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:360
+//line messages.qtpl:382
}
-//line messages.qtpl:361
+//line messages.qtpl:383
} else {
-//line messages.qtpl:362
+//line messages.qtpl:384
if AuthUser.DisplayDeleteButton {
-//line messages.qtpl:362
+//line messages.qtpl:384
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:364
+//line messages.qtpl:386
}
-//line messages.qtpl:365
+//line messages.qtpl:387
}
-//line messages.qtpl:366
+//line messages.qtpl:388
if AuthUser.IsModerator() {
-//line messages.qtpl:367
+//line messages.qtpl:389
if e.UserID != AuthUser.ID {
-//line messages.qtpl:368
+//line messages.qtpl:390
if AuthUser.DisplayHellbanButton {
-//line messages.qtpl:369
+//line messages.qtpl:391
if string(e.User.Username) == NullUsername {
-//line messages.qtpl:369
+//line messages.qtpl:391
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:371
+//line messages.qtpl:393
} else {
-//line messages.qtpl:372
+//line messages.qtpl:394
if e.User.IsHellbanned {
-//line messages.qtpl:372
+//line messages.qtpl:394
qw422016.N().S(` <form method="post" action="/api/v1/users/`)
-//line messages.qtpl:373
+//line messages.qtpl:395
qw422016.E().S(e.UserID.String())
-//line messages.qtpl:373
+//line messages.qtpl:395
qw422016.N().S(`/unhellban" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:374
+//line messages.qtpl:396
qw422016.E().S(CSRF)
-//line messages.qtpl:374
+//line messages.qtpl:396
qw422016.N().S(`" />
<button class="mod-btn hb_btn f-orange-clr line-through" title="unhellban"></button>
</form>
`)
-//line messages.qtpl:377
+//line messages.qtpl:399
} else {
-//line messages.qtpl:377
+//line messages.qtpl:399
qw422016.N().S(` <form method="post" action="/api/v1/users/`)
-//line messages.qtpl:378
+//line messages.qtpl:400
qw422016.E().S(e.UserID.String())
-//line messages.qtpl:378
+//line messages.qtpl:400
qw422016.N().S(`/hellban" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:379
+//line messages.qtpl:401
qw422016.E().S(CSRF)
-//line messages.qtpl:379
+//line messages.qtpl:401
qw422016.N().S(`" />
<button class="mod-btn hb_btn f-orange-clr" title="hellban"></button>
</form>
`)
-//line messages.qtpl:382
+//line messages.qtpl:404
}
-//line messages.qtpl:383
+//line messages.qtpl:405
}
-//line messages.qtpl:384
+//line messages.qtpl:406
}
-//line messages.qtpl:385
+//line messages.qtpl:407
if AuthUser.DisplayKickButton {
-//line messages.qtpl:385
+//line messages.qtpl:407
qw422016.N().S(` <form method="post" action="/api/v1/users/`)
-//line messages.qtpl:386
+//line messages.qtpl:408
qw422016.E().S(e.UserID.String())
-//line messages.qtpl:386
+//line messages.qtpl:408
qw422016.N().S(`/kick" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:387
+//line messages.qtpl:409
qw422016.E().S(CSRF)
-//line messages.qtpl:387
+//line messages.qtpl:409
qw422016.N().S(`" />
<button class="mod-btn k_btn f-orange-clr" title="kick"></button>
</form>
`)
-//line messages.qtpl:390
+//line messages.qtpl:412
}
-//line messages.qtpl:391
+//line messages.qtpl:413
} else {
-//line messages.qtpl:392
+//line messages.qtpl:414
if AuthUser.DisplayKickButton && AuthUser.DisplayHellbanButton {
-//line messages.qtpl:392
+//line messages.qtpl:414
qw422016.N().S(` <div class="spacer36"></div>
`)
-//line messages.qtpl:394
+//line messages.qtpl:416
} else if AuthUser.DisplayKickButton || AuthUser.DisplayHellbanButton {
-//line messages.qtpl:394
+//line messages.qtpl:416
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:396
+//line messages.qtpl:418
}
-//line messages.qtpl:397
+//line messages.qtpl:419
}
-//line messages.qtpl:398
+//line messages.qtpl:420
}
-//line messages.qtpl:399
+//line messages.qtpl:421
} else {
-//line messages.qtpl:400
+//line messages.qtpl:422
if Data.NbButtons == 3 {
-//line messages.qtpl:400
+//line messages.qtpl:422
qw422016.N().S(` <div class="spacer56"></div>
`)
-//line messages.qtpl:402
+//line messages.qtpl:424
} else if Data.NbButtons == 2 {
-//line messages.qtpl:402
+//line messages.qtpl:424
qw422016.N().S(` <div class="spacer36"></div>
`)
-//line messages.qtpl:404
+//line messages.qtpl:426
} else if Data.NbButtons == 1 {
-//line messages.qtpl:404
+//line messages.qtpl:426
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:406
+//line messages.qtpl:428
}
-//line messages.qtpl:407
+//line messages.qtpl:429
}
-//line messages.qtpl:408
+//line messages.qtpl:430
if AuthUser.GetDateFormat() != "" {
-//line messages.qtpl:408
+//line messages.qtpl:430
qw422016.N().S(` <a href="`)
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.N().S(`?quote=`)
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.E().S(e.UUID)
-//line messages.qtpl:409
+//line messages.qtpl:431
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.N().S(`" target="iframe1" class="date date-link" title="`)
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.E().S(e.CreatedAt.Format("01-02 15:04:05"))
-//line messages.qtpl:409
+//line messages.qtpl:431
if *isFirstMsg {
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.N().S(` (`)
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.E().S(humanize.Time(e.CreatedAt))
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.N().S(`)`)
-//line messages.qtpl:409
+//line messages.qtpl:431
}
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.N().S(`">`)
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.E().S(e.CreatedAt.Format(AuthUser.GetDateFormat()))
-//line messages.qtpl:409
+//line messages.qtpl:431
qw422016.N().S(`</a>
`)
-//line messages.qtpl:410
+//line messages.qtpl:432
*isFirstMsg = false
-//line messages.qtpl:410
+//line messages.qtpl:432
qw422016.N().S(`
`)
-//line messages.qtpl:411
+//line messages.qtpl:433
}
-//line messages.qtpl:411
+//line messages.qtpl:433
qw422016.N().S(` <a href="/u/`)
-//line messages.qtpl:412
+//line messages.qtpl:434
qw422016.E().S(string(e.GetProfile(AuthUser)))
-//line messages.qtpl:412
+//line messages.qtpl:434
qw422016.N().S(`" target="_blank" class="f-def-clr">-</a>
`)
-//line messages.qtpl:413
+//line messages.qtpl:435
if e.System {
-//line messages.qtpl:413
+//line messages.qtpl:435
qw422016.N().S(` <span class="sysmsg">`)
-//line messages.qtpl:414
+//line messages.qtpl:436
streamunesc(qw422016, e.Message)
-//line messages.qtpl:414
+//line messages.qtpl:436
qw422016.N().S(`</span>
`)
-//line messages.qtpl:415
+//line messages.qtpl:437
} else {
-//line messages.qtpl:416
+//line messages.qtpl:438
if e.Moderators {
-//line messages.qtpl:416
+//line messages.qtpl:438
qw422016.N().S(`<span class="sysmsg">[<a href="`)
-//line messages.qtpl:416
+//line messages.qtpl:438
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:416
+//line messages.qtpl:438
qw422016.N().S(`?m=1`)
-//line messages.qtpl:416
+//line messages.qtpl:438
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:416
+//line messages.qtpl:438
qw422016.N().S(`" target="iframe1" class="sysmsg f-white-clr">M</a>]</span> `)
-//line messages.qtpl:416
+//line messages.qtpl:438
}
-//line messages.qtpl:417
+//line messages.qtpl:439
if e.GroupID != nil {
-//line messages.qtpl:417
+//line messages.qtpl:439
qw422016.N().S(`<span class="sysmsg">[<a href="`)
-//line messages.qtpl:417
+//line messages.qtpl:439
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:417
+//line messages.qtpl:439
qw422016.N().S(`?g=`)
-//line messages.qtpl:417
+//line messages.qtpl:439
qw422016.E().S(e.Group.Name)
-//line messages.qtpl:417
+//line messages.qtpl:439
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:417
+//line messages.qtpl:439
qw422016.N().S(`" target="iframe1" class="sysmsg f-white-clr">`)
-//line messages.qtpl:417
+//line messages.qtpl:439
qw422016.E().S(e.Group.Name)
-//line messages.qtpl:417
+//line messages.qtpl:439
qw422016.N().S(`</a>]</span> `)
-//line messages.qtpl:417
+//line messages.qtpl:439
}
-//line messages.qtpl:418
+//line messages.qtpl:440
if e.ToUserID != nil {
-//line messages.qtpl:418
+//line messages.qtpl:440
qw422016.N().S(` [`)
-//line messages.qtpl:419
+//line messages.qtpl:441
streamfromUsername(qw422016, AuthUser, Data, e, baseTopBarURL)
-//line messages.qtpl:419
+//line messages.qtpl:441
qw422016.N().S(` →
`)
-//line messages.qtpl:421
+//line messages.qtpl:443
if e.ToUser.ID == AuthUser.ID {
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.N().S(`<span `)
-//line messages.qtpl:421
+//line messages.qtpl:443
streamunesc(qw422016, e.ToUser.GenerateChatStyle())
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.N().S(`>`)
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.E().S(string(e.ToUser.Username))
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.N().S(`</span>`)
-//line messages.qtpl:421
+//line messages.qtpl:443
} else {
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.N().S(`<a `)
-//line messages.qtpl:421
+//line messages.qtpl:443
streamunesc(qw422016, e.ToUser.GenerateChatStyle())
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.N().S(` href="`)
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.N().S(`?pm=`)
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.E().S(string(e.ToUser.Username))
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.E().S(Data.TopBarQueryParams)
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.N().S(`" target="iframe1">`)
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.E().S(string(e.ToUser.Username))
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.N().S(`</a>`)
-//line messages.qtpl:421
+//line messages.qtpl:443
}
-//line messages.qtpl:421
+//line messages.qtpl:443
qw422016.N().S(`] -
`)
-//line messages.qtpl:422
+//line messages.qtpl:444
} else {
-//line messages.qtpl:423
+//line messages.qtpl:445
streamfromUsername(qw422016, AuthUser, Data, e, baseTopBarURL)
-//line messages.qtpl:424
+//line messages.qtpl:446
if !e.IsMe() {
-//line messages.qtpl:425
+//line messages.qtpl:447
if AuthUser.CanSeeHB() && (e.IsHellbanned || e.User.IsHellbanned) && (e.ToUserID == nil) {
-//line messages.qtpl:425
+//line messages.qtpl:447
qw422016.N().S(` <a href="`)
-//line messages.qtpl:426
+//line messages.qtpl:448
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:426
+//line messages.qtpl:448
qw422016.N().S(`?hbm=1`)
-//line messages.qtpl:426
+//line messages.qtpl:448
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:426
+//line messages.qtpl:448
qw422016.N().S(`" target="iframe1" class="f-def-clr">-</a>
`)
-//line messages.qtpl:427
+//line messages.qtpl:449
} else {
-//line messages.qtpl:427
+//line messages.qtpl:449
qw422016.N().S(` -
`)
-//line messages.qtpl:429
+//line messages.qtpl:451
}
-//line messages.qtpl:430
+//line messages.qtpl:452
}
-//line messages.qtpl:431
+//line messages.qtpl:453
}
-//line messages.qtpl:431
+//line messages.qtpl:453
qw422016.N().S(` <span `)
-//line messages.qtpl:432
+//line messages.qtpl:454
streamunesc(qw422016, e.User.GenerateChatStyle())
-//line messages.qtpl:432
+//line messages.qtpl:454
qw422016.N().S(`><span class="o-wrap">`)
-//line messages.qtpl:432
+//line messages.qtpl:454
qw422016.N().S(unesc(e.MsgToDisplay()))
-//line messages.qtpl:432
+//line messages.qtpl:454
qw422016.N().S(`</span></span>
`)
-//line messages.qtpl:433
+//line messages.qtpl:455
}
-//line messages.qtpl:433
+//line messages.qtpl:455
qw422016.N().S(` </div>
`)
-//line messages.qtpl:435
+//line messages.qtpl:457
}
-//line messages.qtpl:436
+//line messages.qtpl:458
}
-//line messages.qtpl:436
+//line messages.qtpl:458
func WriteRenderMessage(qq422016 qtio422016.Writer, idx int, e database.ChatMessage, AuthUser *database.User,
Data ChatMessagesData, baseTopBarURL string, readMarkerRendered, isFirstMsg *bool, CSRF, NullUsername string) {
-//line messages.qtpl:436
+//line messages.qtpl:458
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:436
+//line messages.qtpl:458
StreamRenderMessage(qw422016, idx, e, AuthUser, Data, baseTopBarURL, readMarkerRendered, isFirstMsg, CSRF, NullUsername)
-//line messages.qtpl:436
+//line messages.qtpl:458
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:436
+//line messages.qtpl:458
}
-//line messages.qtpl:436
+//line messages.qtpl:458
func RenderMessage(idx int, e database.ChatMessage, AuthUser *database.User,
Data ChatMessagesData, baseTopBarURL string, readMarkerRendered, isFirstMsg *bool, CSRF, NullUsername string) string {
-//line messages.qtpl:436
+//line messages.qtpl:458
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:436
+//line messages.qtpl:458
WriteRenderMessage(qb422016, idx, e, AuthUser, Data, baseTopBarURL, readMarkerRendered, isFirstMsg, CSRF, NullUsername)
-//line messages.qtpl:436
+//line messages.qtpl:458
qs422016 := string(qb422016.B)
-//line messages.qtpl:436
+//line messages.qtpl:458
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:436
+//line messages.qtpl:458
return qs422016
-//line messages.qtpl:436
+//line messages.qtpl:458
}
-//line messages.qtpl:439
+//line messages.qtpl:461
func StreamMember(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) {
-//line messages.qtpl:439
+//line messages.qtpl:461
qw422016.N().S(`
`)
-//line messages.qtpl:440
+//line messages.qtpl:462
baseTopBarURL := "/api/v1/chat/top-bar/" + Data.RoomName
-//line messages.qtpl:441
+//line messages.qtpl:463
if El.Username == AuthUser.Username {
-//line messages.qtpl:441
+//line messages.qtpl:463
qw422016.N().S(` <div>
<span style="color: `)
-//line messages.qtpl:443
+//line messages.qtpl:465
qw422016.E().S(El.Color)
-//line messages.qtpl:443
+//line messages.qtpl:465
qw422016.N().S(`;">`)
-//line messages.qtpl:443
+//line messages.qtpl:465
qw422016.E().S(string(El.Username))
-//line messages.qtpl:443
+//line messages.qtpl:465
qw422016.N().S(`</span>
`)
-//line messages.qtpl:444
+//line messages.qtpl:466
if El.AfkIndicatorEnabled {
-//line messages.qtpl:444
+//line messages.qtpl:466
qw422016.N().S(` <small class="afk-indicator">afk</small>
`)
-//line messages.qtpl:446
+//line messages.qtpl:468
}
-//line messages.qtpl:446
+//line messages.qtpl:468
qw422016.N().S(` </div>
`)
-//line messages.qtpl:448
+//line messages.qtpl:470
} else {
-//line messages.qtpl:449
+//line messages.qtpl:471
if !El.IsHellbanned || AuthUser.ID == El.UserID || (El.IsHellbanned && AuthUser.IsHellbanned) || AuthUser.DisplayHellbanned {
-//line messages.qtpl:449
+//line messages.qtpl:471
qw422016.N().S(` <div>
`)
-//line messages.qtpl:451
+//line messages.qtpl:473
tagType := "tag"
-//line messages.qtpl:452
+//line messages.qtpl:474
if AuthUser.CanSeeHB() && El.IsHellbanned {
-//line messages.qtpl:453
+//line messages.qtpl:475
tagType = "htag"
-//line messages.qtpl:454
+//line messages.qtpl:476
}
-//line messages.qtpl:455
+//line messages.qtpl:477
qw422016.N().S(`<a href="`)
-//line messages.qtpl:456
+//line messages.qtpl:478
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:456
+//line messages.qtpl:478
qw422016.N().S(`?`)
-//line messages.qtpl:456
+//line messages.qtpl:478
qw422016.E().S(tagType)
-//line messages.qtpl:456
+//line messages.qtpl:478
qw422016.N().S(`=`)
-//line messages.qtpl:456
+//line messages.qtpl:478
qw422016.E().S(string(El.Username))
-//line messages.qtpl:456
+//line messages.qtpl:478
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:456
+//line messages.qtpl:478
qw422016.N().S(`"target="iframe1"`)
-//line messages.qtpl:458
+//line messages.qtpl:480
if El.IsHellbanned && AuthUser.DisplayHellbanned {
-//line messages.qtpl:458
+//line messages.qtpl:480
qw422016.N().S(`class="hb-row"`)
-//line messages.qtpl:458
+//line messages.qtpl:480
}
-//line messages.qtpl:458
+//line messages.qtpl:480
qw422016.N().S(`style="color:`)
-//line messages.qtpl:459
+//line messages.qtpl:481
qw422016.E().S(El.Color)
-//line messages.qtpl:459
+//line messages.qtpl:481
qw422016.N().S(`;">`)
-//line messages.qtpl:459
+//line messages.qtpl:481
qw422016.E().S(string(El.Username[0]))
-//line messages.qtpl:459
+//line messages.qtpl:481
qw422016.N().S(`</a><a href="`)
-//line messages.qtpl:460
+//line messages.qtpl:482
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:460
+//line messages.qtpl:482
qw422016.N().S(`?pm=`)
-//line messages.qtpl:460
+//line messages.qtpl:482
qw422016.E().S(string(El.Username))
-//line messages.qtpl:460
+//line messages.qtpl:482
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:460
+//line messages.qtpl:482
qw422016.N().S(`"target="iframe1"`)
-//line messages.qtpl:462
+//line messages.qtpl:484
if El.IsHellbanned && AuthUser.DisplayHellbanned {
-//line messages.qtpl:462
+//line messages.qtpl:484
qw422016.N().S(`class="hb-row"`)
-//line messages.qtpl:462
+//line messages.qtpl:484
}
-//line messages.qtpl:462
+//line messages.qtpl:484
qw422016.N().S(`style="color:`)
-//line messages.qtpl:463
+//line messages.qtpl:485
qw422016.E().S(El.Color)
-//line messages.qtpl:463
+//line messages.qtpl:485
qw422016.N().S(`;">`)
-//line messages.qtpl:463
+//line messages.qtpl:485
qw422016.E().S(string(El.Username[1 : len(El.Username)-1]))
-//line messages.qtpl:463
+//line messages.qtpl:485
qw422016.N().S(`</a><a href="/u/`)
-//line messages.qtpl:464
+//line messages.qtpl:486
qw422016.E().S(string(El.Username))
-//line messages.qtpl:464
+//line messages.qtpl:486
qw422016.N().S(`"rel="noopener noreferrer" target="_blank"`)
-//line messages.qtpl:466
+//line messages.qtpl:488
if El.IsHellbanned && AuthUser.DisplayHellbanned {
-//line messages.qtpl:466
+//line messages.qtpl:488
qw422016.N().S(`class="hb-row"`)
-//line messages.qtpl:466
+//line messages.qtpl:488
}
-//line messages.qtpl:466
+//line messages.qtpl:488
qw422016.N().S(`style="color:`)
-//line messages.qtpl:467
+//line messages.qtpl:489
qw422016.E().S(El.Color)
-//line messages.qtpl:467
+//line messages.qtpl:489
qw422016.N().S(`;">`)
-//line messages.qtpl:467
+//line messages.qtpl:489
qw422016.E().S(string(El.Username[len(El.Username)-1]))
-//line messages.qtpl:467
+//line messages.qtpl:489
qw422016.N().S(`</a>`)
-//line messages.qtpl:469
+//line messages.qtpl:491
if El.AfkIndicatorEnabled {
-//line messages.qtpl:469
+//line messages.qtpl:491
qw422016.N().S(` <small class="afk-indicator">afk</small>
`)
-//line messages.qtpl:471
+//line messages.qtpl:493
}
-//line messages.qtpl:471
+//line messages.qtpl:493
qw422016.N().S(` </div>
`)
-//line messages.qtpl:473
+//line messages.qtpl:495
}
-//line messages.qtpl:474
+//line messages.qtpl:496
}
-//line messages.qtpl:475
+//line messages.qtpl:497
}
-//line messages.qtpl:475
+//line messages.qtpl:497
func WriteMember(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) {
-//line messages.qtpl:475
+//line messages.qtpl:497
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:475
+//line messages.qtpl:497
StreamMember(qw422016, AuthUser, Data, El)
-//line messages.qtpl:475
+//line messages.qtpl:497
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:475
+//line messages.qtpl:497
}
-//line messages.qtpl:475
+//line messages.qtpl:497
func Member(AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) string {
-//line messages.qtpl:475
+//line messages.qtpl:497
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:475
+//line messages.qtpl:497
WriteMember(qb422016, AuthUser, Data, El)
-//line messages.qtpl:475
+//line messages.qtpl:497
qs422016 := string(qb422016.B)
-//line messages.qtpl:475
+//line messages.qtpl:497
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:475
+//line messages.qtpl:497
return qs422016
-//line messages.qtpl:475
+//line messages.qtpl:497
}
-//line messages.qtpl:478
+//line messages.qtpl:500
func streamfromUsername(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) {
-//line messages.qtpl:479
+//line messages.qtpl:501
tagType := "tag"
-//line messages.qtpl:480
+//line messages.qtpl:502
if El.ToUserID != nil {
-//line messages.qtpl:481
+//line messages.qtpl:503
tagType = "pm"
-//line messages.qtpl:482
+//line messages.qtpl:504
} else if AuthUser.CanSeeHB() && (El.IsHellbanned || El.User.IsHellbanned) {
-//line messages.qtpl:483
+//line messages.qtpl:505
tagType = "htag"
-//line messages.qtpl:484
+//line messages.qtpl:506
} else if AuthUser.IsModerator() && El.Moderators {
-//line messages.qtpl:485
+//line messages.qtpl:507
tagType = "mtag"
-//line messages.qtpl:486
+//line messages.qtpl:508
}
-//line messages.qtpl:487
+//line messages.qtpl:509
if El.User.ID == AuthUser.ID {
-//line messages.qtpl:488
+//line messages.qtpl:510
if El.CanBeEdited() {
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.N().S(`<a `)
-//line messages.qtpl:488
+//line messages.qtpl:510
streamunesc(qw422016, El.User.GenerateChatStyle())
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.N().S(` href="`)
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.N().S(`?e=`)
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.E().S(El.CreatedAt.Format("15:04:05"))
-//line messages.qtpl:488
+//line messages.qtpl:510
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.N().S(`" target="iframe1">`)
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.N().S(`</a>`)
-//line messages.qtpl:488
+//line messages.qtpl:510
} else {
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.N().S(`<span `)
-//line messages.qtpl:488
+//line messages.qtpl:510
streamunesc(qw422016, El.User.GenerateChatStyle())
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.N().S(`>`)
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:488
+//line messages.qtpl:510
qw422016.N().S(`</span>`)
-//line messages.qtpl:488
+//line messages.qtpl:510
}
-//line messages.qtpl:489
+//line messages.qtpl:511
} else {
-//line messages.qtpl:489
+//line messages.qtpl:511
qw422016.N().S(`<a `)
-//line messages.qtpl:489
+//line messages.qtpl:511
streamunesc(qw422016, El.User.GenerateChatStyle())
-//line messages.qtpl:489
+//line messages.qtpl:511
qw422016.N().S(` href="`)
-//line messages.qtpl:489
+//line messages.qtpl:511
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:489
+//line messages.qtpl:511
qw422016.N().S(`?`)
-//line messages.qtpl:489
+//line messages.qtpl:511
qw422016.E().S(tagType)
-//line messages.qtpl:489
+//line messages.qtpl:511
qw422016.N().S(`=`)
-//line messages.qtpl:489
+//line messages.qtpl:511
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:489
+//line messages.qtpl:511
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:489
+//line messages.qtpl:511
qw422016.N().S(`" target="iframe1">`)
-//line messages.qtpl:489
+//line messages.qtpl:511
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:489
+//line messages.qtpl:511
qw422016.N().S(`</a>`)
-//line messages.qtpl:489
+//line messages.qtpl:511
}
-//line messages.qtpl:490
+//line messages.qtpl:512
}
-//line messages.qtpl:490
+//line messages.qtpl:512
func writefromUsername(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) {
-//line messages.qtpl:490
+//line messages.qtpl:512
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:490
+//line messages.qtpl:512
streamfromUsername(qw422016, AuthUser, Data, El, baseTopBarURL)
-//line messages.qtpl:490
+//line messages.qtpl:512
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:490
+//line messages.qtpl:512
}
-//line messages.qtpl:490
+//line messages.qtpl:512
func fromUsername(AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) string {
-//line messages.qtpl:490
+//line messages.qtpl:512
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:490
+//line messages.qtpl:512
writefromUsername(qb422016, AuthUser, Data, El, baseTopBarURL)
-//line messages.qtpl:490
+//line messages.qtpl:512
qs422016 := string(qb422016.B)
-//line messages.qtpl:490
+//line messages.qtpl:512
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:490
+//line messages.qtpl:512
return qs422016
-//line messages.qtpl:490
+//line messages.qtpl:512
}
diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go
@@ -91,6 +91,7 @@ func handleUserCmd(c *Command) (handled bool) {
handleAfkCmd(c) ||
handleDateCmd(c) ||
handleUpdateReadMarkerCmd(c) ||
+ handleCodeCmd(c) ||
handleErrorCmd(c)
}
@@ -1758,6 +1759,19 @@ func handleRefreshCmd(c *Command) (handled bool) {
return
}
+func handleCodeCmd(c *Command) (handled bool) {
+ if c.message == "/code" {
+ c.err = ErrRedirect
+ if !c.authUser.CanUseMultiline {
+ c.err = errors.New("multiline is disabled for your account")
+ return true
+ }
+ database.MsgPubSub.Pub("code_show_"+c.authUser.ID.String()+"_"+c.room.ID.String(), database.ChatMessageType{})
+ return true
+ }
+ return
+}
+
func handleUpdateReadMarkerCmd(c *Command) (handled bool) {
if c.message == "/r" {
c.db.UpdateChatReadMarker(c.authUser.ID, c.room.ID)
diff --git a/pkg/web/handlers/api/v1/topBarHandler.go b/pkg/web/handlers/api/v1/topBarHandler.go
@@ -269,6 +269,23 @@ func ChatTopBarHandler(c echo.Context) error {
origMessage := strings.TrimSpace(c.Request().PostFormValue("message"))
+ if authUser.CanUseMultiline && c.Request().PostFormValue("sender") == "codeModal" {
+ database.MsgPubSub.Pub("code_hide_"+authUser.ID.String()+"_"+room.ID.String(), database.ChatMessageType{})
+ lang := c.Request().PostFormValue("lang")
+ if !utils.InArr(lang, []string{"go", "c", "cpp", "py", "js"}) {
+ lang = ""
+ }
+ origMessage = "\n```" + lang + "\n" + origMessage + "\n```\n"
+ cmd := NewCommand(c, origMessage, room, roomKey)
+ cmd.redirectQP = redirectQP
+ MsgInterceptor{}.InterceptMsg(cmd)
+ data.Message = cmd.dataMessage
+ if cmd.err != nil {
+ return handleCmdError(cmd.err, c, data, cmd.redirectURL(), cmd.origMessage)
+ }
+ return c.Redirect(http.StatusFound, cmd.redirectURL())
+ }
+
cmd := NewCommand(c, origMessage, room, roomKey)
cmd.redirectQP = redirectQP
diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go
@@ -5147,10 +5147,14 @@ func ChatStreamMessagesHandler(c echo.Context) error {
c.Response().Flush()
// Create a subscriber and topics to listen to
+ selfCodeShowTopic := "code_show_" + authUser.ID.String() + "_" + room.ID.String()
+ selfCodeHideTopic := "code_hide_" + authUser.ID.String() + "_" + room.ID.String()
selfRefreshTopic := "refresh_" + string(authUser.Username)
readMarkerTopic := "readmarker_" + authUser.ID.String()
authorizedTopics := []string{
"refresh",
+ selfCodeShowTopic,
+ selfCodeHideTopic,
selfRefreshTopic,
readMarkerTopic,
"room_" + room.ID.String()}
@@ -5197,6 +5201,8 @@ func ChatStreamMessagesHandler(c echo.Context) error {
// We need to change the css class in order for the css to never actually complete the animation and stay "green".
var indicatorSelector bool
+ var codeModalIdx int
+
Loop:
for {
select {
@@ -5246,6 +5252,36 @@ Loop:
return nil
}
+ if topic == selfCodeShowTopic {
+ send(`<style>.code-modal{display:block;}</style>`)
+ send(`<div class="code-modal code-modal-` + strconv.Itoa(codeModalIdx) + `">
+<form method="post" target="iframe1" action="/api/v1/chat/top-bar/` + roomName + `">
+ <input type="hidden" name="csrf" value="` + csrf + `" />
+ <input type="hidden" name="sender" value="codeModal" />
+ <textarea name="message" placeholder="Paste your code here..."></textarea>
+ <div class="controls">
+ <select name="lang">
+ <option value="">Raw text</option>
+ <option value="go">Golang</option>
+ <option value="cpp">C++</option>
+ <option value="c">C</option>
+ <option value="py">Python</option>
+ <option value="js">Javascript</option>
+ </select>
+ <button type="submit">send</button>
+ </div>
+</form>
+</div>`)
+ c.Response().Flush()
+ continue
+ }
+ if topic == selfCodeHideTopic {
+ send(`<style>.code-modal-` + strconv.Itoa(codeModalIdx) + `{display:none !important;}</style>`)
+ codeModalIdx++
+ c.Response().Flush()
+ continue
+ }
+
if msgTyp.Typ == database.DeleteMsg {
// Delete msg from the map that keep track of unread messages.
// If the map is now empty, we hide the read-marker.