Fossil SCM
Try to make moderation a little easier, as recent experience suggests that will be a big deal with the forum.
Commit
a9e5a1eefd71c5b7f48474197f59573675768ceb5fe29fa5f7f763d96f7b7082
Parent
6a667edb0964140…
4 files changed
+3
-8
+3
+2
-8
+17
-2
+3
-8
| --- src/attach.c | ||
| +++ src/attach.c | ||
| @@ -106,15 +106,13 @@ | ||
| 106 | 106 | }else{ |
| 107 | 107 | zUrlTail = mprintf("page=%t&file=%t", zTarget, zFilename); |
| 108 | 108 | } |
| 109 | 109 | @ <li><p> |
| 110 | 110 | @ Attachment %z(href("%R/ainfo/%!S",zUuid))%S(zUuid)</a> |
| 111 | - if( moderation_pending(attachid) ){ | |
| 112 | - @ <span class="modpending">*** Awaiting Moderator Approval ***</span> | |
| 113 | - } | |
| 111 | + moderation_pending_www(attachid); | |
| 114 | 112 | @ <br /><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a> |
| 115 | - @ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br /> | |
| 113 | + @ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br> | |
| 116 | 114 | if( zComment ) while( fossil_isspace(zComment[0]) ) zComment++; |
| 117 | 115 | if( zComment && zComment[0] ){ |
| 118 | 116 | @ %!W(zComment)<br /> |
| 119 | 117 | } |
| 120 | 118 | if( zPage==0 && zTkt==0 && zTechNote==0 ){ |
| @@ -564,14 +562,11 @@ | ||
| 564 | 562 | @ <tr><th>Artifact ID:</th> |
| 565 | 563 | @ <td>%z(href("%R/artifact/%!S",zUuid))%s(zUuid)</a> |
| 566 | 564 | if( g.perm.Setup ){ |
| 567 | 565 | @ (%d(rid)) |
| 568 | 566 | } |
| 569 | - modPending = moderation_pending(rid); | |
| 570 | - if( modPending ){ | |
| 571 | - @ <span class="modpending">*** Awaiting Moderator Approval ***</span> | |
| 572 | - } | |
| 567 | + modPending = moderation_pending_www(rid); | |
| 573 | 568 | if( zTktUuid ){ |
| 574 | 569 | @ <tr><th>Ticket:</th> |
| 575 | 570 | @ <td>%z(href("%R/tktview/%s",zTktUuid))%s(zTktUuid)</a></td></tr> |
| 576 | 571 | } |
| 577 | 572 | if( zTNUuid ){ |
| 578 | 573 |
| --- src/attach.c | |
| +++ src/attach.c | |
| @@ -106,15 +106,13 @@ | |
| 106 | }else{ |
| 107 | zUrlTail = mprintf("page=%t&file=%t", zTarget, zFilename); |
| 108 | } |
| 109 | @ <li><p> |
| 110 | @ Attachment %z(href("%R/ainfo/%!S",zUuid))%S(zUuid)</a> |
| 111 | if( moderation_pending(attachid) ){ |
| 112 | @ <span class="modpending">*** Awaiting Moderator Approval ***</span> |
| 113 | } |
| 114 | @ <br /><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a> |
| 115 | @ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br /> |
| 116 | if( zComment ) while( fossil_isspace(zComment[0]) ) zComment++; |
| 117 | if( zComment && zComment[0] ){ |
| 118 | @ %!W(zComment)<br /> |
| 119 | } |
| 120 | if( zPage==0 && zTkt==0 && zTechNote==0 ){ |
| @@ -564,14 +562,11 @@ | |
| 564 | @ <tr><th>Artifact ID:</th> |
| 565 | @ <td>%z(href("%R/artifact/%!S",zUuid))%s(zUuid)</a> |
| 566 | if( g.perm.Setup ){ |
| 567 | @ (%d(rid)) |
| 568 | } |
| 569 | modPending = moderation_pending(rid); |
| 570 | if( modPending ){ |
| 571 | @ <span class="modpending">*** Awaiting Moderator Approval ***</span> |
| 572 | } |
| 573 | if( zTktUuid ){ |
| 574 | @ <tr><th>Ticket:</th> |
| 575 | @ <td>%z(href("%R/tktview/%s",zTktUuid))%s(zTktUuid)</a></td></tr> |
| 576 | } |
| 577 | if( zTNUuid ){ |
| 578 |
| --- src/attach.c | |
| +++ src/attach.c | |
| @@ -106,15 +106,13 @@ | |
| 106 | }else{ |
| 107 | zUrlTail = mprintf("page=%t&file=%t", zTarget, zFilename); |
| 108 | } |
| 109 | @ <li><p> |
| 110 | @ Attachment %z(href("%R/ainfo/%!S",zUuid))%S(zUuid)</a> |
| 111 | moderation_pending_www(attachid); |
| 112 | @ <br /><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a> |
| 113 | @ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br> |
| 114 | if( zComment ) while( fossil_isspace(zComment[0]) ) zComment++; |
| 115 | if( zComment && zComment[0] ){ |
| 116 | @ %!W(zComment)<br /> |
| 117 | } |
| 118 | if( zPage==0 && zTkt==0 && zTechNote==0 ){ |
| @@ -564,14 +562,11 @@ | |
| 562 | @ <tr><th>Artifact ID:</th> |
| 563 | @ <td>%z(href("%R/artifact/%!S",zUuid))%s(zUuid)</a> |
| 564 | if( g.perm.Setup ){ |
| 565 | @ (%d(rid)) |
| 566 | } |
| 567 | modPending = moderation_pending_www(rid); |
| 568 | if( zTktUuid ){ |
| 569 | @ <tr><th>Ticket:</th> |
| 570 | @ <td>%z(href("%R/tktview/%s",zTktUuid))%s(zTktUuid)</a></td></tr> |
| 571 | } |
| 572 | if( zTNUuid ){ |
| 573 |
+3
| --- src/forum.c | ||
| +++ src/forum.c | ||
| @@ -913,10 +913,13 @@ | ||
| 913 | 913 | } |
| 914 | 914 | style_header("Forum"); |
| 915 | 915 | if( g.perm.WrForum ){ |
| 916 | 916 | style_submenu_element("New Message","%R/forumnew"); |
| 917 | 917 | } |
| 918 | + if( g.perm.ModForum ){ | |
| 919 | + style_submenu_element("Moderation Requests", "%R/modreq"); | |
| 920 | + } | |
| 918 | 921 | if( search_screen(SRCH_FORUM, 0) ){ |
| 919 | 922 | style_submenu_element("Recent Threads","%R/forum"); |
| 920 | 923 | style_footer(); |
| 921 | 924 | return; |
| 922 | 925 | } |
| 923 | 926 |
| --- src/forum.c | |
| +++ src/forum.c | |
| @@ -913,10 +913,13 @@ | |
| 913 | } |
| 914 | style_header("Forum"); |
| 915 | if( g.perm.WrForum ){ |
| 916 | style_submenu_element("New Message","%R/forumnew"); |
| 917 | } |
| 918 | if( search_screen(SRCH_FORUM, 0) ){ |
| 919 | style_submenu_element("Recent Threads","%R/forum"); |
| 920 | style_footer(); |
| 921 | return; |
| 922 | } |
| 923 |
| --- src/forum.c | |
| +++ src/forum.c | |
| @@ -913,10 +913,13 @@ | |
| 913 | } |
| 914 | style_header("Forum"); |
| 915 | if( g.perm.WrForum ){ |
| 916 | style_submenu_element("New Message","%R/forumnew"); |
| 917 | } |
| 918 | if( g.perm.ModForum ){ |
| 919 | style_submenu_element("Moderation Requests", "%R/modreq"); |
| 920 | } |
| 921 | if( search_screen(SRCH_FORUM, 0) ){ |
| 922 | style_submenu_element("Recent Threads","%R/forum"); |
| 923 | style_footer(); |
| 924 | return; |
| 925 | } |
| 926 |
+2
-8
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -935,14 +935,11 @@ | ||
| 935 | 935 | @ <tr><th>Artifact ID:</th> |
| 936 | 936 | @ <td>%z(href("%R/artifact/%!S",zUuid))%s(zUuid)</a> |
| 937 | 937 | if( g.perm.Setup ){ |
| 938 | 938 | @ (%d(rid)) |
| 939 | 939 | } |
| 940 | - modPending = moderation_pending(rid); | |
| 941 | - if( modPending ){ | |
| 942 | - @ <span class="modpending">*** Awaiting Moderator Approval ***</span> | |
| 943 | - } | |
| 940 | + modPending = moderation_pending_www(rid); | |
| 944 | 941 | @ </td></tr> |
| 945 | 942 | @ <tr><th>Page Name:</th><td>%h(pWiki->zWikiTitle)</td></tr> |
| 946 | 943 | @ <tr><th>Date:</th><td> |
| 947 | 944 | hyperlink_to_date(zDate, "</td></tr>"); |
| 948 | 945 | @ <tr><th>Original User:</th><td> |
| @@ -2237,14 +2234,11 @@ | ||
| 2237 | 2234 | @ <tr><th>Artifact ID:</th> |
| 2238 | 2235 | @ <td>%z(href("%R/artifact/%!S",zUuid))%s(zUuid)</a> |
| 2239 | 2236 | if( g.perm.Setup ){ |
| 2240 | 2237 | @ (%d(rid)) |
| 2241 | 2238 | } |
| 2242 | - modPending = moderation_pending(rid); | |
| 2243 | - if( modPending ){ | |
| 2244 | - @ <span class="modpending">*** Awaiting Moderator Approval ***</span> | |
| 2245 | - } | |
| 2239 | + modPending = moderation_pending_www(rid); | |
| 2246 | 2240 | @ <tr><th>Ticket:</th> |
| 2247 | 2241 | @ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a> |
| 2248 | 2242 | if( zTktTitle ){ |
| 2249 | 2243 | @<br />%h(zTktTitle) |
| 2250 | 2244 | } |
| 2251 | 2245 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -935,14 +935,11 @@ | |
| 935 | @ <tr><th>Artifact ID:</th> |
| 936 | @ <td>%z(href("%R/artifact/%!S",zUuid))%s(zUuid)</a> |
| 937 | if( g.perm.Setup ){ |
| 938 | @ (%d(rid)) |
| 939 | } |
| 940 | modPending = moderation_pending(rid); |
| 941 | if( modPending ){ |
| 942 | @ <span class="modpending">*** Awaiting Moderator Approval ***</span> |
| 943 | } |
| 944 | @ </td></tr> |
| 945 | @ <tr><th>Page Name:</th><td>%h(pWiki->zWikiTitle)</td></tr> |
| 946 | @ <tr><th>Date:</th><td> |
| 947 | hyperlink_to_date(zDate, "</td></tr>"); |
| 948 | @ <tr><th>Original User:</th><td> |
| @@ -2237,14 +2234,11 @@ | |
| 2237 | @ <tr><th>Artifact ID:</th> |
| 2238 | @ <td>%z(href("%R/artifact/%!S",zUuid))%s(zUuid)</a> |
| 2239 | if( g.perm.Setup ){ |
| 2240 | @ (%d(rid)) |
| 2241 | } |
| 2242 | modPending = moderation_pending(rid); |
| 2243 | if( modPending ){ |
| 2244 | @ <span class="modpending">*** Awaiting Moderator Approval ***</span> |
| 2245 | } |
| 2246 | @ <tr><th>Ticket:</th> |
| 2247 | @ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a> |
| 2248 | if( zTktTitle ){ |
| 2249 | @<br />%h(zTktTitle) |
| 2250 | } |
| 2251 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -935,14 +935,11 @@ | |
| 935 | @ <tr><th>Artifact ID:</th> |
| 936 | @ <td>%z(href("%R/artifact/%!S",zUuid))%s(zUuid)</a> |
| 937 | if( g.perm.Setup ){ |
| 938 | @ (%d(rid)) |
| 939 | } |
| 940 | modPending = moderation_pending_www(rid); |
| 941 | @ </td></tr> |
| 942 | @ <tr><th>Page Name:</th><td>%h(pWiki->zWikiTitle)</td></tr> |
| 943 | @ <tr><th>Date:</th><td> |
| 944 | hyperlink_to_date(zDate, "</td></tr>"); |
| 945 | @ <tr><th>Original User:</th><td> |
| @@ -2237,14 +2234,11 @@ | |
| 2234 | @ <tr><th>Artifact ID:</th> |
| 2235 | @ <td>%z(href("%R/artifact/%!S",zUuid))%s(zUuid)</a> |
| 2236 | if( g.perm.Setup ){ |
| 2237 | @ (%d(rid)) |
| 2238 | } |
| 2239 | modPending = moderation_pending_www(rid); |
| 2240 | @ <tr><th>Ticket:</th> |
| 2241 | @ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a> |
| 2242 | if( zTktTitle ){ |
| 2243 | @<br />%h(zTktTitle) |
| 2244 | } |
| 2245 |
+17
-2
| --- src/moderate.c | ||
| +++ src/moderate.c | ||
| @@ -54,10 +54,25 @@ | ||
| 54 | 54 | db_bind_int(&q, ":objid", rid); |
| 55 | 55 | rc = db_step(&q)==SQLITE_ROW; |
| 56 | 56 | db_reset(&q); |
| 57 | 57 | return rc; |
| 58 | 58 | } |
| 59 | + | |
| 60 | +/* | |
| 61 | +** If the rid object is being held for moderation, write out | |
| 62 | +** an "awaiting moderation" message and return true. | |
| 63 | +** | |
| 64 | +** If the object is not being held for moderation, simply return | |
| 65 | +** false without generating any output. | |
| 66 | +*/ | |
| 67 | +int moderation_pending_www(int rid){ | |
| 68 | + int pending = moderation_pending(rid); | |
| 69 | + if( pending ){ | |
| 70 | + @ <span class="modpending">(Awaiting Moderator Approval)</span> | |
| 71 | + } | |
| 72 | + return pending; | |
| 73 | +} | |
| 59 | 74 | |
| 60 | 75 | /* |
| 61 | 76 | ** Check to see if the object identified by RID is used for anything. |
| 62 | 77 | */ |
| 63 | 78 | static int object_used(int rid){ |
| @@ -147,12 +162,12 @@ | ||
| 147 | 162 | void modreq_page(void){ |
| 148 | 163 | Blob sql; |
| 149 | 164 | Stmt q; |
| 150 | 165 | |
| 151 | 166 | login_check_credentials(); |
| 152 | - if( !g.perm.ModWiki && !g.perm.ModTkt ){ | |
| 153 | - login_needed(g.anon.ModWiki && g.anon.ModTkt); | |
| 167 | + if( !g.perm.ModWiki && !g.perm.ModTkt && !g.perm.ModForum ){ | |
| 168 | + login_needed(g.anon.ModWiki && g.anon.ModTkt && g.anon.ModForum); | |
| 154 | 169 | return; |
| 155 | 170 | } |
| 156 | 171 | style_header("Pending Moderation Requests"); |
| 157 | 172 | @ <h2>All Pending Moderation Requests</h2> |
| 158 | 173 | if( moderation_table_exists() ){ |
| 159 | 174 |
| --- src/moderate.c | |
| +++ src/moderate.c | |
| @@ -54,10 +54,25 @@ | |
| 54 | db_bind_int(&q, ":objid", rid); |
| 55 | rc = db_step(&q)==SQLITE_ROW; |
| 56 | db_reset(&q); |
| 57 | return rc; |
| 58 | } |
| 59 | |
| 60 | /* |
| 61 | ** Check to see if the object identified by RID is used for anything. |
| 62 | */ |
| 63 | static int object_used(int rid){ |
| @@ -147,12 +162,12 @@ | |
| 147 | void modreq_page(void){ |
| 148 | Blob sql; |
| 149 | Stmt q; |
| 150 | |
| 151 | login_check_credentials(); |
| 152 | if( !g.perm.ModWiki && !g.perm.ModTkt ){ |
| 153 | login_needed(g.anon.ModWiki && g.anon.ModTkt); |
| 154 | return; |
| 155 | } |
| 156 | style_header("Pending Moderation Requests"); |
| 157 | @ <h2>All Pending Moderation Requests</h2> |
| 158 | if( moderation_table_exists() ){ |
| 159 |
| --- src/moderate.c | |
| +++ src/moderate.c | |
| @@ -54,10 +54,25 @@ | |
| 54 | db_bind_int(&q, ":objid", rid); |
| 55 | rc = db_step(&q)==SQLITE_ROW; |
| 56 | db_reset(&q); |
| 57 | return rc; |
| 58 | } |
| 59 | |
| 60 | /* |
| 61 | ** If the rid object is being held for moderation, write out |
| 62 | ** an "awaiting moderation" message and return true. |
| 63 | ** |
| 64 | ** If the object is not being held for moderation, simply return |
| 65 | ** false without generating any output. |
| 66 | */ |
| 67 | int moderation_pending_www(int rid){ |
| 68 | int pending = moderation_pending(rid); |
| 69 | if( pending ){ |
| 70 | @ <span class="modpending">(Awaiting Moderator Approval)</span> |
| 71 | } |
| 72 | return pending; |
| 73 | } |
| 74 | |
| 75 | /* |
| 76 | ** Check to see if the object identified by RID is used for anything. |
| 77 | */ |
| 78 | static int object_used(int rid){ |
| @@ -147,12 +162,12 @@ | |
| 162 | void modreq_page(void){ |
| 163 | Blob sql; |
| 164 | Stmt q; |
| 165 | |
| 166 | login_check_credentials(); |
| 167 | if( !g.perm.ModWiki && !g.perm.ModTkt && !g.perm.ModForum ){ |
| 168 | login_needed(g.anon.ModWiki && g.anon.ModTkt && g.anon.ModForum); |
| 169 | return; |
| 170 | } |
| 171 | style_header("Pending Moderation Requests"); |
| 172 | @ <h2>All Pending Moderation Requests</h2> |
| 173 | if( moderation_table_exists() ){ |
| 174 |