Fossil SCM
Further improvements: if the ticket (or wiki page) was deleted via moderation, do not try to redirect to it.
Commit
13448d3cc3945532dddf513ef53d6f77ad227c82
Parent
b84b8865a02d6a4…
1 file changed
+24
-4
+24
-4
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -764,12 +764,22 @@ | ||
| 764 | 764 | return; |
| 765 | 765 | } |
| 766 | 766 | if( g.perm.ModWiki && (zModAction = P("modaction"))!=0 ){ |
| 767 | 767 | if( strcmp(zModAction,"delete")==0 ){ |
| 768 | 768 | moderation_disapprove(rid); |
| 769 | - cgi_redirectf("%R/wiki?name=%T", pWiki->zWikiTitle); | |
| 770 | - /*NOTREACHED*/ | |
| 769 | + /* | |
| 770 | + ** Next, check if the wiki page still exists; if not, we cannot | |
| 771 | + ** redirect to it. | |
| 772 | + */ | |
| 773 | + if( db_exists("SELECT 1 FROM tagxref JOIN tag USING(tagid)" | |
| 774 | + " WHERE rid=%d AND tagname LIKE 'wiki-%%'", rid) ){ | |
| 775 | + cgi_redirectf("%R/wiki?name=%T", pWiki->zWikiTitle); | |
| 776 | + /*NOTREACHED*/ | |
| 777 | + }else{ | |
| 778 | + cgi_redirectf("%R/wiki"); | |
| 779 | + /*NOTREACHED*/ | |
| 780 | + } | |
| 771 | 781 | } |
| 772 | 782 | if( strcmp(zModAction,"approve")==0 ){ |
| 773 | 783 | moderation_approve(rid); |
| 774 | 784 | } |
| 775 | 785 | } |
| @@ -1889,12 +1899,22 @@ | ||
| 1889 | 1899 | zDate = db_text(0, "SELECT datetime(%.12f)", pTktChng->rDate); |
| 1890 | 1900 | memcpy(zTktName, pTktChng->zTicketUuid, UUID_SIZE+1); |
| 1891 | 1901 | if( g.perm.ModTkt && (zModAction = P("modaction"))!=0 ){ |
| 1892 | 1902 | if( strcmp(zModAction,"delete")==0 ){ |
| 1893 | 1903 | moderation_disapprove(rid); |
| 1894 | - cgi_redirectf("%R/tktview/%s", zTktName); | |
| 1895 | - /*NOTREACHED*/ | |
| 1904 | + /* | |
| 1905 | + ** Next, check if the ticket still exists; if not, we cannot | |
| 1906 | + ** redirect to it. | |
| 1907 | + */ | |
| 1908 | + if( db_exists("SELECT 1 FROM ticket WHERE tkt_uuid GLOB '%q*'", | |
| 1909 | + zTktName) ){ | |
| 1910 | + cgi_redirectf("%R/tktview/%s", zTktName); | |
| 1911 | + /*NOTREACHED*/ | |
| 1912 | + }else{ | |
| 1913 | + cgi_redirectf("%R/timeline"); | |
| 1914 | + /*NOTREACHED*/ | |
| 1915 | + } | |
| 1896 | 1916 | } |
| 1897 | 1917 | if( strcmp(zModAction,"approve")==0 ){ |
| 1898 | 1918 | moderation_approve(rid); |
| 1899 | 1919 | } |
| 1900 | 1920 | } |
| 1901 | 1921 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -764,12 +764,22 @@ | |
| 764 | return; |
| 765 | } |
| 766 | if( g.perm.ModWiki && (zModAction = P("modaction"))!=0 ){ |
| 767 | if( strcmp(zModAction,"delete")==0 ){ |
| 768 | moderation_disapprove(rid); |
| 769 | cgi_redirectf("%R/wiki?name=%T", pWiki->zWikiTitle); |
| 770 | /*NOTREACHED*/ |
| 771 | } |
| 772 | if( strcmp(zModAction,"approve")==0 ){ |
| 773 | moderation_approve(rid); |
| 774 | } |
| 775 | } |
| @@ -1889,12 +1899,22 @@ | |
| 1889 | zDate = db_text(0, "SELECT datetime(%.12f)", pTktChng->rDate); |
| 1890 | memcpy(zTktName, pTktChng->zTicketUuid, UUID_SIZE+1); |
| 1891 | if( g.perm.ModTkt && (zModAction = P("modaction"))!=0 ){ |
| 1892 | if( strcmp(zModAction,"delete")==0 ){ |
| 1893 | moderation_disapprove(rid); |
| 1894 | cgi_redirectf("%R/tktview/%s", zTktName); |
| 1895 | /*NOTREACHED*/ |
| 1896 | } |
| 1897 | if( strcmp(zModAction,"approve")==0 ){ |
| 1898 | moderation_approve(rid); |
| 1899 | } |
| 1900 | } |
| 1901 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -764,12 +764,22 @@ | |
| 764 | return; |
| 765 | } |
| 766 | if( g.perm.ModWiki && (zModAction = P("modaction"))!=0 ){ |
| 767 | if( strcmp(zModAction,"delete")==0 ){ |
| 768 | moderation_disapprove(rid); |
| 769 | /* |
| 770 | ** Next, check if the wiki page still exists; if not, we cannot |
| 771 | ** redirect to it. |
| 772 | */ |
| 773 | if( db_exists("SELECT 1 FROM tagxref JOIN tag USING(tagid)" |
| 774 | " WHERE rid=%d AND tagname LIKE 'wiki-%%'", rid) ){ |
| 775 | cgi_redirectf("%R/wiki?name=%T", pWiki->zWikiTitle); |
| 776 | /*NOTREACHED*/ |
| 777 | }else{ |
| 778 | cgi_redirectf("%R/wiki"); |
| 779 | /*NOTREACHED*/ |
| 780 | } |
| 781 | } |
| 782 | if( strcmp(zModAction,"approve")==0 ){ |
| 783 | moderation_approve(rid); |
| 784 | } |
| 785 | } |
| @@ -1889,12 +1899,22 @@ | |
| 1899 | zDate = db_text(0, "SELECT datetime(%.12f)", pTktChng->rDate); |
| 1900 | memcpy(zTktName, pTktChng->zTicketUuid, UUID_SIZE+1); |
| 1901 | if( g.perm.ModTkt && (zModAction = P("modaction"))!=0 ){ |
| 1902 | if( strcmp(zModAction,"delete")==0 ){ |
| 1903 | moderation_disapprove(rid); |
| 1904 | /* |
| 1905 | ** Next, check if the ticket still exists; if not, we cannot |
| 1906 | ** redirect to it. |
| 1907 | */ |
| 1908 | if( db_exists("SELECT 1 FROM ticket WHERE tkt_uuid GLOB '%q*'", |
| 1909 | zTktName) ){ |
| 1910 | cgi_redirectf("%R/tktview/%s", zTktName); |
| 1911 | /*NOTREACHED*/ |
| 1912 | }else{ |
| 1913 | cgi_redirectf("%R/timeline"); |
| 1914 | /*NOTREACHED*/ |
| 1915 | } |
| 1916 | } |
| 1917 | if( strcmp(zModAction,"approve")==0 ){ |
| 1918 | moderation_approve(rid); |
| 1919 | } |
| 1920 | } |
| 1921 |