Fossil SCM

chat message deletion: admins now have both delete local and delete global options, in case they want to remove something from local view without deleting it for all users.

stephan 2020-12-24 22:07 trunk
Commit b12d69d9f4686cef96dab5b37902b0d48581116228d0f74c91fa93d9a0d0b664
2 files changed +17 -9 +8
+17 -9
--- src/chat.js
+++ src/chat.js
@@ -297,26 +297,34 @@
297297
if(d.getMinutes().toString()!=="NaN"){
298298
// Date works, render informative timestamps
299299
D.append(this.e,
300300
D.append(D.span(), localTimeString(d)," client-local"),
301301
D.append(D.span(), iso8601ish(d)));
302
- }else{
302
+ }else{
303303
// Date doesn't work, so dumb it down...
304304
D.append(this.e, D.append(D.span(), eMsg.dataset.timestamp," GMT"));
305305
}
306306
const toolbar = D.addClass(D.div(), 'toolbar');
307
- const btnDelete = D.button("Delete "+
308
- (Chat.userMayDelete(eMsg)
309
- ? "globally" : "locally"));
307
+ D.append(this.e, toolbar);
308
+ const btnDeleteLocal = D.button("Delete locally");
309
+ D.append(toolbar, btnDeleteLocal);
310310
const self = this;
311
- btnDelete.addEventListener('click', function(){
311
+ btnDeleteLocal.addEventListener('click', function(){
312
+ console.debug("local-only delete");
312313
self.hide();
313
- Chat.deleteMessage(eMsg);
314
+ Chat.deleteMessageElem(eMsg);
314315
});
315
- D.append(this.e, toolbar);
316
- D.append(toolbar, btnDelete);
317
- }
316
+ if(Chat.userMayDelete(eMsg)){
317
+ const btnDeleteGlobal = D.button("Delete globally");
318
+ D.append(toolbar, btnDeleteGlobal);
319
+ btnDeleteGlobal.addEventListener('click', function(){
320
+ console.debug("global delete");
321
+ self.hide();
322
+ Chat.deleteMessage(eMsg);
323
+ });
324
+ }
325
+ }/*refresh()*/
318326
});
319327
f.popup.installClickToHide();
320328
f.popup.hide = function(){
321329
delete this._eMsg;
322330
D.clearElement(this.e);
323331
--- src/chat.js
+++ src/chat.js
@@ -297,26 +297,34 @@
297 if(d.getMinutes().toString()!=="NaN"){
298 // Date works, render informative timestamps
299 D.append(this.e,
300 D.append(D.span(), localTimeString(d)," client-local"),
301 D.append(D.span(), iso8601ish(d)));
302 }else{
303 // Date doesn't work, so dumb it down...
304 D.append(this.e, D.append(D.span(), eMsg.dataset.timestamp," GMT"));
305 }
306 const toolbar = D.addClass(D.div(), 'toolbar');
307 const btnDelete = D.button("Delete "+
308 (Chat.userMayDelete(eMsg)
309 ? "globally" : "locally"));
310 const self = this;
311 btnDelete.addEventListener('click', function(){
 
312 self.hide();
313 Chat.deleteMessage(eMsg);
314 });
315 D.append(this.e, toolbar);
316 D.append(toolbar, btnDelete);
317 }
 
 
 
 
 
 
 
318 });
319 f.popup.installClickToHide();
320 f.popup.hide = function(){
321 delete this._eMsg;
322 D.clearElement(this.e);
323
--- src/chat.js
+++ src/chat.js
@@ -297,26 +297,34 @@
297 if(d.getMinutes().toString()!=="NaN"){
298 // Date works, render informative timestamps
299 D.append(this.e,
300 D.append(D.span(), localTimeString(d)," client-local"),
301 D.append(D.span(), iso8601ish(d)));
302 }else{
303 // Date doesn't work, so dumb it down...
304 D.append(this.e, D.append(D.span(), eMsg.dataset.timestamp," GMT"));
305 }
306 const toolbar = D.addClass(D.div(), 'toolbar');
307 D.append(this.e, toolbar);
308 const btnDeleteLocal = D.button("Delete locally");
309 D.append(toolbar, btnDeleteLocal);
310 const self = this;
311 btnDeleteLocal.addEventListener('click', function(){
312 console.debug("local-only delete");
313 self.hide();
314 Chat.deleteMessageElem(eMsg);
315 });
316 if(Chat.userMayDelete(eMsg)){
317 const btnDeleteGlobal = D.button("Delete globally");
318 D.append(toolbar, btnDeleteGlobal);
319 btnDeleteGlobal.addEventListener('click', function(){
320 console.debug("global delete");
321 self.hide();
322 Chat.deleteMessage(eMsg);
323 });
324 }
325 }/*refresh()*/
326 });
327 f.popup.installClickToHide();
328 f.popup.hide = function(){
329 delete this._eMsg;
330 D.clearElement(this.e);
331
--- src/default.css
+++ src/default.css
@@ -1512,17 +1512,25 @@
15121512
text-align: left;
15131513
opacity: 0.8;
15141514
display: flex;
15151515
flex-direction: column;
15161516
align-items: stretch;
1517
+ padding: 0.25em;
15171518
}
15181519
body.chat .chat-message-popup > span { white-space: nowrap; }
15191520
body.chat .chat-message-popup > .toolbar {
15201521
padding: 0.2em;
15211522
margin: 0;
15221523
border: 2px inset rgba(0,0,0,0.3);
15231524
border-radius: 0.25em;
1525
+ display: flex;
1526
+ flex-direction: row;
1527
+ justify-content: stretch;
1528
+ flex-wrap: wrap;
1529
+}
1530
+body.chat .chat-message-popup > .toolbar > button {
1531
+ flex: 1 1 auto;
15241532
}
15251533
15261534
body.chat .load-msg-toolbar {
15271535
border-radius: 0.25em;
15281536
padding: 0.1em 0.2em;
15291537
--- src/default.css
+++ src/default.css
@@ -1512,17 +1512,25 @@
1512 text-align: left;
1513 opacity: 0.8;
1514 display: flex;
1515 flex-direction: column;
1516 align-items: stretch;
 
1517 }
1518 body.chat .chat-message-popup > span { white-space: nowrap; }
1519 body.chat .chat-message-popup > .toolbar {
1520 padding: 0.2em;
1521 margin: 0;
1522 border: 2px inset rgba(0,0,0,0.3);
1523 border-radius: 0.25em;
 
 
 
 
 
 
 
1524 }
1525
1526 body.chat .load-msg-toolbar {
1527 border-radius: 0.25em;
1528 padding: 0.1em 0.2em;
1529
--- src/default.css
+++ src/default.css
@@ -1512,17 +1512,25 @@
1512 text-align: left;
1513 opacity: 0.8;
1514 display: flex;
1515 flex-direction: column;
1516 align-items: stretch;
1517 padding: 0.25em;
1518 }
1519 body.chat .chat-message-popup > span { white-space: nowrap; }
1520 body.chat .chat-message-popup > .toolbar {
1521 padding: 0.2em;
1522 margin: 0;
1523 border: 2px inset rgba(0,0,0,0.3);
1524 border-radius: 0.25em;
1525 display: flex;
1526 flex-direction: row;
1527 justify-content: stretch;
1528 flex-wrap: wrap;
1529 }
1530 body.chat .chat-message-popup > .toolbar > button {
1531 flex: 1 1 auto;
1532 }
1533
1534 body.chat .load-msg-toolbar {
1535 border-radius: 0.25em;
1536 padding: 0.1em 0.2em;
1537

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button