| ︙ | | |
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
|
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
|
-
+
|
const char *zCurrent = 0; /* Current skin */
int i; /* Loop counter */
Stmt q;
int seenCurrent = 0;
int once;
login_check_credentials();
if( !g.perm.Setup ){
if( !g.perm.Admin ){
login_needed(0);
return;
}
db_begin_transaction();
zCurrent = getSkin(0);
for(i=0; i<count(aBuiltinSkin); i++){
aBuiltinSkin[i].zSQL = getSkin(aBuiltinSkin[i].zLabel);
|
| ︙ | | |
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
|
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
|
-
+
|
}
/*
** WEBPAGE: setup_skinedit
**
** Edit aspects of a skin determined by the w= query parameter.
** Requires Setup privileges.
** Requires Admin or Setup privileges.
**
** w=NUM -- 0=CSS, 1=footer, 2=header, 3=details, 4=js
** sk=NUM -- the draft skin number
*/
void setup_skinedit(void){
static const struct sSkinAddr {
const char *zFile;
|
| ︙ | | |
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
|
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
|
-
+
|
login_check_credentials();
/* Figure out which skin we are editing */
iSkin = atoi(PD("sk","1"));
if( iSkin<1 || iSkin>9 ) iSkin = 1;
/* Check that the user is authorized to edit this skin. */
if( !g.perm.Setup ){
if( !g.perm.Admin ){
char *zAllowedEditors = "";
Glob *pAllowedEditors;
int isMatch = 0;
if( login_is_individual() ){
zAllowedEditors = db_get_mprintf("", "draft%d-users", iSkin);
}
if( zAllowedEditors[0] ){
|
| ︙ | | |
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
|
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
|
-
+
|
@ <p>Repeat <a href='#step4'>step 4</a> and
@ <a href='#step5'>step 5</a> as many times as necessary to create
@ a production-ready skin.
@
@ <a name='step7'></a>
@ <h1>Step 7: Publish</h1>
@
if( !g.perm.Setup ){
if( !g.perm.Admin ){
@ <p>Only administrators are allowed to publish draft skins. Contact
@ an administrator to get this "draft%d(iSkin)" skin published.</p>
}else{
@ <p>When the draft%d(iSkin) skin is ready for production use,
@ make it the default scan by clicking the acknowledgements and
@ pressing the button below:</p>
@
|
| ︙ | | |
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
|
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
|
-
+
|
@ <p>You will probably need to press Reload on your browser after
@ publishing the new skin.</p>
}
@
@ <a name='step8'></a>
@ <h1>Step 8: Cleanup and Undo Actions</h1>
@
if( !g.perm.Setup ){
if( !g.perm.Admin ){
@ <p>Administrators can optionally save or restore legacy skins, and/or
@ undo a prior publish.
}else{
@ <p>Visit the <a href='%R/setup_skin_admin'>Skin Admin</a> page
@ for cleanup and recovery actions.
}
style_load_one_js_file("skin.js");
style_footer();
}
|