Fossil SCM
Improvements to the "/skins" page to work better with the new default-skin setting.
Commit
99575d4cbcbc24e60774cbd6927fe33c9f2248a1c6b73b579cb113a17113bc58
Parent
3a78497bd710c5a…
1 file changed
+13
-6
+13
-6
| --- src/skins.c | ||
| +++ src/skins.c | ||
| @@ -736,10 +736,11 @@ | ||
| 736 | 736 | @ (Selected) |
| 737 | 737 | seenDefault = 1; |
| 738 | 738 | } |
| 739 | 739 | if( pAltSkin==&aBuiltinSkin[i] && iSkinSource!=SKIN_FROM_SETTING ){ |
| 740 | 740 | @ (Override) |
| 741 | + zOverride = z; | |
| 741 | 742 | } |
| 742 | 743 | @ </form></td></tr> |
| 743 | 744 | } |
| 744 | 745 | if( zOverride ){ |
| 745 | 746 | @ <tr><td> <td colspan="3"> |
| @@ -1345,10 +1346,11 @@ | ||
| 1345 | 1346 | */ |
| 1346 | 1347 | void skins_page(void){ |
| 1347 | 1348 | int i; |
| 1348 | 1349 | char *zBase = fossil_strdup(g.zTop); |
| 1349 | 1350 | size_t nBase = strlen(zBase); |
| 1351 | + login_check_credentials(); | |
| 1350 | 1352 | if( iDraftSkin && sqlite3_strglob("*/draft?", zBase)==0 ){ |
| 1351 | 1353 | nBase -= 7; |
| 1352 | 1354 | zBase[nBase] = 0; |
| 1353 | 1355 | }else if( pAltSkin ){ |
| 1354 | 1356 | char *zPattern = mprintf("*/skn_%s", pAltSkin->zLabel); |
| @@ -1356,11 +1358,10 @@ | ||
| 1356 | 1358 | nBase -= strlen(zPattern)-1; |
| 1357 | 1359 | zBase[nBase] = 0; |
| 1358 | 1360 | } |
| 1359 | 1361 | fossil_free(zPattern); |
| 1360 | 1362 | } |
| 1361 | - login_check_credentials(); | |
| 1362 | 1363 | style_header("Skins"); |
| 1363 | 1364 | if( iDraftSkin || nSkinRank<=1 ){ |
| 1364 | 1365 | @ <p class="warning">Warning: |
| 1365 | 1366 | if( iDraftSkin>0 ){ |
| 1366 | 1367 | @ you are using a draft skin, |
| @@ -1375,15 +1376,10 @@ | ||
| 1375 | 1376 | @ higher-priority skin in place. |
| 1376 | 1377 | @ </p> |
| 1377 | 1378 | } |
| 1378 | 1379 | @ <p>The following skins are available for this repository:</p> |
| 1379 | 1380 | @ <ul> |
| 1380 | - if( pAltSkin==0 && zAltSkinDir==0 && iDraftSkin==0 ){ | |
| 1381 | - @ <li> Custom skin for this repository ← <i>Currently in use</i> | |
| 1382 | - }else{ | |
| 1383 | - @ <li> %z(href("%R/skins?skin="))Custom skin for this repository</a> | |
| 1384 | - } | |
| 1385 | 1381 | for(i=0; i<count(aBuiltinSkin); i++){ |
| 1386 | 1382 | if( pAltSkin==&aBuiltinSkin[i] ){ |
| 1387 | 1383 | @ <li> %h(aBuiltinSkin[i].zDesc) ← <i>Currently in use</i> |
| 1388 | 1384 | }else{ |
| 1389 | 1385 | char *zUrl = href("%R/skins?skin=%T", aBuiltinSkin[i].zLabel); |
| @@ -1412,9 +1408,20 @@ | ||
| 1412 | 1408 | break; |
| 1413 | 1409 | case SKIN_FROM_SETTING: |
| 1414 | 1410 | @ the "default-skin" setting on the repository. |
| 1415 | 1411 | break; |
| 1416 | 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> | |
| 1417 | 1419 | } |
| 1418 | 1420 | style_finish_page(); |
| 1421 | + if( P("skin")!=0 ){ | |
| 1422 | + sqlite3_uint64 x; | |
| 1423 | + sqlite3_randomness(sizeof(x), &x); | |
| 1424 | + cgi_redirectf("%R/skins/%llx", x); | |
| 1425 | + } | |
| 1419 | 1426 | fossil_free(zBase); |
| 1420 | 1427 | } |
| 1421 | 1428 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -736,10 +736,11 @@ | |
| 736 | @ (Selected) |
| 737 | seenDefault = 1; |
| 738 | } |
| 739 | if( pAltSkin==&aBuiltinSkin[i] && iSkinSource!=SKIN_FROM_SETTING ){ |
| 740 | @ (Override) |
| 741 | } |
| 742 | @ </form></td></tr> |
| 743 | } |
| 744 | if( zOverride ){ |
| 745 | @ <tr><td> <td colspan="3"> |
| @@ -1345,10 +1346,11 @@ | |
| 1345 | */ |
| 1346 | void skins_page(void){ |
| 1347 | int i; |
| 1348 | char *zBase = fossil_strdup(g.zTop); |
| 1349 | size_t nBase = strlen(zBase); |
| 1350 | if( iDraftSkin && sqlite3_strglob("*/draft?", zBase)==0 ){ |
| 1351 | nBase -= 7; |
| 1352 | zBase[nBase] = 0; |
| 1353 | }else if( pAltSkin ){ |
| 1354 | char *zPattern = mprintf("*/skn_%s", pAltSkin->zLabel); |
| @@ -1356,11 +1358,10 @@ | |
| 1356 | nBase -= strlen(zPattern)-1; |
| 1357 | zBase[nBase] = 0; |
| 1358 | } |
| 1359 | fossil_free(zPattern); |
| 1360 | } |
| 1361 | login_check_credentials(); |
| 1362 | style_header("Skins"); |
| 1363 | if( iDraftSkin || nSkinRank<=1 ){ |
| 1364 | @ <p class="warning">Warning: |
| 1365 | if( iDraftSkin>0 ){ |
| 1366 | @ you are using a draft skin, |
| @@ -1375,15 +1376,10 @@ | |
| 1375 | @ higher-priority skin in place. |
| 1376 | @ </p> |
| 1377 | } |
| 1378 | @ <p>The following skins are available for this repository:</p> |
| 1379 | @ <ul> |
| 1380 | if( pAltSkin==0 && zAltSkinDir==0 && iDraftSkin==0 ){ |
| 1381 | @ <li> Custom skin for this repository ← <i>Currently in use</i> |
| 1382 | }else{ |
| 1383 | @ <li> %z(href("%R/skins?skin="))Custom skin for this repository</a> |
| 1384 | } |
| 1385 | for(i=0; i<count(aBuiltinSkin); i++){ |
| 1386 | if( pAltSkin==&aBuiltinSkin[i] ){ |
| 1387 | @ <li> %h(aBuiltinSkin[i].zDesc) ← <i>Currently in use</i> |
| 1388 | }else{ |
| 1389 | char *zUrl = href("%R/skins?skin=%T", aBuiltinSkin[i].zLabel); |
| @@ -1412,9 +1408,20 @@ | |
| 1412 | break; |
| 1413 | case SKIN_FROM_SETTING: |
| 1414 | @ the "default-skin" setting on the repository. |
| 1415 | break; |
| 1416 | } |
| 1417 | } |
| 1418 | style_finish_page(); |
| 1419 | fossil_free(zBase); |
| 1420 | } |
| 1421 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -736,10 +736,11 @@ | |
| 736 | @ (Selected) |
| 737 | seenDefault = 1; |
| 738 | } |
| 739 | if( pAltSkin==&aBuiltinSkin[i] && iSkinSource!=SKIN_FROM_SETTING ){ |
| 740 | @ (Override) |
| 741 | zOverride = z; |
| 742 | } |
| 743 | @ </form></td></tr> |
| 744 | } |
| 745 | if( zOverride ){ |
| 746 | @ <tr><td> <td colspan="3"> |
| @@ -1345,10 +1346,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 ){ |
| 1356 | char *zPattern = mprintf("*/skn_%s", pAltSkin->zLabel); |
| @@ -1356,11 +1358,10 @@ | |
| 1358 | nBase -= strlen(zPattern)-1; |
| 1359 | zBase[nBase] = 0; |
| 1360 | } |
| 1361 | fossil_free(zPattern); |
| 1362 | } |
| 1363 | style_header("Skins"); |
| 1364 | if( iDraftSkin || nSkinRank<=1 ){ |
| 1365 | @ <p class="warning">Warning: |
| 1366 | if( iDraftSkin>0 ){ |
| 1367 | @ you are using a draft skin, |
| @@ -1375,15 +1376,10 @@ | |
| 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); |
| @@ -1412,9 +1408,20 @@ | |
| 1408 | break; |
| 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 | } |
| 1420 | style_finish_page(); |
| 1421 | if( P("skin")!=0 ){ |
| 1422 | sqlite3_uint64 x; |
| 1423 | sqlite3_randomness(sizeof(x), &x); |
| 1424 | cgi_redirectf("%R/skins/%llx", x); |
| 1425 | } |
| 1426 | fossil_free(zBase); |
| 1427 | } |
| 1428 |