Fossil SCM

Permit the 'favicon.ico' image to be customized.

mistachkin 2020-07-31 21:51 trunk merge
Commit 37262b83877976eaae61f7955736fdab2a3a536ca7b0bffa7b764fa4a2f699ab
--- src/configure.c
+++ src/configure.c
@@ -94,10 +94,12 @@
9494
{ "js", CONFIGSET_SKIN },
9595
{ "logo-mimetype", CONFIGSET_SKIN },
9696
{ "logo-image", CONFIGSET_SKIN },
9797
{ "background-mimetype", CONFIGSET_SKIN },
9898
{ "background-image", CONFIGSET_SKIN },
99
+ { "icon-mimetype", CONFIGSET_SKIN },
100
+ { "icon-image", CONFIGSET_SKIN },
99101
{ "timeline-block-markup", CONFIGSET_SKIN },
100102
{ "timeline-date-format", CONFIGSET_SKIN },
101103
{ "timeline-default-style", CONFIGSET_SKIN },
102104
{ "timeline-dwelltime", CONFIGSET_SKIN },
103105
{ "timeline-closetime", CONFIGSET_SKIN },
104106
--- src/configure.c
+++ src/configure.c
@@ -94,10 +94,12 @@
94 { "js", CONFIGSET_SKIN },
95 { "logo-mimetype", CONFIGSET_SKIN },
96 { "logo-image", CONFIGSET_SKIN },
97 { "background-mimetype", CONFIGSET_SKIN },
98 { "background-image", CONFIGSET_SKIN },
 
 
99 { "timeline-block-markup", CONFIGSET_SKIN },
100 { "timeline-date-format", CONFIGSET_SKIN },
101 { "timeline-default-style", CONFIGSET_SKIN },
102 { "timeline-dwelltime", CONFIGSET_SKIN },
103 { "timeline-closetime", CONFIGSET_SKIN },
104
--- src/configure.c
+++ src/configure.c
@@ -94,10 +94,12 @@
94 { "js", CONFIGSET_SKIN },
95 { "logo-mimetype", CONFIGSET_SKIN },
96 { "logo-image", CONFIGSET_SKIN },
97 { "background-mimetype", CONFIGSET_SKIN },
98 { "background-image", CONFIGSET_SKIN },
99 { "icon-mimetype", CONFIGSET_SKIN },
100 { "icon-image", CONFIGSET_SKIN },
101 { "timeline-block-markup", CONFIGSET_SKIN },
102 { "timeline-date-format", CONFIGSET_SKIN },
103 { "timeline-default-style", CONFIGSET_SKIN },
104 { "timeline-dwelltime", CONFIGSET_SKIN },
105 { "timeline-closetime", CONFIGSET_SKIN },
106
+15 -10
--- src/doc.c
+++ src/doc.c
@@ -1132,29 +1132,34 @@
11321132
11331133
11341134
/*
11351135
** WEBPAGE: favicon.ico
11361136
**
1137
-** Return the default favicon.ico image. The returned image is for the
1138
-** Fossil lizard icon.
1137
+** Return the configured "favicon.ico" image. If no "favicon.ico" image
1138
+** is defined, the returned image is for the Fossil lizard icon.
11391139
**
1140
-** The intended use case here is to supply a favicon for the "fossil ui"
1140
+** The intended use case here is to supply an icon for the "fossil ui"
11411141
** command. For a permanent website, the recommended process is for
1142
-** the admin to set up a project-specific favicon and reference that
1143
-** icon in the HTML header using a line like:
1142
+** the admin to set up a project-specific icon and reference that icon
1143
+** in the HTML header using a line like:
11441144
**
11451145
** <link rel="icon" href="URL-FOR-YOUR-ICON" type="MIMETYPE"/>
11461146
**
11471147
*/
11481148
void favicon_page(void){
1149
- Blob favicon;
1149
+ Blob icon;
1150
+ char *zMime;
11501151
11511152
etag_check(ETAG_CONFIG, 0);
1152
- blob_zero(&favicon);
1153
- blob_init(&favicon, (char*)aLogo, sizeof(aLogo));
1154
- cgi_set_content_type("image/gif");
1155
- cgi_set_content(&favicon);
1153
+ zMime = db_get("icon-mimetype", "image/gif");
1154
+ blob_zero(&icon);
1155
+ db_blob(&icon, "SELECT value FROM config WHERE name='icon-image'");
1156
+ if( blob_size(&icon)==0 ){
1157
+ blob_init(&icon, (char*)aLogo, sizeof(aLogo));
1158
+ }
1159
+ cgi_set_content_type(zMime);
1160
+ cgi_set_content(&icon);
11561161
}
11571162
11581163
/*
11591164
** WEBPAGE: docsrch
11601165
**
11611166
--- src/doc.c
+++ src/doc.c
@@ -1132,29 +1132,34 @@
1132
1133
1134 /*
1135 ** WEBPAGE: favicon.ico
1136 **
1137 ** Return the default favicon.ico image. The returned image is for the
1138 ** Fossil lizard icon.
1139 **
1140 ** The intended use case here is to supply a favicon for the "fossil ui"
1141 ** command. For a permanent website, the recommended process is for
1142 ** the admin to set up a project-specific favicon and reference that
1143 ** icon in the HTML header using a line like:
1144 **
1145 ** <link rel="icon" href="URL-FOR-YOUR-ICON" type="MIMETYPE"/>
1146 **
1147 */
1148 void favicon_page(void){
1149 Blob favicon;
 
1150
1151 etag_check(ETAG_CONFIG, 0);
1152 blob_zero(&favicon);
1153 blob_init(&favicon, (char*)aLogo, sizeof(aLogo));
1154 cgi_set_content_type("image/gif");
1155 cgi_set_content(&favicon);
 
 
 
 
1156 }
1157
1158 /*
1159 ** WEBPAGE: docsrch
1160 **
1161
--- src/doc.c
+++ src/doc.c
@@ -1132,29 +1132,34 @@
1132
1133
1134 /*
1135 ** WEBPAGE: favicon.ico
1136 **
1137 ** Return the configured "favicon.ico" image. If no "favicon.ico" image
1138 ** is defined, the returned image is for the Fossil lizard icon.
1139 **
1140 ** The intended use case here is to supply an icon for the "fossil ui"
1141 ** command. For a permanent website, the recommended process is for
1142 ** the admin to set up a project-specific icon and reference that icon
1143 ** in the HTML header using a line like:
1144 **
1145 ** <link rel="icon" href="URL-FOR-YOUR-ICON" type="MIMETYPE"/>
1146 **
1147 */
1148 void favicon_page(void){
1149 Blob icon;
1150 char *zMime;
1151
1152 etag_check(ETAG_CONFIG, 0);
1153 zMime = db_get("icon-mimetype", "image/gif");
1154 blob_zero(&icon);
1155 db_blob(&icon, "SELECT value FROM config WHERE name='icon-image'");
1156 if( blob_size(&icon)==0 ){
1157 blob_init(&icon, (char*)aLogo, sizeof(aLogo));
1158 }
1159 cgi_set_content_type(zMime);
1160 cgi_set_content(&icon);
1161 }
1162
1163 /*
1164 ** WEBPAGE: docsrch
1165 **
1166
+15 -10
--- src/doc.c
+++ src/doc.c
@@ -1132,29 +1132,34 @@
11321132
11331133
11341134
/*
11351135
** WEBPAGE: favicon.ico
11361136
**
1137
-** Return the default favicon.ico image. The returned image is for the
1138
-** Fossil lizard icon.
1137
+** Return the configured "favicon.ico" image. If no "favicon.ico" image
1138
+** is defined, the returned image is for the Fossil lizard icon.
11391139
**
1140
-** The intended use case here is to supply a favicon for the "fossil ui"
1140
+** The intended use case here is to supply an icon for the "fossil ui"
11411141
** command. For a permanent website, the recommended process is for
1142
-** the admin to set up a project-specific favicon and reference that
1143
-** icon in the HTML header using a line like:
1142
+** the admin to set up a project-specific icon and reference that icon
1143
+** in the HTML header using a line like:
11441144
**
11451145
** <link rel="icon" href="URL-FOR-YOUR-ICON" type="MIMETYPE"/>
11461146
**
11471147
*/
11481148
void favicon_page(void){
1149
- Blob favicon;
1149
+ Blob icon;
1150
+ char *zMime;
11501151
11511152
etag_check(ETAG_CONFIG, 0);
1152
- blob_zero(&favicon);
1153
- blob_init(&favicon, (char*)aLogo, sizeof(aLogo));
1154
- cgi_set_content_type("image/gif");
1155
- cgi_set_content(&favicon);
1153
+ zMime = db_get("icon-mimetype", "image/gif");
1154
+ blob_zero(&icon);
1155
+ db_blob(&icon, "SELECT value FROM config WHERE name='icon-image'");
1156
+ if( blob_size(&icon)==0 ){
1157
+ blob_init(&icon, (char*)aLogo, sizeof(aLogo));
1158
+ }
1159
+ cgi_set_content_type(zMime);
1160
+ cgi_set_content(&icon);
11561161
}
11571162
11581163
/*
11591164
** WEBPAGE: docsrch
11601165
**
11611166
--- src/doc.c
+++ src/doc.c
@@ -1132,29 +1132,34 @@
1132
1133
1134 /*
1135 ** WEBPAGE: favicon.ico
1136 **
1137 ** Return the default favicon.ico image. The returned image is for the
1138 ** Fossil lizard icon.
1139 **
1140 ** The intended use case here is to supply a favicon for the "fossil ui"
1141 ** command. For a permanent website, the recommended process is for
1142 ** the admin to set up a project-specific favicon and reference that
1143 ** icon in the HTML header using a line like:
1144 **
1145 ** <link rel="icon" href="URL-FOR-YOUR-ICON" type="MIMETYPE"/>
1146 **
1147 */
1148 void favicon_page(void){
1149 Blob favicon;
 
1150
1151 etag_check(ETAG_CONFIG, 0);
1152 blob_zero(&favicon);
1153 blob_init(&favicon, (char*)aLogo, sizeof(aLogo));
1154 cgi_set_content_type("image/gif");
1155 cgi_set_content(&favicon);
 
 
 
 
1156 }
1157
1158 /*
1159 ** WEBPAGE: docsrch
1160 **
1161
--- src/doc.c
+++ src/doc.c
@@ -1132,29 +1132,34 @@
1132
1133
1134 /*
1135 ** WEBPAGE: favicon.ico
1136 **
1137 ** Return the configured "favicon.ico" image. If no "favicon.ico" image
1138 ** is defined, the returned image is for the Fossil lizard icon.
1139 **
1140 ** The intended use case here is to supply an icon for the "fossil ui"
1141 ** command. For a permanent website, the recommended process is for
1142 ** the admin to set up a project-specific icon and reference that icon
1143 ** in the HTML header using a line like:
1144 **
1145 ** <link rel="icon" href="URL-FOR-YOUR-ICON" type="MIMETYPE"/>
1146 **
1147 */
1148 void favicon_page(void){
1149 Blob icon;
1150 char *zMime;
1151
1152 etag_check(ETAG_CONFIG, 0);
1153 zMime = db_get("icon-mimetype", "image/gif");
1154 blob_zero(&icon);
1155 db_blob(&icon, "SELECT value FROM config WHERE name='icon-image'");
1156 if( blob_size(&icon)==0 ){
1157 blob_init(&icon, (char*)aLogo, sizeof(aLogo));
1158 }
1159 cgi_set_content_type(zMime);
1160 cgi_set_content(&icon);
1161 }
1162
1163 /*
1164 ** WEBPAGE: docsrch
1165 **
1166
--- src/json_config.c
+++ src/json_config.c
@@ -61,10 +61,12 @@
6161
{ "details", CONFIGSET_SKIN },
6262
{ "logo-mimetype", CONFIGSET_SKIN },
6363
{ "logo-image", CONFIGSET_SKIN },
6464
{ "background-mimetype", CONFIGSET_SKIN },
6565
{ "background-image", CONFIGSET_SKIN },
66
+{ "icon-mimetype", CONFIGSET_SKIN },
67
+{ "icon-image", CONFIGSET_SKIN },
6668
{ "timeline-block-markup", CONFIGSET_SKIN },
6769
{ "timeline-max-comment", CONFIGSET_SKIN },
6870
{ "timeline-plaintext", CONFIGSET_SKIN },
6971
{ "adunit", CONFIGSET_SKIN },
7072
{ "adunit-omit-if-admin", CONFIGSET_SKIN },
7173
--- src/json_config.c
+++ src/json_config.c
@@ -61,10 +61,12 @@
61 { "details", CONFIGSET_SKIN },
62 { "logo-mimetype", CONFIGSET_SKIN },
63 { "logo-image", CONFIGSET_SKIN },
64 { "background-mimetype", CONFIGSET_SKIN },
65 { "background-image", CONFIGSET_SKIN },
 
 
66 { "timeline-block-markup", CONFIGSET_SKIN },
67 { "timeline-max-comment", CONFIGSET_SKIN },
68 { "timeline-plaintext", CONFIGSET_SKIN },
69 { "adunit", CONFIGSET_SKIN },
70 { "adunit-omit-if-admin", CONFIGSET_SKIN },
71
--- src/json_config.c
+++ src/json_config.c
@@ -61,10 +61,12 @@
61 { "details", CONFIGSET_SKIN },
62 { "logo-mimetype", CONFIGSET_SKIN },
63 { "logo-image", CONFIGSET_SKIN },
64 { "background-mimetype", CONFIGSET_SKIN },
65 { "background-image", CONFIGSET_SKIN },
66 { "icon-mimetype", CONFIGSET_SKIN },
67 { "icon-image", CONFIGSET_SKIN },
68 { "timeline-block-markup", CONFIGSET_SKIN },
69 { "timeline-max-comment", CONFIGSET_SKIN },
70 { "timeline-plaintext", CONFIGSET_SKIN },
71 { "adunit", CONFIGSET_SKIN },
72 { "adunit-omit-if-admin", CONFIGSET_SKIN },
73
+57 -1
--- src/setup.c
+++ src/setup.c
@@ -1235,11 +1235,11 @@
12351235
}
12361236
12371237
/*
12381238
** WEBPAGE: setup_logo
12391239
**
1240
-** Administrative page for changing the logo image.
1240
+** Administrative page for changing the logo, background, and icon images.
12411241
*/
12421242
void setup_logo(void){
12431243
const char *zLogoMtime = db_get_mtime("logo-image", 0, 0);
12441244
const char *zLogoMime = db_get("logo-mimetype","image/gif");
12451245
const char *aLogoImg = P("logoim");
@@ -1246,16 +1246,23 @@
12461246
int szLogoImg = atoi(PD("logoim:bytes","0"));
12471247
const char *zBgMtime = db_get_mtime("background-image", 0, 0);
12481248
const char *zBgMime = db_get("background-mimetype","image/gif");
12491249
const char *aBgImg = P("bgim");
12501250
int szBgImg = atoi(PD("bgim:bytes","0"));
1251
+ const char *zIconMtime = db_get_mtime("icon-image", 0, 0);
1252
+ const char *zIconMime = db_get("icon-mimetype","image/gif");
1253
+ const char *aIconImg = P("iconim");
1254
+ int szIconImg = atoi(PD("iconim:bytes","0"));
12511255
if( szLogoImg>0 ){
12521256
zLogoMime = PD("logoim:mimetype","image/gif");
12531257
}
12541258
if( szBgImg>0 ){
12551259
zBgMime = PD("bgim:mimetype","image/gif");
12561260
}
1261
+ if( szIconImg>0 ){
1262
+ zIconMime = PD("iconim:mimetype","image/gif");
1263
+ }
12571264
login_check_credentials();
12581265
if( !g.perm.Admin ){
12591266
login_needed(0);
12601267
return;
12611268
}
@@ -1309,10 +1316,35 @@
13091316
"DELETE FROM config WHERE name IN "
13101317
"('background-image','background-mimetype')"
13111318
);
13121319
db_end_transaction(0);
13131320
cgi_redirect("setup_logo");
1321
+ }else if( P("seticon")!=0 && zIconMime && zIconMime[0] && szIconImg>0 ){
1322
+ Blob img;
1323
+ Stmt ins;
1324
+ blob_init(&img, aIconImg, szIconImg);
1325
+ db_prepare(&ins,
1326
+ "REPLACE INTO config(name,value,mtime)"
1327
+ " VALUES('icon-image',:bytes,now())"
1328
+ );
1329
+ db_bind_blob(&ins, ":bytes", &img);
1330
+ db_step(&ins);
1331
+ db_finalize(&ins);
1332
+ db_multi_exec(
1333
+ "REPLACE INTO config(name,value,mtime)"
1334
+ " VALUES('icon-mimetype',%Q,now())",
1335
+ zIconMime
1336
+ );
1337
+ db_end_transaction(0);
1338
+ cgi_redirect("setup_logo");
1339
+ }else if( P("clricon")!=0 ){
1340
+ db_multi_exec(
1341
+ "DELETE FROM config WHERE name IN "
1342
+ "('icon-image','icon-mimetype')"
1343
+ );
1344
+ db_end_transaction(0);
1345
+ cgi_redirect("setup_logo");
13141346
}
13151347
style_header("Edit Project Logo And Background");
13161348
@ <p>The current project logo has a MIME-Type of <b>%h(zLogoMime)</b>
13171349
@ and looks like this:</p>
13181350
@ <blockquote><p><img src="%s(g.zTop)/logo/%z(zLogoMtime)" \
@@ -1358,10 +1390,34 @@
13581390
@ <input type="submit" name="setbg" value="Change Background" />
13591391
@ <input type="submit" name="clrbg" value="Revert To Default" /></p>
13601392
@ </div></form>
13611393
@ <p>(Properties: "background-image" and "background-mimetype")
13621394
@ <hr />
1395
+ @
1396
+ @ <p>The current icon image has a MIME-Type of <b>%h(zIconMime)</b>
1397
+ @ and looks like this:</p>
1398
+ @ <blockquote><p><img src="%s(g.zTop)/favicon.ico/%z(zIconMtime)" \
1399
+ @ alt="icon" border=1 />
1400
+ @ </p></blockquote>
1401
+ @
1402
+ @ <form action="%s(g.zTop)/setup_logo" method="post"
1403
+ @ enctype="multipart/form-data"><div>
1404
+ @ <p>The icon image is accessible to all users at this URL:
1405
+ @ <a href="%s(g.zBaseURL)/favicon.ico">%s(g.zBaseURL)/favicon.ico</a>.
1406
+ @ The icon image may or may not appear on each
1407
+ @ page depending on the web browser in use and the MIME-Types that it
1408
+ @ supports for icon images.
1409
+ @ To change the icon image, use the following form:</p>
1410
+ login_insert_csrf_secret();
1411
+ @ Icon image file:
1412
+ @ <input type="file" name="iconim" size="60" accept="image/*" />
1413
+ @ <p align="center">
1414
+ @ <input type="submit" name="seticon" value="Change Icon" />
1415
+ @ <input type="submit" name="clricon" value="Revert To Default" /></p>
1416
+ @ </div></form>
1417
+ @ <p>(Properties: "icon-image" and "icon-mimetype")
1418
+ @ <hr />
13631419
@
13641420
@ <p><span class="note">Note:</span> Your browser has probably cached these
13651421
@ images, so you may need to press the Reload button before changes will
13661422
@ take effect. </p>
13671423
style_footer();
13681424
--- src/setup.c
+++ src/setup.c
@@ -1235,11 +1235,11 @@
1235 }
1236
1237 /*
1238 ** WEBPAGE: setup_logo
1239 **
1240 ** Administrative page for changing the logo image.
1241 */
1242 void setup_logo(void){
1243 const char *zLogoMtime = db_get_mtime("logo-image", 0, 0);
1244 const char *zLogoMime = db_get("logo-mimetype","image/gif");
1245 const char *aLogoImg = P("logoim");
@@ -1246,16 +1246,23 @@
1246 int szLogoImg = atoi(PD("logoim:bytes","0"));
1247 const char *zBgMtime = db_get_mtime("background-image", 0, 0);
1248 const char *zBgMime = db_get("background-mimetype","image/gif");
1249 const char *aBgImg = P("bgim");
1250 int szBgImg = atoi(PD("bgim:bytes","0"));
 
 
 
 
1251 if( szLogoImg>0 ){
1252 zLogoMime = PD("logoim:mimetype","image/gif");
1253 }
1254 if( szBgImg>0 ){
1255 zBgMime = PD("bgim:mimetype","image/gif");
1256 }
 
 
 
1257 login_check_credentials();
1258 if( !g.perm.Admin ){
1259 login_needed(0);
1260 return;
1261 }
@@ -1309,10 +1316,35 @@
1309 "DELETE FROM config WHERE name IN "
1310 "('background-image','background-mimetype')"
1311 );
1312 db_end_transaction(0);
1313 cgi_redirect("setup_logo");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1314 }
1315 style_header("Edit Project Logo And Background");
1316 @ <p>The current project logo has a MIME-Type of <b>%h(zLogoMime)</b>
1317 @ and looks like this:</p>
1318 @ <blockquote><p><img src="%s(g.zTop)/logo/%z(zLogoMtime)" \
@@ -1358,10 +1390,34 @@
1358 @ <input type="submit" name="setbg" value="Change Background" />
1359 @ <input type="submit" name="clrbg" value="Revert To Default" /></p>
1360 @ </div></form>
1361 @ <p>(Properties: "background-image" and "background-mimetype")
1362 @ <hr />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1363 @
1364 @ <p><span class="note">Note:</span> Your browser has probably cached these
1365 @ images, so you may need to press the Reload button before changes will
1366 @ take effect. </p>
1367 style_footer();
1368
--- src/setup.c
+++ src/setup.c
@@ -1235,11 +1235,11 @@
1235 }
1236
1237 /*
1238 ** WEBPAGE: setup_logo
1239 **
1240 ** Administrative page for changing the logo, background, and icon images.
1241 */
1242 void setup_logo(void){
1243 const char *zLogoMtime = db_get_mtime("logo-image", 0, 0);
1244 const char *zLogoMime = db_get("logo-mimetype","image/gif");
1245 const char *aLogoImg = P("logoim");
@@ -1246,16 +1246,23 @@
1246 int szLogoImg = atoi(PD("logoim:bytes","0"));
1247 const char *zBgMtime = db_get_mtime("background-image", 0, 0);
1248 const char *zBgMime = db_get("background-mimetype","image/gif");
1249 const char *aBgImg = P("bgim");
1250 int szBgImg = atoi(PD("bgim:bytes","0"));
1251 const char *zIconMtime = db_get_mtime("icon-image", 0, 0);
1252 const char *zIconMime = db_get("icon-mimetype","image/gif");
1253 const char *aIconImg = P("iconim");
1254 int szIconImg = atoi(PD("iconim:bytes","0"));
1255 if( szLogoImg>0 ){
1256 zLogoMime = PD("logoim:mimetype","image/gif");
1257 }
1258 if( szBgImg>0 ){
1259 zBgMime = PD("bgim:mimetype","image/gif");
1260 }
1261 if( szIconImg>0 ){
1262 zIconMime = PD("iconim:mimetype","image/gif");
1263 }
1264 login_check_credentials();
1265 if( !g.perm.Admin ){
1266 login_needed(0);
1267 return;
1268 }
@@ -1309,10 +1316,35 @@
1316 "DELETE FROM config WHERE name IN "
1317 "('background-image','background-mimetype')"
1318 );
1319 db_end_transaction(0);
1320 cgi_redirect("setup_logo");
1321 }else if( P("seticon")!=0 && zIconMime && zIconMime[0] && szIconImg>0 ){
1322 Blob img;
1323 Stmt ins;
1324 blob_init(&img, aIconImg, szIconImg);
1325 db_prepare(&ins,
1326 "REPLACE INTO config(name,value,mtime)"
1327 " VALUES('icon-image',:bytes,now())"
1328 );
1329 db_bind_blob(&ins, ":bytes", &img);
1330 db_step(&ins);
1331 db_finalize(&ins);
1332 db_multi_exec(
1333 "REPLACE INTO config(name,value,mtime)"
1334 " VALUES('icon-mimetype',%Q,now())",
1335 zIconMime
1336 );
1337 db_end_transaction(0);
1338 cgi_redirect("setup_logo");
1339 }else if( P("clricon")!=0 ){
1340 db_multi_exec(
1341 "DELETE FROM config WHERE name IN "
1342 "('icon-image','icon-mimetype')"
1343 );
1344 db_end_transaction(0);
1345 cgi_redirect("setup_logo");
1346 }
1347 style_header("Edit Project Logo And Background");
1348 @ <p>The current project logo has a MIME-Type of <b>%h(zLogoMime)</b>
1349 @ and looks like this:</p>
1350 @ <blockquote><p><img src="%s(g.zTop)/logo/%z(zLogoMtime)" \
@@ -1358,10 +1390,34 @@
1390 @ <input type="submit" name="setbg" value="Change Background" />
1391 @ <input type="submit" name="clrbg" value="Revert To Default" /></p>
1392 @ </div></form>
1393 @ <p>(Properties: "background-image" and "background-mimetype")
1394 @ <hr />
1395 @
1396 @ <p>The current icon image has a MIME-Type of <b>%h(zIconMime)</b>
1397 @ and looks like this:</p>
1398 @ <blockquote><p><img src="%s(g.zTop)/favicon.ico/%z(zIconMtime)" \
1399 @ alt="icon" border=1 />
1400 @ </p></blockquote>
1401 @
1402 @ <form action="%s(g.zTop)/setup_logo" method="post"
1403 @ enctype="multipart/form-data"><div>
1404 @ <p>The icon image is accessible to all users at this URL:
1405 @ <a href="%s(g.zBaseURL)/favicon.ico">%s(g.zBaseURL)/favicon.ico</a>.
1406 @ The icon image may or may not appear on each
1407 @ page depending on the web browser in use and the MIME-Types that it
1408 @ supports for icon images.
1409 @ To change the icon image, use the following form:</p>
1410 login_insert_csrf_secret();
1411 @ Icon image file:
1412 @ <input type="file" name="iconim" size="60" accept="image/*" />
1413 @ <p align="center">
1414 @ <input type="submit" name="seticon" value="Change Icon" />
1415 @ <input type="submit" name="clricon" value="Revert To Default" /></p>
1416 @ </div></form>
1417 @ <p>(Properties: "icon-image" and "icon-mimetype")
1418 @ <hr />
1419 @
1420 @ <p><span class="note">Note:</span> Your browser has probably cached these
1421 @ images, so you may need to press the Reload button before changes will
1422 @ take effect. </p>
1423 style_footer();
1424

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button