623
624
625
626
627
628
629
630
631
632
633
634
635
636
|
/* 2 */ { "header", "Page Header", "Header", },
/* 3 */ { "details", "Display Details", "Details", },
};
const char *zBasis;
const char *zContent;
char *zDflt;
char *zKey;
int iSkin;
int ii;
int j;
login_check_credentials();
/* Figure out which skin we are editing */
|
>
|
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
|
/* 2 */ { "header", "Page Header", "Header", },
/* 3 */ { "details", "Display Details", "Details", },
};
const char *zBasis;
const char *zContent;
char *zDflt;
char *zKey;
char *zTitle;
int iSkin;
int ii;
int j;
login_check_credentials();
/* Figure out which skin we are editing */
|
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
|
}
}
/* figure out which file is to be edited */
ii = atoi(PD("w","0"));
if( ii<0 || ii>count(aSkinAttr) ) ii = 0;
zKey = mprintf("draft%d-%s", iSkin, aSkinAttr[ii].zFile);
zBasis = PD("basis","default");
zDflt = mprintf("skins/%s/%s.txt", zBasis, aSkinAttr[ii].zFile);
db_begin_transaction();
if( P("revert")!=0 ){
db_multi_exec("DELETE FROM config WHERE name=%Q", aSkinAttr[ii].zFile);
cgi_replace_parameter(aSkinAttr[ii].zFile, builtin_text(zDflt));
}
style_header("%s", aSkinAttr[ii].zTitle);
for(j=0; j<count(aSkinAttr); j++){
if( j==ii ) continue;
style_submenu_element(aSkinAttr[j].zSubmenu,
"%R/setup_skinedit?w=%d&basis=%h",j,zBasis);
}
@ <form action="%s(g.zTop)/setup_skinedit" method="post"><div>
login_insert_csrf_secret();
@ <input type='hidden' name='w' value='%d(ii)'>
@ <input type='hidden' name='sk' value='%d(iSkin)'>
@ <h2>Edit %s(aSkinAttr[ii].zTitle):</h2>
zContent = textarea_attribute("", 10, 80, zKey,
aSkinAttr[ii].zFile, builtin_text(zDflt), 0);
@ <br />
@ <input type="submit" name="submit" value="Apply Changes" />
@ <hr />
@ Baseline: <select size='1' name='basis'>
for(j=0; j<count(aBuiltinSkin); j++){
|
>
|
|
|
|
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
|
}
}
/* figure out which file is to be edited */
ii = atoi(PD("w","0"));
if( ii<0 || ii>count(aSkinAttr) ) ii = 0;
zKey = mprintf("draft%d-%s", iSkin, aSkinAttr[ii].zFile);
zTitle = mprintf("%s for Draft%d", aSkinAttr[ii].zTitle, iSkin);
zBasis = PD("basis","default");
zDflt = mprintf("skins/%s/%s.txt", zBasis, aSkinAttr[ii].zFile);
db_begin_transaction();
if( P("revert")!=0 ){
db_multi_exec("DELETE FROM config WHERE name=%Q", aSkinAttr[ii].zFile);
cgi_replace_parameter(aSkinAttr[ii].zFile, builtin_text(zDflt));
}
style_header("%s", zTitle);
for(j=0; j<count(aSkinAttr); j++){
if( j==ii ) continue;
style_submenu_element(aSkinAttr[j].zSubmenu,
"%R/setup_skinedit?w=%d&basis=%h&sk=%d",j,zBasis,iSkin);
}
@ <form action="%s(g.zTop)/setup_skinedit" method="post"><div>
login_insert_csrf_secret();
@ <input type='hidden' name='w' value='%d(ii)'>
@ <input type='hidden' name='sk' value='%d(iSkin)'>
@ <h2>Edit %s(zTitle):</h2>
zContent = textarea_attribute("", 10, 80, zKey,
aSkinAttr[ii].zFile, builtin_text(zDflt), 0);
@ <br />
@ <input type="submit" name="submit" value="Apply Changes" />
@ <hr />
@ Baseline: <select size='1' name='basis'>
for(j=0; j<count(aBuiltinSkin); j++){
|
791
792
793
794
795
796
797
798
799
800
801
802
803
804
|
*/
void setup_skin(void){
int i; /* Loop counter */
int iSkin; /* Which draft skin is being edited */
int isSetup; /* True for an administrator */
int isEditor; /* Others authorized to make edits */
char *zAllowedEditors; /* Who may edit the draft skin */
static const char *azTestPages[] = {
"home",
"timeline",
"dir?ci=tip",
"dir?ci=tip&type=tree",
"brlist",
"info/trunk",
|
>
|
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
|
*/
void setup_skin(void){
int i; /* Loop counter */
int iSkin; /* Which draft skin is being edited */
int isSetup; /* True for an administrator */
int isEditor; /* Others authorized to make edits */
char *zAllowedEditors; /* Who may edit the draft skin */
char *zBase; /* Base URL for draft under test */
static const char *azTestPages[] = {
"home",
"timeline",
"dir?ci=tip",
"dir?ci=tip&type=tree",
"brlist",
"info/trunk",
|
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
|
if( !isEditor ){
@ <p>You are not authorized to make edits to the draft%d(iSkin) skin.
@ Contact the administrator of this Fossil repository for help.</p>
}else{
@ <p>Edit the components of the draft%d(iSkin) skin:
@ <ul>
@ <li><a href='%R/setup_skinedit?w=0&sk=%d(iSkin)' target='_blank'>CSS</a>
@ <li><a href='%R/setup_skinedit?w=1&sk=%d(iSkin)' target='_blank'>\
@ Header</a>
@ <li><a href='%R/setup_skinedit?w=2&sk=%d(iSkin)' target='_blank'>\
@ Footer</a>
@ <li><a href='%R/setup_skinedit?w=3&sk=%d(iSkin)' target='_blank'>\
@ Details</a>
@ </ul>
}
@
@ <a name='step5'></a>
@ <h1>Step 5: Verify The Draft Skin</h1>
@
@ <p>To test this draft skin, insert text "/draft%d(iSkin)/" just before the
@ operation name in the URL. Here are a few links to try:
@ <ul>
for(i=0; i<count(azTestPages); i++){
@ <li><a href='%s(g.zBaseURL)/draft%d(iSkin)/%s(azTestPages[i])' \
@ target='_blank'>%s(g.zBaseURL)/draft%d(iSkin)/%s(azTestPages[i])</a>
}
@ </ul>
@
@ <p>You will probably need to press Reload on your browser before any
@ CSS changes will take effect.</p>
@
@ <a hame='step6'></a>
@ <h1>Step 6: Interate</h1>
|
|
|
>
>
>
>
>
|
|
>
|
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
|
if( !isEditor ){
@ <p>You are not authorized to make edits to the draft%d(iSkin) skin.
@ Contact the administrator of this Fossil repository for help.</p>
}else{
@ <p>Edit the components of the draft%d(iSkin) skin:
@ <ul>
@ <li><a href='%R/setup_skinedit?w=0&sk=%d(iSkin)' target='_blank'>CSS</a>
@ <li><a href='%R/setup_skinedit?w=2&sk=%d(iSkin)' target='_blank'>\
@ Header</a>
@ <li><a href='%R/setup_skinedit?w=1&sk=%d(iSkin)' target='_blank'>\
@ Footer</a>
@ <li><a href='%R/setup_skinedit?w=3&sk=%d(iSkin)' target='_blank'>\
@ Details</a>
@ </ul>
}
@
@ <a name='step5'></a>
@ <h1>Step 5: Verify The Draft Skin</h1>
@
@ <p>To test this draft skin, insert text "/draft%d(iSkin)/" just before the
@ operation name in the URL. Here are a few links to try:
@ <ul>
if( iDraftSkin && sqlite3_strglob("*/draft[1-9]", g.zBaseURL)==0 ){
zBase = mprintf("%.*s/draft%d", (int)strlen(g.zBaseURL)-7,g.zBaseURL,iSkin);
}else{
zBase = mprintf("%s/draft%d", g.zBaseURL, iSkin);
}
for(i=0; i<count(azTestPages); i++){
@ <li><a href='%s(zBase)/%s(azTestPages[i])' target='_blank'>\
@ %s(zBase)/%s(azTestPages[i])</a>
}
fossil_free(zBase);
@ </ul>
@
@ <p>You will probably need to press Reload on your browser before any
@ CSS changes will take effect.</p>
@
@ <a hame='step6'></a>
@ <h1>Step 6: Interate</h1>
|