Fossil SCM

Give sequential numbers to all display posts in the forum, and reference other forum posts in a thread by the sequence number.

drh 2019-07-17 22:26 trunk
Commit 5a7267d9e70cb9a7cc595a6c12f8c55b744f2eeabe758b0184fb6abf62b8aa0e
1 file changed +13 -24
+13 -24
--- src/forum.c
+++ src/forum.c
@@ -310,11 +310,10 @@
310310
*/
311311
static void forum_display_chronological(int froot, int target){
312312
ForumThread *pThread = forumthread_create(froot, 0);
313313
ForumEntry *p;
314314
int notAnon = login_is_individual();
315
- int iPrev = -1;
316315
for(p=pThread->pFirst; p; p=p->pNext){
317316
char *zDate;
318317
Manifest *pPost;
319318
int isPrivate; /* True for posts awaiting moderation */
320319
int sameUser; /* True if author is also the reader */
@@ -330,35 +329,31 @@
330329
}
331330
if( pPost->zThreadTitle ){
332331
@ <h1>%h(pPost->zThreadTitle)</h1>
333332
}
334333
zDate = db_text(0, "SELECT datetime(%.17g)", pPost->rDate);
335
- @ <p>By %h(pPost->zUser) on %h(zDate) (%d(p->fpid))
334
+ @ <p>(%d(p->sid)) By %h(pPost->zUser) on %h(zDate)
336335
fossil_free(zDate);
337336
if( p->pEdit ){
338
- @ edit of %z(href("%R/forumpost/%S?t=c",p->pEdit->zUuid))%d(p->fprev)</a>
337
+ @ edit of %z(href("%R/forumpost/%S?t=c",p->pEdit->zUuid))\
338
+ @ %d(p->pEdit->sid)</a>
339
+ }
340
+ if( g.perm.Debug ){
341
+ @ <span class="debug">\
342
+ @ <a href="%R/artifact/%h(p->zUuid)">(artifact)</a></span>
339343
}
340344
if( p->firt ){
341345
ForumEntry *pIrt = p->pPrev;
342346
while( pIrt && pIrt->fpid!=p->firt ) pIrt = pIrt->pPrev;
343347
if( pIrt ){
344348
@ in reply to %z(href("%R/forumpost/%S?t=c",pIrt->zUuid))\
345
- if( p->firt==iPrev ){
346
- @ previous</a>
347
- }else{
348
- @ %d(p->firt)</a>
349
- }
349
+ @ %d(pIrt->sid)</a>
350350
}
351351
}
352
- iPrev = p->fpid;
353352
if( p->pLeaf ){
354353
@ updated by %z(href("%R/forumpost/%S?t=c",p->pLeaf->zUuid))\
355
- @ %d(p->pLeaf->fpid)</a>
356
- }
357
- if( g.perm.Debug ){
358
- @ <span class="debug">\
359
- @ <a href="%R/artifact/%h(p->zUuid)">artifact</a></span>
354
+ @ %d(p->pLeaf->sid)</a>
360355
}
361356
if( p->fpid!=target ){
362357
@ %z(href("%R/forumpost/%S?t=c",p->zUuid))[link]</a>
363358
}
364359
isPrivate = content_is_private(p->fpid);
@@ -410,11 +405,10 @@
410405
int fpid;
411406
const char *zUuid;
412407
char *zDate;
413408
const char *zSel;
414409
int notAnon = login_is_individual();
415
- int iPrev = -1;
416410
int iIndentScale = 4;
417411
418412
pThread = forumthread_create(froot, 1);
419413
for(p=pThread->pFirst; p; p=p->pNext){
420414
if( p->fpid==target ){
@@ -450,15 +444,15 @@
450444
if( pPost==0 ) continue;
451445
if( pPost->zThreadTitle ){
452446
@ <h1>%h(pPost->zThreadTitle)</h1>
453447
}
454448
zDate = db_text(0, "SELECT datetime(%.17g)", pOPost->rDate);
455
- @ <p>By %h(pOPost->zUser) on %h(zDate)
449
+ @ <p>(%d(p->sid)) By %h(pOPost->zUser) on %h(zDate)
456450
fossil_free(zDate);
457451
if( g.perm.Debug ){
458452
@ <span class="debug">\
459
- @ <a href="%R/artifact/%h(p->zUuid)">(%d(p->fpid))</a></span>
453
+ @ <a href="%R/artifact/%h(p->zUuid)">(artifact)</a></span>
460454
}
461455
if( p->pLeaf ){
462456
zDate = db_text(0, "SELECT datetime(%.17g)", pPost->rDate);
463457
if( fossil_strcmp(pOPost->zUser,pPost->zUser)==0 ){
464458
@ and edited on %h(zDate)
@@ -466,11 +460,11 @@
466460
@ as edited by %h(pPost->zUser) on %h(zDate)
467461
}
468462
fossil_free(zDate);
469463
if( g.perm.Debug ){
470464
@ <span class="debug">\
471
- @ <a href="%R/artifact/%h(p->pLeaf->zUuid)">(%d(fpid))</a></span>
465
+ @ <a href="%R/artifact/%h(p->pLeaf->zUuid)">(artifact)</a></span>
472466
}
473467
manifest_destroy(pOPost);
474468
}
475469
if( fpid!=target ){
476470
@ %z(href("%R/forumpost/%S",zUuid))[link]</a>
@@ -478,18 +472,13 @@
478472
if( p->firt ){
479473
ForumEntry *pIrt = p->pPrev;
480474
while( pIrt && pIrt->fpid!=p->firt ) pIrt = pIrt->pPrev;
481475
if( pIrt ){
482476
@ in reply to %z(href("%R/forumpost/%S?t=h",pIrt->zUuid))\
483
- if( p->firt==iPrev ){
484
- @ previous</a>
485
- }else{
486
- @ %d(p->firt)</a>
487
- }
477
+ @ %d(pIrt->sid)</a>
488478
}
489479
}
490
- iPrev = p->fpid;
491480
isPrivate = content_is_private(fpid);
492481
sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
493482
if( isPrivate && !g.perm.ModForum && !sameUser ){
494483
@ <p><span class="modpending">Awaiting Moderator Approval</span></p>
495484
}else{
496485
--- src/forum.c
+++ src/forum.c
@@ -310,11 +310,10 @@
310 */
311 static void forum_display_chronological(int froot, int target){
312 ForumThread *pThread = forumthread_create(froot, 0);
313 ForumEntry *p;
314 int notAnon = login_is_individual();
315 int iPrev = -1;
316 for(p=pThread->pFirst; p; p=p->pNext){
317 char *zDate;
318 Manifest *pPost;
319 int isPrivate; /* True for posts awaiting moderation */
320 int sameUser; /* True if author is also the reader */
@@ -330,35 +329,31 @@
330 }
331 if( pPost->zThreadTitle ){
332 @ <h1>%h(pPost->zThreadTitle)</h1>
333 }
334 zDate = db_text(0, "SELECT datetime(%.17g)", pPost->rDate);
335 @ <p>By %h(pPost->zUser) on %h(zDate) (%d(p->fpid))
336 fossil_free(zDate);
337 if( p->pEdit ){
338 @ edit of %z(href("%R/forumpost/%S?t=c",p->pEdit->zUuid))%d(p->fprev)</a>
 
 
 
 
 
339 }
340 if( p->firt ){
341 ForumEntry *pIrt = p->pPrev;
342 while( pIrt && pIrt->fpid!=p->firt ) pIrt = pIrt->pPrev;
343 if( pIrt ){
344 @ in reply to %z(href("%R/forumpost/%S?t=c",pIrt->zUuid))\
345 if( p->firt==iPrev ){
346 @ previous</a>
347 }else{
348 @ %d(p->firt)</a>
349 }
350 }
351 }
352 iPrev = p->fpid;
353 if( p->pLeaf ){
354 @ updated by %z(href("%R/forumpost/%S?t=c",p->pLeaf->zUuid))\
355 @ %d(p->pLeaf->fpid)</a>
356 }
357 if( g.perm.Debug ){
358 @ <span class="debug">\
359 @ <a href="%R/artifact/%h(p->zUuid)">artifact</a></span>
360 }
361 if( p->fpid!=target ){
362 @ %z(href("%R/forumpost/%S?t=c",p->zUuid))[link]</a>
363 }
364 isPrivate = content_is_private(p->fpid);
@@ -410,11 +405,10 @@
410 int fpid;
411 const char *zUuid;
412 char *zDate;
413 const char *zSel;
414 int notAnon = login_is_individual();
415 int iPrev = -1;
416 int iIndentScale = 4;
417
418 pThread = forumthread_create(froot, 1);
419 for(p=pThread->pFirst; p; p=p->pNext){
420 if( p->fpid==target ){
@@ -450,15 +444,15 @@
450 if( pPost==0 ) continue;
451 if( pPost->zThreadTitle ){
452 @ <h1>%h(pPost->zThreadTitle)</h1>
453 }
454 zDate = db_text(0, "SELECT datetime(%.17g)", pOPost->rDate);
455 @ <p>By %h(pOPost->zUser) on %h(zDate)
456 fossil_free(zDate);
457 if( g.perm.Debug ){
458 @ <span class="debug">\
459 @ <a href="%R/artifact/%h(p->zUuid)">(%d(p->fpid))</a></span>
460 }
461 if( p->pLeaf ){
462 zDate = db_text(0, "SELECT datetime(%.17g)", pPost->rDate);
463 if( fossil_strcmp(pOPost->zUser,pPost->zUser)==0 ){
464 @ and edited on %h(zDate)
@@ -466,11 +460,11 @@
466 @ as edited by %h(pPost->zUser) on %h(zDate)
467 }
468 fossil_free(zDate);
469 if( g.perm.Debug ){
470 @ <span class="debug">\
471 @ <a href="%R/artifact/%h(p->pLeaf->zUuid)">(%d(fpid))</a></span>
472 }
473 manifest_destroy(pOPost);
474 }
475 if( fpid!=target ){
476 @ %z(href("%R/forumpost/%S",zUuid))[link]</a>
@@ -478,18 +472,13 @@
478 if( p->firt ){
479 ForumEntry *pIrt = p->pPrev;
480 while( pIrt && pIrt->fpid!=p->firt ) pIrt = pIrt->pPrev;
481 if( pIrt ){
482 @ in reply to %z(href("%R/forumpost/%S?t=h",pIrt->zUuid))\
483 if( p->firt==iPrev ){
484 @ previous</a>
485 }else{
486 @ %d(p->firt)</a>
487 }
488 }
489 }
490 iPrev = p->fpid;
491 isPrivate = content_is_private(fpid);
492 sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
493 if( isPrivate && !g.perm.ModForum && !sameUser ){
494 @ <p><span class="modpending">Awaiting Moderator Approval</span></p>
495 }else{
496
--- src/forum.c
+++ src/forum.c
@@ -310,11 +310,10 @@
310 */
311 static void forum_display_chronological(int froot, int target){
312 ForumThread *pThread = forumthread_create(froot, 0);
313 ForumEntry *p;
314 int notAnon = login_is_individual();
 
315 for(p=pThread->pFirst; p; p=p->pNext){
316 char *zDate;
317 Manifest *pPost;
318 int isPrivate; /* True for posts awaiting moderation */
319 int sameUser; /* True if author is also the reader */
@@ -330,35 +329,31 @@
329 }
330 if( pPost->zThreadTitle ){
331 @ <h1>%h(pPost->zThreadTitle)</h1>
332 }
333 zDate = db_text(0, "SELECT datetime(%.17g)", pPost->rDate);
334 @ <p>(%d(p->sid)) By %h(pPost->zUser) on %h(zDate)
335 fossil_free(zDate);
336 if( p->pEdit ){
337 @ edit of %z(href("%R/forumpost/%S?t=c",p->pEdit->zUuid))\
338 @ %d(p->pEdit->sid)</a>
339 }
340 if( g.perm.Debug ){
341 @ <span class="debug">\
342 @ <a href="%R/artifact/%h(p->zUuid)">(artifact)</a></span>
343 }
344 if( p->firt ){
345 ForumEntry *pIrt = p->pPrev;
346 while( pIrt && pIrt->fpid!=p->firt ) pIrt = pIrt->pPrev;
347 if( pIrt ){
348 @ in reply to %z(href("%R/forumpost/%S?t=c",pIrt->zUuid))\
349 @ %d(pIrt->sid)</a>
 
 
 
 
350 }
351 }
 
352 if( p->pLeaf ){
353 @ updated by %z(href("%R/forumpost/%S?t=c",p->pLeaf->zUuid))\
354 @ %d(p->pLeaf->sid)</a>
 
 
 
 
355 }
356 if( p->fpid!=target ){
357 @ %z(href("%R/forumpost/%S?t=c",p->zUuid))[link]</a>
358 }
359 isPrivate = content_is_private(p->fpid);
@@ -410,11 +405,10 @@
405 int fpid;
406 const char *zUuid;
407 char *zDate;
408 const char *zSel;
409 int notAnon = login_is_individual();
 
410 int iIndentScale = 4;
411
412 pThread = forumthread_create(froot, 1);
413 for(p=pThread->pFirst; p; p=p->pNext){
414 if( p->fpid==target ){
@@ -450,15 +444,15 @@
444 if( pPost==0 ) continue;
445 if( pPost->zThreadTitle ){
446 @ <h1>%h(pPost->zThreadTitle)</h1>
447 }
448 zDate = db_text(0, "SELECT datetime(%.17g)", pOPost->rDate);
449 @ <p>(%d(p->sid)) By %h(pOPost->zUser) on %h(zDate)
450 fossil_free(zDate);
451 if( g.perm.Debug ){
452 @ <span class="debug">\
453 @ <a href="%R/artifact/%h(p->zUuid)">(artifact)</a></span>
454 }
455 if( p->pLeaf ){
456 zDate = db_text(0, "SELECT datetime(%.17g)", pPost->rDate);
457 if( fossil_strcmp(pOPost->zUser,pPost->zUser)==0 ){
458 @ and edited on %h(zDate)
@@ -466,11 +460,11 @@
460 @ as edited by %h(pPost->zUser) on %h(zDate)
461 }
462 fossil_free(zDate);
463 if( g.perm.Debug ){
464 @ <span class="debug">\
465 @ <a href="%R/artifact/%h(p->pLeaf->zUuid)">(artifact)</a></span>
466 }
467 manifest_destroy(pOPost);
468 }
469 if( fpid!=target ){
470 @ %z(href("%R/forumpost/%S",zUuid))[link]</a>
@@ -478,18 +472,13 @@
472 if( p->firt ){
473 ForumEntry *pIrt = p->pPrev;
474 while( pIrt && pIrt->fpid!=p->firt ) pIrt = pIrt->pPrev;
475 if( pIrt ){
476 @ in reply to %z(href("%R/forumpost/%S?t=h",pIrt->zUuid))\
477 @ %d(pIrt->sid)</a>
 
 
 
 
478 }
479 }
 
480 isPrivate = content_is_private(fpid);
481 sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
482 if( isPrivate && !g.perm.ModForum && !sameUser ){
483 @ <p><span class="modpending">Awaiting Moderator Approval</span></p>
484 }else{
485

Keyboard Shortcuts

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