Fossil SCM
Add the /skins webpage.
Commit
d8ad5a2ec7824d67dcce25e1f0154c4a53b1c101235c55ff068ac607ca93adba
Parent
8f8b6e33cd5a19a…
1 file changed
+49
-7
+49
-7
| --- src/skins.c | ||
| +++ src/skins.c | ||
| @@ -40,22 +40,22 @@ | ||
| 40 | 40 | const char *zDesc; /* Description of this skin */ |
| 41 | 41 | const char *zLabel; /* The directory under skins/ holding this skin */ |
| 42 | 42 | char *zSQL; /* Filled in at run-time with SQL to insert this skin */ |
| 43 | 43 | } aBuiltinSkin[] = { |
| 44 | 44 | { "Default", "default", 0 }, |
| 45 | + { "Ardoise", "ardoise", 0 }, | |
| 46 | + { "Black & White, Menu on Left", "black_and_white", 0 }, | |
| 45 | 47 | { "Blitz", "blitz", 0 }, |
| 46 | 48 | { "Blitz, No Logo", "blitz_no_logo", 0 }, |
| 47 | 49 | { "Bootstrap", "bootstrap", 0 }, |
| 48 | - { "Xekri", "xekri", 0 }, | |
| 49 | - { "Original", "original", 0 }, | |
| 50 | + { "Eagle", "eagle", 0 }, | |
| 50 | 51 | { "Enhanced Original", "enhanced1", 0 }, |
| 51 | - { "Shadow boxes & Rounded Corners", "rounded1", 0 }, | |
| 52 | - { "Eagle", "eagle", 0 }, | |
| 53 | - { "Black & White, Menu on Left", "black_and_white", 0 }, | |
| 52 | + { "Khaki, No Logo", "khaki", 0 }, | |
| 53 | + { "Original", "original", 0 }, | |
| 54 | 54 | { "Plain Gray, No Logo", "plain_gray", 0 }, |
| 55 | - { "Khaki, No Logo", "khaki", 0 }, | |
| 56 | - { "Ardoise", "ardoise", 0 }, | |
| 55 | + { "Shadow boxes & Rounded Corners", "rounded1", 0 }, | |
| 56 | + { "Xekri", "xekri", 0 }, | |
| 57 | 57 | }; |
| 58 | 58 | |
| 59 | 59 | /* |
| 60 | 60 | ** A skin consists of five "files" named here: |
| 61 | 61 | */ |
| @@ -1132,5 +1132,47 @@ | ||
| 1132 | 1132 | @ for cleanup and recovery actions. |
| 1133 | 1133 | } |
| 1134 | 1134 | builtin_request_js("skin.js"); |
| 1135 | 1135 | style_finish_page(); |
| 1136 | 1136 | } |
| 1137 | + | |
| 1138 | +/* | |
| 1139 | +** WEBPAGE: skins | |
| 1140 | +** | |
| 1141 | +** Show a list of all of the built-in skins, plus the responsitory skin, | |
| 1142 | +** and provide the user with an opportunity to change to any of them. | |
| 1143 | +*/ | |
| 1144 | +void skins_page(void){ | |
| 1145 | + int i; | |
| 1146 | + char *zBase = fossil_strdup(g.zTop); | |
| 1147 | + size_t nBase = strlen(zBase); | |
| 1148 | + if( iDraftSkin && sqlite3_strglob("*/draft?", zBase)==0 ){ | |
| 1149 | + nBase -= 7; | |
| 1150 | + zBase[nBase] = 0; | |
| 1151 | + }else if( pAltSkin ){ | |
| 1152 | + char *zPattern = mprintf("*/skn_%s", pAltSkin->zLabel); | |
| 1153 | + if( sqlite3_strglob(zPattern, zBase)==0 ){ | |
| 1154 | + nBase -= strlen(zPattern)-1; | |
| 1155 | + zBase[nBase] = 0; | |
| 1156 | + } | |
| 1157 | + fossil_free(zPattern); | |
| 1158 | + } | |
| 1159 | + login_check_credentials(); | |
| 1160 | + style_header("Skins"); | |
| 1161 | + @ <ul> | |
| 1162 | + if( pAltSkin==0 && zAltSkinDir==0 && iDraftSkin==0 ){ | |
| 1163 | + @ <li> Standard skin for this repository ← <i>Currently in use</i> | |
| 1164 | + }else{ | |
| 1165 | + @ <li> %z(href("%s/skins",zBase))Standard skin for this repository</a> | |
| 1166 | + } | |
| 1167 | + for(i=0; i<count(aBuiltinSkin); i++){ | |
| 1168 | + if( pAltSkin==&aBuiltinSkin[i] ){ | |
| 1169 | + @ <li> %h(aBuiltinSkin[i].zDesc) ← <i>Currently in use</i> | |
| 1170 | + }else{ | |
| 1171 | + char *zUrl = href("%s/skn_%s/skins", zBase, aBuiltinSkin[i].zLabel); | |
| 1172 | + @ <li> %z(zUrl)%h(aBuiltinSkin[i].zDesc)</a> | |
| 1173 | + } | |
| 1174 | + } | |
| 1175 | + @ </ul> | |
| 1176 | + style_finish_page(); | |
| 1177 | + fossil_free(zBase); | |
| 1178 | +} | |
| 1137 | 1179 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -40,22 +40,22 @@ | |
| 40 | const char *zDesc; /* Description of this skin */ |
| 41 | const char *zLabel; /* The directory under skins/ holding this skin */ |
| 42 | char *zSQL; /* Filled in at run-time with SQL to insert this skin */ |
| 43 | } aBuiltinSkin[] = { |
| 44 | { "Default", "default", 0 }, |
| 45 | { "Blitz", "blitz", 0 }, |
| 46 | { "Blitz, No Logo", "blitz_no_logo", 0 }, |
| 47 | { "Bootstrap", "bootstrap", 0 }, |
| 48 | { "Xekri", "xekri", 0 }, |
| 49 | { "Original", "original", 0 }, |
| 50 | { "Enhanced Original", "enhanced1", 0 }, |
| 51 | { "Shadow boxes & Rounded Corners", "rounded1", 0 }, |
| 52 | { "Eagle", "eagle", 0 }, |
| 53 | { "Black & White, Menu on Left", "black_and_white", 0 }, |
| 54 | { "Plain Gray, No Logo", "plain_gray", 0 }, |
| 55 | { "Khaki, No Logo", "khaki", 0 }, |
| 56 | { "Ardoise", "ardoise", 0 }, |
| 57 | }; |
| 58 | |
| 59 | /* |
| 60 | ** A skin consists of five "files" named here: |
| 61 | */ |
| @@ -1132,5 +1132,47 @@ | |
| 1132 | @ for cleanup and recovery actions. |
| 1133 | } |
| 1134 | builtin_request_js("skin.js"); |
| 1135 | style_finish_page(); |
| 1136 | } |
| 1137 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -40,22 +40,22 @@ | |
| 40 | const char *zDesc; /* Description of this skin */ |
| 41 | const char *zLabel; /* The directory under skins/ holding this skin */ |
| 42 | char *zSQL; /* Filled in at run-time with SQL to insert this skin */ |
| 43 | } aBuiltinSkin[] = { |
| 44 | { "Default", "default", 0 }, |
| 45 | { "Ardoise", "ardoise", 0 }, |
| 46 | { "Black & White, Menu on Left", "black_and_white", 0 }, |
| 47 | { "Blitz", "blitz", 0 }, |
| 48 | { "Blitz, No Logo", "blitz_no_logo", 0 }, |
| 49 | { "Bootstrap", "bootstrap", 0 }, |
| 50 | { "Eagle", "eagle", 0 }, |
| 51 | { "Enhanced Original", "enhanced1", 0 }, |
| 52 | { "Khaki, No Logo", "khaki", 0 }, |
| 53 | { "Original", "original", 0 }, |
| 54 | { "Plain Gray, No Logo", "plain_gray", 0 }, |
| 55 | { "Shadow boxes & Rounded Corners", "rounded1", 0 }, |
| 56 | { "Xekri", "xekri", 0 }, |
| 57 | }; |
| 58 | |
| 59 | /* |
| 60 | ** A skin consists of five "files" named here: |
| 61 | */ |
| @@ -1132,5 +1132,47 @@ | |
| 1132 | @ for cleanup and recovery actions. |
| 1133 | } |
| 1134 | builtin_request_js("skin.js"); |
| 1135 | style_finish_page(); |
| 1136 | } |
| 1137 | |
| 1138 | /* |
| 1139 | ** WEBPAGE: skins |
| 1140 | ** |
| 1141 | ** Show a list of all of the built-in skins, plus the responsitory skin, |
| 1142 | ** and provide the user with an opportunity to change to any of them. |
| 1143 | */ |
| 1144 | void skins_page(void){ |
| 1145 | int i; |
| 1146 | char *zBase = fossil_strdup(g.zTop); |
| 1147 | size_t nBase = strlen(zBase); |
| 1148 | if( iDraftSkin && sqlite3_strglob("*/draft?", zBase)==0 ){ |
| 1149 | nBase -= 7; |
| 1150 | zBase[nBase] = 0; |
| 1151 | }else if( pAltSkin ){ |
| 1152 | char *zPattern = mprintf("*/skn_%s", pAltSkin->zLabel); |
| 1153 | if( sqlite3_strglob(zPattern, zBase)==0 ){ |
| 1154 | nBase -= strlen(zPattern)-1; |
| 1155 | zBase[nBase] = 0; |
| 1156 | } |
| 1157 | fossil_free(zPattern); |
| 1158 | } |
| 1159 | login_check_credentials(); |
| 1160 | style_header("Skins"); |
| 1161 | @ <ul> |
| 1162 | if( pAltSkin==0 && zAltSkinDir==0 && iDraftSkin==0 ){ |
| 1163 | @ <li> Standard skin for this repository ← <i>Currently in use</i> |
| 1164 | }else{ |
| 1165 | @ <li> %z(href("%s/skins",zBase))Standard skin for this repository</a> |
| 1166 | } |
| 1167 | for(i=0; i<count(aBuiltinSkin); i++){ |
| 1168 | if( pAltSkin==&aBuiltinSkin[i] ){ |
| 1169 | @ <li> %h(aBuiltinSkin[i].zDesc) ← <i>Currently in use</i> |
| 1170 | }else{ |
| 1171 | char *zUrl = href("%s/skn_%s/skins", zBase, aBuiltinSkin[i].zLabel); |
| 1172 | @ <li> %z(zUrl)%h(aBuiltinSkin[i].zDesc)</a> |
| 1173 | } |
| 1174 | } |
| 1175 | @ </ul> |
| 1176 | style_finish_page(); |
| 1177 | fossil_free(zBase); |
| 1178 | } |
| 1179 |