Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | New setting "forum-title" is the title of the Forum. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
f646537cb626f11e8bdbe84c7f6e5671 |
| User & Date: | drh 2024-11-19 12:52:37.608 |
Context
|
2024-11-19
| ||
| 13:08 | Simplifications to the Forum setup page. check-in: 25e4b54238 user: drh tags: trunk | |
| 12:52 | New setting "forum-title" is the title of the Forum. check-in: f646537cb6 user: drh tags: trunk | |
|
2024-11-18
| ||
| 17:50 | Fix the checksum function in the delta logic. check-in: 4862fc5ed0 user: drh tags: trunk | |
Changes
Changes to src/db.c.
| ︙ | ︙ | |||
4679 4680 4681 4682 4683 4684 4685 | ** If enabled on a client, new delta manifests are prohibited on ** commits. If enabled on a server, whenever a client attempts ** to obtain a check-in lock during auto-sync, the server will ** send the "pragma avoid-delta-manifests" statement in its reply, ** which will cause the client to avoid generating a delta ** manifest. */ | < < < < < < < | 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 | ** If enabled on a client, new delta manifests are prohibited on ** commits. If enabled on a server, whenever a client attempts ** to obtain a check-in lock during auto-sync, the server will ** send the "pragma avoid-delta-manifests" statement in its reply, ** which will cause the client to avoid generating a delta ** manifest. */ /* ** SETTING: gdiff-command width=40 default=gdiff sensitive ** The value is an external command to run when performing a graphical ** diff. If undefined, text diff will be used. */ /* ** SETTING: gmerge-command width=40 sensitive |
| ︙ | ︙ |
Changes to src/dispatch.c.
| ︙ | ︙ | |||
1305 1306 1307 1308 1309 1310 1311 |
fossil_print("%s\n", blob_str(&txt));
blob_reset(&txt);
}
/*
** Return a pointer to the setting information array.
**
| | > > > > > > > > > > > > > > > > > > > > > > > > > | 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 |
fossil_print("%s\n", blob_str(&txt));
blob_reset(&txt);
}
/*
** Return a pointer to the setting information array.
**
** This routine provides access to the aSetting[] array which is created
** by the mkindex utility program and included with <page_index.h>.
*/
const Setting *setting_info(int *pnCount){
if( pnCount ) *pnCount = (int)(sizeof(aSetting)/sizeof(aSetting[0])) - 1;
return aSetting;
}
/*
** Return a pointer to a specific Setting entry for the setting named
** in the argument. Or return NULL if no such setting exists.
**
** The pointer returned points into the middle of the global aSetting[]
** array that is generated by mkindex. Use setting_info() to fetch the
** whole array. Use this routine to fetch a specific entry.
*/
const Setting *setting_find(const char *zName){
int iFirst = 0;
int iLast = ArraySize(aSetting)-1;
while( iFirst<=iLast ){
int iCur = (iFirst+iLast)/2;
int c = strcmp(aSetting[iCur].name, zName);
if( c<0 ){
iFirst = iCur+1;
}else if( c>0 ){
iLast = iCur-1;
}else{
return &aSetting[iCur];
}
}
return 0;
}
/*****************************************************************************
** A virtual table for accessing the information in aCommand[], and
** especially the help-text
*/
/* helptextVtab_vtab is a subclass of sqlite3_vtab which is
|
| ︙ | ︙ |
Changes to src/forum.c.
| ︙ | ︙ | |||
1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 |
forum_render_debug_options();
login_insert_csrf_secret();
@ </form>
forum_emit_js();
style_finish_page();
}
/*
** WEBPAGE: setup_forum
**
** Forum configuration and metrics.
*/
void forum_setup(void){
/* boolean config settings specific to the forum. */
| > > > > > > > > > > > > > > > | | | | 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 |
forum_render_debug_options();
login_insert_csrf_secret();
@ </form>
forum_emit_js();
style_finish_page();
}
/*
** SETTING: forum-close-policy boolean default=off
** If true, forum moderators may close/re-open forum posts, and reply
** to closed posts. If false, only administrators may do so. Note that
** this only affects the forum web UI, not post-closing tags which
** arrive via the command-line or from synchronization with a remote.
*/
/*
** SETTING: forum-title width=20 default=Forum
** This is the name or "title" of the Forum for this repository. The
** default is just "Forum". But in some setups, admins might want to
** change it to "Developer Forum" or "User Forum" or whatever other name
** seems more appropriate for the particular usage.
*/
/*
** WEBPAGE: setup_forum
**
** Forum configuration and metrics.
*/
void forum_setup(void){
/* boolean config settings specific to the forum. */
static const char *azForumSettings[] = {
"forum-close-policy",
"forum-title",
};
login_check_credentials();
if( !g.perm.Setup ){
login_needed(g.anon.Setup);
return;
}
|
| ︙ | ︙ | |||
1848 1849 1850 1851 1852 1853 1854 |
}
}
@ <h2>Settings</h2>
@ <p>Configuration settings specific to the forum.</p>
if( P("submit") && cgi_csrf_safe(2) ){
int i = 0;
| < | > | > > > > > | > | < > > > > > > > | > | | | | > > > > > > > > > | > | 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 |
}
}
@ <h2>Settings</h2>
@ <p>Configuration settings specific to the forum.</p>
if( P("submit") && cgi_csrf_safe(2) ){
int i = 0;
db_begin_transaction();
for(i=0; i<ArraySize(azForumSettings); i++){
char zQP[4];
const char *z;
const Setting *pSetting = setting_find(azForumSettings[i]);
if( pSetting==0 ) continue;
zQP[0] = 'a'+i;
zQP[1] = zQP[0];
zQP[2] = 0;
z = P(zQP);
if( z==0 || z[0]==0 ) continue;
db_set(pSetting->name/*works-like:"x"*/, z, 0);
}
db_end_transaction(0);
@ <p><em>Settings saved.</em></p>
}
{
int i = 0;
@ <form action="%R/setup_forum" method="post">
login_insert_csrf_secret();
@ <table class='forum-settings-list'><tbody>
for(i=0; i<ArraySize(azForumSettings); i++){
char zQP[4];
const Setting *pSetting = setting_find(azForumSettings[i]);
if( pSetting==0 ) continue;
zQP[0] = 'a'+i;
zQP[1] = zQP[0];
zQP[2] = 0;
if( pSetting->width==0 ){
/* Boolean setting */
@ <tr><td> <td width="5">
onoff_attribute("", zQP, pSetting->name/*works-like:"x"*/, 0, 0);
@ </td><td>
@ <a href='%R/help?cmd=%h(pSetting->name)'>%h(pSetting->name)</a>
@ </td>
@ <td> </td></tr>
}else{
/* Text value setting */
@ <tr><td colspan="2">
entry_attribute("", 25, pSetting->name, zQP/*works-like:""*/,
pSetting->def, 0);
@ </td><td>
@ <a href='%R/help?cmd=%h(pSetting->name)'>%h(pSetting->name)</a>
@ </td></tr>
}
}
@ </tbody></table>
@ <input type='submit' name='submit' value='Apply changes'>
@ </form>
}
style_finish_page();
|
| ︙ | ︙ | |||
1908 1909 1910 1911 1912 1913 1914 |
srchFlags = search_restrict(SRCH_FORUM);
if( !g.perm.RdForum ){
login_needed(g.anon.RdForum);
return;
}
cgi_check_for_malice();
style_set_current_feature("forum");
| > | | 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 |
srchFlags = search_restrict(SRCH_FORUM);
if( !g.perm.RdForum ){
login_needed(g.anon.RdForum);
return;
}
cgi_check_for_malice();
style_set_current_feature("forum");
style_header("%s%s", db_get("forum-title","Forum"),
isSearch ? " Search Results" : "");
style_submenu_element("Timeline", "%R/timeline?ss=v&y=f&vfx");
if( g.perm.WrForum ){
style_submenu_element("New Thread","%R/forumnew");
}else{
/* Can't combine this with previous case using the ternary operator
* because that causes an error yelling about "non-constant format"
* with some compilers. I can't see it, since both expressions have
|
| ︙ | ︙ |
Changes to src/sitemap.c.
| ︙ | ︙ | |||
190 191 192 193 194 195 196 |
if( srchFlags ){
@ <li>%z(href("%R/search"))Search</a></li>
}
if( g.perm.Chat ){
@ <li>%z(href("%R/chat"))Chat</a></li>
}
if( g.perm.RdForum ){
| > | | 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
if( srchFlags ){
@ <li>%z(href("%R/search"))Search</a></li>
}
if( g.perm.Chat ){
@ <li>%z(href("%R/chat"))Chat</a></li>
}
if( g.perm.RdForum ){
const char *zTitle = db_get("forum-title","Forum");
@ <li>%z(href("%R/forum"))%h(zTitle)</a>
@ <ul>
@ <li>%z(href("%R/timeline?y=f"))Recent activity</a></li>
@ </ul>
@ </li>
}
if( g.perm.RdTkt ){
@ <li>%z(href("%R/reportlist"))Tickets/Bug Reports</a>
|
| ︙ | ︙ |