Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | In the forum thread constructor, if an post in a forum thread is a phantom, reassign the descendents of that post to be descendents of the root. This fixes the hierarchical view for the problem described at https://www.fossil-scm.org/forum/forumpost/dc623b995f |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
bed0dd1a956c08874c6defeb99dcafd3 |
User & Date: | drh 2020-04-18 19:40:21 |
Context
2020-04-18
| ||
21:05 | Add the ability to display the history of edits to a single timeline post. Improvements to the CSS for timeline display in the default skin. ... (check-in: 34d8d7e7 user: drh tags: trunk) | |
19:40 | In the forum thread constructor, if an post in a forum thread is a phantom, reassign the descendents of that post to be descendents of the root. This fixes the hierarchical view for the problem described at https://www.fossil-scm.org/forum/forumpost/dc623b995f ... (check-in: bed0dd1a user: drh tags: trunk) | |
19:15 | Improved debugging output for forum displays: Show the RID on "(artifact)" links. ... (check-in: 14795faa user: drh tags: trunk) | |
Changes
Changes to src/forum.c.
︙ | ︙ | |||
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | ** Construct a ForumThread object given the root record id. */ static ForumThread *forumthread_create(int froot, int computeHierarchy){ ForumThread *pThread; ForumEntry *pEntry; Stmt q; int sid = 1; pThread = fossil_malloc( sizeof(*pThread) ); memset(pThread, 0, sizeof(*pThread)); db_prepare(&q, "SELECT fpid, firt, fprev, (SELECT uuid FROM blob WHERE rid=fpid)" " FROM forumpost" " WHERE froot=%d ORDER BY fmtime", froot ); while( db_step(&q)==SQLITE_ROW ){ pEntry = fossil_malloc( sizeof(*pEntry) ); memset(pEntry, 0, sizeof(*pEntry)); pEntry->fpid = db_column_int(&q, 0); pEntry->firt = db_column_int(&q, 1); pEntry->fprev = db_column_int(&q, 2); pEntry->zUuid = fossil_strdup(db_column_text(&q,3)); pEntry->mfirt = pEntry->firt; pEntry->sid = sid++; pEntry->pPrev = pThread->pLast; pEntry->pNext = 0; if( pThread->pLast==0 ){ pThread->pFirst = pEntry; }else{ pThread->pLast->pNext = pEntry; } pThread->pLast = pEntry; } db_finalize(&q); /* Establish which entries are the latest edit. After this loop ** completes, entries that have non-NULL pLeaf should not be ** displayed. */ for(pEntry=pThread->pFirst; pEntry; pEntry=pEntry->pNext){ if( pEntry->fprev ){ | > > > > > > > | 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | ** Construct a ForumThread object given the root record id. */ static ForumThread *forumthread_create(int froot, int computeHierarchy){ ForumThread *pThread; ForumEntry *pEntry; Stmt q; int sid = 1; Bag seen = Bag_INIT; pThread = fossil_malloc( sizeof(*pThread) ); memset(pThread, 0, sizeof(*pThread)); db_prepare(&q, "SELECT fpid, firt, fprev, (SELECT uuid FROM blob WHERE rid=fpid)" " FROM forumpost" " WHERE froot=%d ORDER BY fmtime", froot ); while( db_step(&q)==SQLITE_ROW ){ pEntry = fossil_malloc( sizeof(*pEntry) ); memset(pEntry, 0, sizeof(*pEntry)); pEntry->fpid = db_column_int(&q, 0); pEntry->firt = db_column_int(&q, 1); pEntry->fprev = db_column_int(&q, 2); pEntry->zUuid = fossil_strdup(db_column_text(&q,3)); pEntry->mfirt = pEntry->firt; pEntry->sid = sid++; pEntry->pPrev = pThread->pLast; pEntry->pNext = 0; bag_insert(&seen, pEntry->fpid); if( pThread->pLast==0 ){ pThread->pFirst = pEntry; }else{ pThread->pLast->pNext = pEntry; } if( pEntry->firt && !bag_find(&seen,pEntry->firt) ){ pEntry->firt = froot; pEntry->mfirt = froot; } pThread->pLast = pEntry; } db_finalize(&q); bag_clear(&seen); /* Establish which entries are the latest edit. After this loop ** completes, entries that have non-NULL pLeaf should not be ** displayed. */ for(pEntry=pThread->pFirst; pEntry; pEntry=pEntry->pNext){ if( pEntry->fprev ){ |
︙ | ︙ |