| ︙ | | |
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
|
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
|
+
+
|
z = db_get(azSkinFile[i], 0);
if( z==0 ){
zLabel = mprintf("skins/default/%s.txt", azSkinFile[i]);
z = builtin_text(zLabel);
fossil_free(zLabel);
}
}
db_unprotect(PROTECT_CONFIG);
blob_appendf(&val,
"REPLACE INTO config(name,value,mtime) VALUES(%Q,%Q,now());\n",
azSkinFile[i], z
);
db_protect_pop();
}
return blob_str(&val);
}
/*
** Respond to a Rename button press. Return TRUE if a dialog was painted.
** Return FALSE to continue with the main Skins page.
|
| ︙ | | |
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
|
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
|
+
+
|
@ <input type="submit" name="canren" value="Cancel">
@ </table>
login_insert_csrf_secret();
@ </div></form>
style_footer();
return 1;
}
db_unprotect(PROTECT_CONFIG);
db_multi_exec(
"UPDATE config SET name='skin:%q' WHERE name='skin:%q';",
zNewName, zOldName
);
db_protect_pop();
return 0;
}
/*
** Respond to a Save button press. Return TRUE if a dialog was painted.
** Return FALSE to continue with the main Skins page.
*/
|
| ︙ | | |
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
|
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
|
+
+
|
@ <input type="submit" name="cansave" value="Cancel">
@ </table>
login_insert_csrf_secret();
@ </div></form>
style_footer();
return 1;
}
db_unprotect(PROTECT_CONFIG);
db_multi_exec(
"INSERT OR IGNORE INTO config(name, value, mtime)"
"VALUES('skin:%q',%Q,now())",
zNewName, zCurrent
);
db_protect_pop();
return 0;
}
/*
** WEBPAGE: setup_skin_admin
**
** Administrative actions on skins. For administrators only.
|
| ︙ | | |
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
|
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
|
+
+
+
+
|
login_insert_csrf_secret();
@ </div></form>
style_footer();
db_end_transaction(1);
return;
}
if( P("del2")!=0 && (zName = skinVarName(P("sn"), 1))!=0 ){
db_unprotect(PROTECT_CONFIG);
db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
db_protect_pop();
}
if( P("draftdel")!=0 ){
const char *zDraft = P("name");
if( sqlite3_strglob("draft[1-9]",zDraft)==0 ){
db_unprotect(PROTECT_CONFIG);
db_multi_exec("DELETE FROM config WHERE name GLOB '%q-*'", zDraft);
db_protect_pop();
}
}
if( skinRename() || skinSave(zCurrent) ){
db_end_transaction(0);
return;
}
|
| ︙ | | |
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
|
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
|
+
+
|
break;
}
}
if( !seen ){
seen = db_exists("SELECT 1 FROM config WHERE name GLOB 'skin:*'"
" AND value=%Q", zCurrent);
if( !seen ){
db_unprotect(PROTECT_CONFIG);
db_multi_exec(
"INSERT INTO config(name,value,mtime) VALUES("
" strftime('skin:Backup On %%Y-%%m-%%d %%H:%%M:%%S'),"
" %Q,now())", zCurrent
);
db_protect_pop();
}
}
seen = 0;
for(i=0; i<count(aBuiltinSkin); i++){
if( fossil_strcmp(aBuiltinSkin[i].zDesc, z)==0 ){
seen = 1;
zCurrent = aBuiltinSkin[i].zSQL;
|
| ︙ | | |
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
|
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
|
+
+
|
}
}
if( !seen ){
seen = db_exists("SELECT 1 FROM config WHERE name GLOB 'skin:*'"
" AND value=%Q", zCurrent);
}
if( !seen ){
db_unprotect(PROTECT_CONFIG);
db_multi_exec(
"INSERT INTO config(name,value,mtime) VALUES("
" strftime('skin:Backup On %%Y-%%m-%%d %%H:%%M:%%S'),"
" %Q,now())", zCurrent
);
db_protect_pop();
}
/* Publish draft iSkin */
for(i=0; i<count(azSkinFile); i++){
char *zNew = db_get_mprintf("", "draft%d-%s", iSkin, azSkinFile[i]);
db_set(azSkinFile[i], zNew, 0);
}
|
| ︙ | | |