Fossil SCM
Show the custom skin as an option on the /skins page, if it exists.
Commit
b828d8fd59a18b923087ca180de269b25407a4621d684efe3af18a74fa029a00
Parent
99575d4cbcbc24e…
1 file changed
+17
-1
+17
-1
| --- src/skins.c | ||
| +++ src/skins.c | ||
| @@ -195,10 +195,16 @@ | ||
| 195 | 195 | } |
| 196 | 196 | if(!zName || !*zName){ |
| 197 | 197 | pAltSkin = 0; |
| 198 | 198 | zAltSkinDir = 0; |
| 199 | 199 | return 0; |
| 200 | + } | |
| 201 | + if( fossil_strcmp(zName, "custom")==0 ){ | |
| 202 | + pAltSkin = 0; | |
| 203 | + zAltSkinDir = 0; | |
| 204 | + iSkinSource = iSource; | |
| 205 | + return 0; | |
| 200 | 206 | } |
| 201 | 207 | for(i=0; i<count(aBuiltinSkin); i++){ |
| 202 | 208 | if( fossil_strcmp(aBuiltinSkin[i].zLabel, zName)==0 ){ |
| 203 | 209 | pAltSkin = &aBuiltinSkin[i]; |
| 204 | 210 | iSkinSource = iSource; |
| @@ -283,11 +289,11 @@ | ||
| 283 | 289 | zOut = db_get(zWhat, 0); |
| 284 | 290 | if( zOut==0 ){ |
| 285 | 291 | z = mprintf("skins/default/%s.txt", zWhat); |
| 286 | 292 | zOut = builtin_text(z); |
| 287 | 293 | fossil_free(z); |
| 288 | - }else{ | |
| 294 | + }else if( iSkinSource==SKIN_FROM_DEFAULT ){ | |
| 289 | 295 | iSkinSource = SKIN_FROM_CUSTOM; |
| 290 | 296 | } |
| 291 | 297 | } |
| 292 | 298 | return zOut; |
| 293 | 299 | } |
| @@ -1346,10 +1352,11 @@ | ||
| 1346 | 1352 | */ |
| 1347 | 1353 | void skins_page(void){ |
| 1348 | 1354 | int i; |
| 1349 | 1355 | char *zBase = fossil_strdup(g.zTop); |
| 1350 | 1356 | size_t nBase = strlen(zBase); |
| 1357 | + const char *z; | |
| 1351 | 1358 | login_check_credentials(); |
| 1352 | 1359 | if( iDraftSkin && sqlite3_strglob("*/draft?", zBase)==0 ){ |
| 1353 | 1360 | nBase -= 7; |
| 1354 | 1361 | zBase[nBase] = 0; |
| 1355 | 1362 | }else if( pAltSkin ){ |
| @@ -1376,10 +1383,18 @@ | ||
| 1376 | 1383 | @ higher-priority skin in place. |
| 1377 | 1384 | @ </p> |
| 1378 | 1385 | } |
| 1379 | 1386 | @ <p>The following skins are available for this repository:</p> |
| 1380 | 1387 | @ <ul> |
| 1388 | + if( skin_exists_custom() ){ | |
| 1389 | + if( pAltSkin==0 && zAltSkinDir==0 && iDraftSkin==0 ){ | |
| 1390 | + @ <li> Custom skin for this repository ← <i>Currently in use</i> | |
| 1391 | + }else{ | |
| 1392 | + @ <li> %z(href("%R/skins?skin=custom"))\ | |
| 1393 | + @ Custom skin for this repository</a> | |
| 1394 | + } | |
| 1395 | + } | |
| 1381 | 1396 | for(i=0; i<count(aBuiltinSkin); i++){ |
| 1382 | 1397 | if( pAltSkin==&aBuiltinSkin[i] ){ |
| 1383 | 1398 | @ <li> %h(aBuiltinSkin[i].zDesc) ← <i>Currently in use</i> |
| 1384 | 1399 | }else{ |
| 1385 | 1400 | char *zUrl = href("%R/skins?skin=%T", aBuiltinSkin[i].zLabel); |
| @@ -1409,10 +1424,11 @@ | ||
| 1409 | 1424 | case SKIN_FROM_SETTING: |
| 1410 | 1425 | @ the "default-skin" setting on the repository. |
| 1411 | 1426 | break; |
| 1412 | 1427 | } |
| 1413 | 1428 | } |
| 1429 | +fprintf(stderr, "iSkinSource = %d\n", iSkinSource); | |
| 1414 | 1430 | if( iSkinSource==SKIN_FROM_COOKIE || iSkinSource==SKIN_FROM_QPARAM ){ |
| 1415 | 1431 | @ <ul> |
| 1416 | 1432 | @ <li> %z(href("%R/skins?skin="))<i>Let Fossil choose \ |
| 1417 | 1433 | @ which skin to use</i></a> |
| 1418 | 1434 | @ </ul> |
| 1419 | 1435 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -195,10 +195,16 @@ | |
| 195 | } |
| 196 | if(!zName || !*zName){ |
| 197 | pAltSkin = 0; |
| 198 | zAltSkinDir = 0; |
| 199 | return 0; |
| 200 | } |
| 201 | for(i=0; i<count(aBuiltinSkin); i++){ |
| 202 | if( fossil_strcmp(aBuiltinSkin[i].zLabel, zName)==0 ){ |
| 203 | pAltSkin = &aBuiltinSkin[i]; |
| 204 | iSkinSource = iSource; |
| @@ -283,11 +289,11 @@ | |
| 283 | zOut = db_get(zWhat, 0); |
| 284 | if( zOut==0 ){ |
| 285 | z = mprintf("skins/default/%s.txt", zWhat); |
| 286 | zOut = builtin_text(z); |
| 287 | fossil_free(z); |
| 288 | }else{ |
| 289 | iSkinSource = SKIN_FROM_CUSTOM; |
| 290 | } |
| 291 | } |
| 292 | return zOut; |
| 293 | } |
| @@ -1346,10 +1352,11 @@ | |
| 1346 | */ |
| 1347 | void skins_page(void){ |
| 1348 | int i; |
| 1349 | char *zBase = fossil_strdup(g.zTop); |
| 1350 | size_t nBase = strlen(zBase); |
| 1351 | login_check_credentials(); |
| 1352 | if( iDraftSkin && sqlite3_strglob("*/draft?", zBase)==0 ){ |
| 1353 | nBase -= 7; |
| 1354 | zBase[nBase] = 0; |
| 1355 | }else if( pAltSkin ){ |
| @@ -1376,10 +1383,18 @@ | |
| 1376 | @ higher-priority skin in place. |
| 1377 | @ </p> |
| 1378 | } |
| 1379 | @ <p>The following skins are available for this repository:</p> |
| 1380 | @ <ul> |
| 1381 | for(i=0; i<count(aBuiltinSkin); i++){ |
| 1382 | if( pAltSkin==&aBuiltinSkin[i] ){ |
| 1383 | @ <li> %h(aBuiltinSkin[i].zDesc) ← <i>Currently in use</i> |
| 1384 | }else{ |
| 1385 | char *zUrl = href("%R/skins?skin=%T", aBuiltinSkin[i].zLabel); |
| @@ -1409,10 +1424,11 @@ | |
| 1409 | case SKIN_FROM_SETTING: |
| 1410 | @ the "default-skin" setting on the repository. |
| 1411 | break; |
| 1412 | } |
| 1413 | } |
| 1414 | if( iSkinSource==SKIN_FROM_COOKIE || iSkinSource==SKIN_FROM_QPARAM ){ |
| 1415 | @ <ul> |
| 1416 | @ <li> %z(href("%R/skins?skin="))<i>Let Fossil choose \ |
| 1417 | @ which skin to use</i></a> |
| 1418 | @ </ul> |
| 1419 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -195,10 +195,16 @@ | |
| 195 | } |
| 196 | if(!zName || !*zName){ |
| 197 | pAltSkin = 0; |
| 198 | zAltSkinDir = 0; |
| 199 | return 0; |
| 200 | } |
| 201 | if( fossil_strcmp(zName, "custom")==0 ){ |
| 202 | pAltSkin = 0; |
| 203 | zAltSkinDir = 0; |
| 204 | iSkinSource = iSource; |
| 205 | return 0; |
| 206 | } |
| 207 | for(i=0; i<count(aBuiltinSkin); i++){ |
| 208 | if( fossil_strcmp(aBuiltinSkin[i].zLabel, zName)==0 ){ |
| 209 | pAltSkin = &aBuiltinSkin[i]; |
| 210 | iSkinSource = iSource; |
| @@ -283,11 +289,11 @@ | |
| 289 | zOut = db_get(zWhat, 0); |
| 290 | if( zOut==0 ){ |
| 291 | z = mprintf("skins/default/%s.txt", zWhat); |
| 292 | zOut = builtin_text(z); |
| 293 | fossil_free(z); |
| 294 | }else if( iSkinSource==SKIN_FROM_DEFAULT ){ |
| 295 | iSkinSource = SKIN_FROM_CUSTOM; |
| 296 | } |
| 297 | } |
| 298 | return zOut; |
| 299 | } |
| @@ -1346,10 +1352,11 @@ | |
| 1352 | */ |
| 1353 | void skins_page(void){ |
| 1354 | int i; |
| 1355 | char *zBase = fossil_strdup(g.zTop); |
| 1356 | size_t nBase = strlen(zBase); |
| 1357 | const char *z; |
| 1358 | login_check_credentials(); |
| 1359 | if( iDraftSkin && sqlite3_strglob("*/draft?", zBase)==0 ){ |
| 1360 | nBase -= 7; |
| 1361 | zBase[nBase] = 0; |
| 1362 | }else if( pAltSkin ){ |
| @@ -1376,10 +1383,18 @@ | |
| 1383 | @ higher-priority skin in place. |
| 1384 | @ </p> |
| 1385 | } |
| 1386 | @ <p>The following skins are available for this repository:</p> |
| 1387 | @ <ul> |
| 1388 | if( skin_exists_custom() ){ |
| 1389 | if( pAltSkin==0 && zAltSkinDir==0 && iDraftSkin==0 ){ |
| 1390 | @ <li> Custom skin for this repository ← <i>Currently in use</i> |
| 1391 | }else{ |
| 1392 | @ <li> %z(href("%R/skins?skin=custom"))\ |
| 1393 | @ Custom skin for this repository</a> |
| 1394 | } |
| 1395 | } |
| 1396 | for(i=0; i<count(aBuiltinSkin); i++){ |
| 1397 | if( pAltSkin==&aBuiltinSkin[i] ){ |
| 1398 | @ <li> %h(aBuiltinSkin[i].zDesc) ← <i>Currently in use</i> |
| 1399 | }else{ |
| 1400 | char *zUrl = href("%R/skins?skin=%T", aBuiltinSkin[i].zLabel); |
| @@ -1409,10 +1424,11 @@ | |
| 1424 | case SKIN_FROM_SETTING: |
| 1425 | @ the "default-skin" setting on the repository. |
| 1426 | break; |
| 1427 | } |
| 1428 | } |
| 1429 | fprintf(stderr, "iSkinSource = %d\n", iSkinSource); |
| 1430 | if( iSkinSource==SKIN_FROM_COOKIE || iSkinSource==SKIN_FROM_QPARAM ){ |
| 1431 | @ <ul> |
| 1432 | @ <li> %z(href("%R/skins?skin="))<i>Let Fossil choose \ |
| 1433 | @ which skin to use</i></a> |
| 1434 | @ </ul> |
| 1435 |