@@ -37,21 +37,88 @@
37 37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 4. Make an entry in the following array for the new skin.
38 38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
39 39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static struct BuiltinSkin {
40 40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDesc; /* Description of this skin */
41 41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zLabel; /* The directory under skins/ holding this skin */
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int whiteForeground; /* True if this skin uses a light-colored foreground */
42 43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zSQL; /* Filled in at run-time with SQL to insert this skin */
43 44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} aBuiltinSkin[] = {
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "Default", "default", 0 },
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "Plain Gray, No Logo", "plain_gray", 0 },
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "Khaki, No Logo", "khaki", 0 },
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "Black & White, Menu on Left", "black_and_white", 0 },
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "Shadow boxes & Rounded Corners", "rounded1", 0 },
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "Enhanced Default", "enhanced1", 0 },
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "San Francisco Modern", "etienne1", 0 },
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "Eagle", "eagle", 0 },
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "Default", "default", 0, 0 },
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "Plain Gray, No Logo", "plain_gray", 0, 0 },
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "Khaki, No Logo", "khaki", 0, 0 },
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "Black & White, Menu on Left", "black_and_white", 0, 0 },
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "Shadow boxes & Rounded Corners", "rounded1", 0, 0 },
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "Enhanced Default", "enhanced1", 0, 0 },
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "San Francisco Modern", "etienne1", 0, 0 },
52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "Eagle", "eagle", 1, 0 },
52 53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Alternative skins can be specified in the CGI script or by options
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** on the "http", "ui", and "server" commands. The alternative skin
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** name must be one of the aBuiltinSkin[].zLabel names. If there is
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a match, that alternative is used.
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The following static variable holds the name of the alternative skin,
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or NULL if the skin should be as configured.
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static struct BuiltinSkin *pAltSkin = 0;
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Invoke this routine to set the alternative skin. Return NULL if the
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** alternative was successfully installed. Return a string listing all
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** available skins if zName does not match an available skin. Memory
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for the returned string comes from fossil_malloc() and should be freed
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** by the caller.
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *skin_use_alternative(const char *zName){
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob err;
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<ArraySize(aBuiltinSkin); i++){
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fossil_strcmp(aBuiltinSkin[i].zLabel, zName)==0 ){
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pAltSkin = &aBuiltinSkin[i];
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_init(&err, aBuiltinSkin[0].zLabel, -1);
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=1; i<ArraySize(aBuiltinSkin); i++){
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(&err, " ", 1);
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(&err, aBuiltinSkin[i].zLabel, -1);
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return blob_str(&err);
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The following routines return the various components of the skin
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that should be used for the current run.
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *skin_get(const char *zWhat){
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zOut;
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *z;
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pAltSkin ){
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = mprintf("skins/%s/%s.txt", pAltSkin->zLabel, zWhat);
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zOut = builtin_text(z);
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(z);
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zOut = db_get(zWhat, 0);
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zOut==0 ){
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = mprintf("skins/default/%s.txt", zWhat);
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zOut = builtin_text(z);
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(z);
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return zOut;
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int skin_white_foreground(void){
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc;
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pAltSkin ){
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = pAltSkin->whiteForeground;
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = db_get_boolean("white-foreground",0);
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
53 120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
54 121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55 122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** For a skin named zSkinName, compute the name of the CONFIG table
56 123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** entry where that skin is stored and return it.
57 124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -288,10 +355,18 @@
288 355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <a href="setup_editcss">CSS</a>,
289 356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <a href="setup_header">Header</a>, and
290 357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <a href="setup_footer">Footer</a> that determines the look and feel
291 358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ of the web interface.</p>
292 359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pAltSkin ){
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <p class="generalError">
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ This page is generated using an skin override named
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ "%h(pAltSkin->zLabel)". You can change the skin configuration
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ below, but the changes will not take effect until the Fossil server
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ is restarted without the override.</p>
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
293 368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <h2>Available Skins:</h2>
294 369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <table border="0">
295 370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<sizeof(aBuiltinSkin)/sizeof(aBuiltinSkin[0]); i++){
296 371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = aBuiltinSkin[i].zDesc;
297 372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <tr><td>%d(i+1).<td>%h(z)<td> <td>
@@ -300,10 +375,13 @@
300 375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
seenCurrent = 1;
301 376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
302 377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <form action="%s(g.zTop)/setup_skin" method="post">
303 378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="hidden" name="sn" value="%h(z)" />
304 379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="submit" name="load" value="Install" />
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pAltSkin==&aBuiltinSkin[i] ){
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ (Current override)
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
305 383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </form>
306 384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
307 385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </tr>
308 386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
309 387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q,
310 388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!