Fossil SCM
Fix the "(source)" links on the forum to point to the most recent edit of the post, not the original post.
Commit
33dc88c417799ea98bfb44a674df73d4a3f8ff7984ccd4c31f1d3290f0ff938a
Parent
5a7d4494939f4ac…
1 file changed
+6
-3
+6
-3
| --- src/forum.c | ||
| +++ src/forum.c | ||
| @@ -348,10 +348,11 @@ | ||
| 348 | 348 | for(p=pThread->pFirst; p; p=p->pNext){ |
| 349 | 349 | char *zDate; |
| 350 | 350 | Manifest *pPost; |
| 351 | 351 | int isPrivate; /* True for posts awaiting moderation */ |
| 352 | 352 | int sameUser; /* True if author is also the reader */ |
| 353 | + const char *zUuid; | |
| 353 | 354 | |
| 354 | 355 | pPost = manifest_get(p->fpid, CFTYPE_FORUM, 0); |
| 355 | 356 | if( pPost==0 ) continue; |
| 356 | 357 | if( p->fpid==target ){ |
| 357 | 358 | @ <div id="forum%d(p->fpid)" class="forumTime forumSel"> |
| @@ -380,19 +381,21 @@ | ||
| 380 | 381 | if( pIrt ){ |
| 381 | 382 | @ in reply to %z(href("%R/forumpost/%S?t=c",pIrt->zUuid))\ |
| 382 | 383 | @ %d(pIrt->sid)</a> |
| 383 | 384 | } |
| 384 | 385 | } |
| 386 | + zUuid = p->zUuid; | |
| 385 | 387 | if( p->pLeaf ){ |
| 386 | 388 | @ updated by %z(href("%R/forumpost/%S?t=c",p->pLeaf->zUuid))\ |
| 387 | 389 | @ %d(p->pLeaf->sid)</a> |
| 390 | + zUuid = p->pLeaf->zUuid; | |
| 388 | 391 | } |
| 389 | 392 | if( p->fpid!=target ){ |
| 390 | - @ %z(href("%R/forumpost/%S?t=c",p->zUuid))[link]</a> | |
| 393 | + @ %z(href("%R/forumpost/%S?t=c",zUuid))[link]</a> | |
| 391 | 394 | } |
| 392 | 395 | if( fossil_strcmp(pPost->zMimetype,"text/plain")!=0 ){ |
| 393 | - @ %z(href("%R/forumpost/%S?raw",p->zUuid))[source]</a> | |
| 396 | + @ %z(href("%R/forumpost/%S?raw",zUuid))[source]</a> | |
| 394 | 397 | } |
| 395 | 398 | isPrivate = content_is_private(p->fpid); |
| 396 | 399 | sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0; |
| 397 | 400 | @ </h3> |
| 398 | 401 | if( isPrivate && !g.perm.ModForum && !sameUser ){ |
| @@ -506,11 +509,11 @@ | ||
| 506 | 509 | } |
| 507 | 510 | if( fpid!=target ){ |
| 508 | 511 | @ %z(href("%R/forumpost/%S",zUuid))[link]</a> |
| 509 | 512 | } |
| 510 | 513 | if( fossil_strcmp(pPost->zMimetype,"text/plain")!=0 ){ |
| 511 | - @ %z(href("%R/forumpost/%S?raw",p->zUuid))[source]</a> | |
| 514 | + @ %z(href("%R/forumpost/%S?raw",zUuid))[source]</a> | |
| 512 | 515 | } |
| 513 | 516 | if( p->firt ){ |
| 514 | 517 | ForumEntry *pIrt = p->pPrev; |
| 515 | 518 | while( pIrt && pIrt->fpid!=p->firt ) pIrt = pIrt->pPrev; |
| 516 | 519 | if( pIrt ){ |
| 517 | 520 |
| --- src/forum.c | |
| +++ src/forum.c | |
| @@ -348,10 +348,11 @@ | |
| 348 | for(p=pThread->pFirst; p; p=p->pNext){ |
| 349 | char *zDate; |
| 350 | Manifest *pPost; |
| 351 | int isPrivate; /* True for posts awaiting moderation */ |
| 352 | int sameUser; /* True if author is also the reader */ |
| 353 | |
| 354 | pPost = manifest_get(p->fpid, CFTYPE_FORUM, 0); |
| 355 | if( pPost==0 ) continue; |
| 356 | if( p->fpid==target ){ |
| 357 | @ <div id="forum%d(p->fpid)" class="forumTime forumSel"> |
| @@ -380,19 +381,21 @@ | |
| 380 | if( pIrt ){ |
| 381 | @ in reply to %z(href("%R/forumpost/%S?t=c",pIrt->zUuid))\ |
| 382 | @ %d(pIrt->sid)</a> |
| 383 | } |
| 384 | } |
| 385 | if( p->pLeaf ){ |
| 386 | @ updated by %z(href("%R/forumpost/%S?t=c",p->pLeaf->zUuid))\ |
| 387 | @ %d(p->pLeaf->sid)</a> |
| 388 | } |
| 389 | if( p->fpid!=target ){ |
| 390 | @ %z(href("%R/forumpost/%S?t=c",p->zUuid))[link]</a> |
| 391 | } |
| 392 | if( fossil_strcmp(pPost->zMimetype,"text/plain")!=0 ){ |
| 393 | @ %z(href("%R/forumpost/%S?raw",p->zUuid))[source]</a> |
| 394 | } |
| 395 | isPrivate = content_is_private(p->fpid); |
| 396 | sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0; |
| 397 | @ </h3> |
| 398 | if( isPrivate && !g.perm.ModForum && !sameUser ){ |
| @@ -506,11 +509,11 @@ | |
| 506 | } |
| 507 | if( fpid!=target ){ |
| 508 | @ %z(href("%R/forumpost/%S",zUuid))[link]</a> |
| 509 | } |
| 510 | if( fossil_strcmp(pPost->zMimetype,"text/plain")!=0 ){ |
| 511 | @ %z(href("%R/forumpost/%S?raw",p->zUuid))[source]</a> |
| 512 | } |
| 513 | if( p->firt ){ |
| 514 | ForumEntry *pIrt = p->pPrev; |
| 515 | while( pIrt && pIrt->fpid!=p->firt ) pIrt = pIrt->pPrev; |
| 516 | if( pIrt ){ |
| 517 |
| --- src/forum.c | |
| +++ src/forum.c | |
| @@ -348,10 +348,11 @@ | |
| 348 | for(p=pThread->pFirst; p; p=p->pNext){ |
| 349 | char *zDate; |
| 350 | Manifest *pPost; |
| 351 | int isPrivate; /* True for posts awaiting moderation */ |
| 352 | int sameUser; /* True if author is also the reader */ |
| 353 | const char *zUuid; |
| 354 | |
| 355 | pPost = manifest_get(p->fpid, CFTYPE_FORUM, 0); |
| 356 | if( pPost==0 ) continue; |
| 357 | if( p->fpid==target ){ |
| 358 | @ <div id="forum%d(p->fpid)" class="forumTime forumSel"> |
| @@ -380,19 +381,21 @@ | |
| 381 | if( pIrt ){ |
| 382 | @ in reply to %z(href("%R/forumpost/%S?t=c",pIrt->zUuid))\ |
| 383 | @ %d(pIrt->sid)</a> |
| 384 | } |
| 385 | } |
| 386 | zUuid = p->zUuid; |
| 387 | if( p->pLeaf ){ |
| 388 | @ updated by %z(href("%R/forumpost/%S?t=c",p->pLeaf->zUuid))\ |
| 389 | @ %d(p->pLeaf->sid)</a> |
| 390 | zUuid = p->pLeaf->zUuid; |
| 391 | } |
| 392 | if( p->fpid!=target ){ |
| 393 | @ %z(href("%R/forumpost/%S?t=c",zUuid))[link]</a> |
| 394 | } |
| 395 | if( fossil_strcmp(pPost->zMimetype,"text/plain")!=0 ){ |
| 396 | @ %z(href("%R/forumpost/%S?raw",zUuid))[source]</a> |
| 397 | } |
| 398 | isPrivate = content_is_private(p->fpid); |
| 399 | sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0; |
| 400 | @ </h3> |
| 401 | if( isPrivate && !g.perm.ModForum && !sameUser ){ |
| @@ -506,11 +509,11 @@ | |
| 509 | } |
| 510 | if( fpid!=target ){ |
| 511 | @ %z(href("%R/forumpost/%S",zUuid))[link]</a> |
| 512 | } |
| 513 | if( fossil_strcmp(pPost->zMimetype,"text/plain")!=0 ){ |
| 514 | @ %z(href("%R/forumpost/%S?raw",zUuid))[source]</a> |
| 515 | } |
| 516 | if( p->firt ){ |
| 517 | ForumEntry *pIrt = p->pPrev; |
| 518 | while( pIrt && pIrt->fpid!=p->firt ) pIrt = pIrt->pPrev; |
| 519 | if( pIrt ){ |
| 520 |