Fossil SCM

merge trunk

jan.nijtmans 2012-09-05 06:32 eclipse-project merge
Commit 1393a9107b3fee4b89886e2d3550f8523cee5e60
+12 -9
--- src/configure.c
+++ src/configure.c
@@ -27,17 +27,18 @@
2727
#if INTERFACE
2828
/*
2929
** Configuration transfers occur in groups. These are the allowed
3030
** groupings:
3131
*/
32
-#define CONFIGSET_SKIN 0x000001 /* WWW interface appearance */
33
-#define CONFIGSET_TKT 0x000002 /* Ticket configuration */
34
-#define CONFIGSET_PROJ 0x000004 /* Project name */
35
-#define CONFIGSET_SHUN 0x000008 /* Shun settings */
36
-#define CONFIGSET_USER 0x000010 /* The USER table */
37
-#define CONFIGSET_ADDR 0x000020 /* The CONCEALED table */
38
-#define CONFIGSET_XFER 0x000040 /* Transfer configuration */
32
+#define CONFIGSET_CSS 0x000001 /* Style sheet only */
33
+#define CONFIGSET_SKIN 0x000002 /* WWW interface appearance */
34
+#define CONFIGSET_TKT 0x000004 /* Ticket configuration */
35
+#define CONFIGSET_PROJ 0x000008 /* Project name */
36
+#define CONFIGSET_SHUN 0x000010 /* Shun settings */
37
+#define CONFIGSET_USER 0x000020 /* The USER table */
38
+#define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */
39
+#define CONFIGSET_XFER 0x000080 /* Transfer configuration */
3940
4041
#define CONFIGSET_ALL 0x0000ff /* Everything */
4142
4243
#define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
4344
#define CONFIGSET_OLDFORMAT 0x200000 /* Use the legacy format */
@@ -52,11 +53,13 @@
5253
int groupMask; /* Mask for that configuration set */
5354
const char *zHelp; /* What it does */
5455
} aGroupName[] = {
5556
{ "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
5657
{ "/project", CONFIGSET_PROJ, "Project name and description" },
57
- { "/skin", CONFIGSET_SKIN, "Web interface apparance settings" },
58
+ { "/skin", CONFIGSET_SKIN | CONFIGSET_CSS,
59
+ "Web interface apparance settings" },
60
+ { "/css", CONFIGSET_CSS, "Style sheet" },
5861
{ "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
5962
{ "/ticket", CONFIGSET_TKT, "Ticket setup", },
6063
{ "/user", CONFIGSET_USER, "Users and privilege settings" },
6164
{ "/xfer", CONFIGSET_XFER, "Transfer setup", },
6265
{ "/all", CONFIGSET_ALL, "All of the above" },
@@ -73,11 +76,11 @@
7376
*/
7477
static struct {
7578
const char *zName; /* Name of the configuration parameter */
7679
int groupMask; /* Which config groups is it part of */
7780
} aConfig[] = {
78
- { "css", CONFIGSET_SKIN },
81
+ { "css", CONFIGSET_CSS },
7982
{ "header", CONFIGSET_SKIN },
8083
{ "footer", CONFIGSET_SKIN },
8184
{ "logo-mimetype", CONFIGSET_SKIN },
8285
{ "logo-image", CONFIGSET_SKIN },
8386
{ "background-mimetype", CONFIGSET_SKIN },
8487
--- src/configure.c
+++ src/configure.c
@@ -27,17 +27,18 @@
27 #if INTERFACE
28 /*
29 ** Configuration transfers occur in groups. These are the allowed
30 ** groupings:
31 */
32 #define CONFIGSET_SKIN 0x000001 /* WWW interface appearance */
33 #define CONFIGSET_TKT 0x000002 /* Ticket configuration */
34 #define CONFIGSET_PROJ 0x000004 /* Project name */
35 #define CONFIGSET_SHUN 0x000008 /* Shun settings */
36 #define CONFIGSET_USER 0x000010 /* The USER table */
37 #define CONFIGSET_ADDR 0x000020 /* The CONCEALED table */
38 #define CONFIGSET_XFER 0x000040 /* Transfer configuration */
 
39
40 #define CONFIGSET_ALL 0x0000ff /* Everything */
41
42 #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
43 #define CONFIGSET_OLDFORMAT 0x200000 /* Use the legacy format */
@@ -52,11 +53,13 @@
52 int groupMask; /* Mask for that configuration set */
53 const char *zHelp; /* What it does */
54 } aGroupName[] = {
55 { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
56 { "/project", CONFIGSET_PROJ, "Project name and description" },
57 { "/skin", CONFIGSET_SKIN, "Web interface apparance settings" },
 
 
58 { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
59 { "/ticket", CONFIGSET_TKT, "Ticket setup", },
60 { "/user", CONFIGSET_USER, "Users and privilege settings" },
61 { "/xfer", CONFIGSET_XFER, "Transfer setup", },
62 { "/all", CONFIGSET_ALL, "All of the above" },
@@ -73,11 +76,11 @@
73 */
74 static struct {
75 const char *zName; /* Name of the configuration parameter */
76 int groupMask; /* Which config groups is it part of */
77 } aConfig[] = {
78 { "css", CONFIGSET_SKIN },
79 { "header", CONFIGSET_SKIN },
80 { "footer", CONFIGSET_SKIN },
81 { "logo-mimetype", CONFIGSET_SKIN },
82 { "logo-image", CONFIGSET_SKIN },
83 { "background-mimetype", CONFIGSET_SKIN },
84
--- src/configure.c
+++ src/configure.c
@@ -27,17 +27,18 @@
27 #if INTERFACE
28 /*
29 ** Configuration transfers occur in groups. These are the allowed
30 ** groupings:
31 */
32 #define CONFIGSET_CSS 0x000001 /* Style sheet only */
33 #define CONFIGSET_SKIN 0x000002 /* WWW interface appearance */
34 #define CONFIGSET_TKT 0x000004 /* Ticket configuration */
35 #define CONFIGSET_PROJ 0x000008 /* Project name */
36 #define CONFIGSET_SHUN 0x000010 /* Shun settings */
37 #define CONFIGSET_USER 0x000020 /* The USER table */
38 #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */
39 #define CONFIGSET_XFER 0x000080 /* Transfer configuration */
40
41 #define CONFIGSET_ALL 0x0000ff /* Everything */
42
43 #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
44 #define CONFIGSET_OLDFORMAT 0x200000 /* Use the legacy format */
@@ -52,11 +53,13 @@
53 int groupMask; /* Mask for that configuration set */
54 const char *zHelp; /* What it does */
55 } aGroupName[] = {
56 { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
57 { "/project", CONFIGSET_PROJ, "Project name and description" },
58 { "/skin", CONFIGSET_SKIN | CONFIGSET_CSS,
59 "Web interface apparance settings" },
60 { "/css", CONFIGSET_CSS, "Style sheet" },
61 { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
62 { "/ticket", CONFIGSET_TKT, "Ticket setup", },
63 { "/user", CONFIGSET_USER, "Users and privilege settings" },
64 { "/xfer", CONFIGSET_XFER, "Transfer setup", },
65 { "/all", CONFIGSET_ALL, "All of the above" },
@@ -73,11 +76,11 @@
76 */
77 static struct {
78 const char *zName; /* Name of the configuration parameter */
79 int groupMask; /* Which config groups is it part of */
80 } aConfig[] = {
81 { "css", CONFIGSET_CSS },
82 { "header", CONFIGSET_SKIN },
83 { "footer", CONFIGSET_SKIN },
84 { "logo-mimetype", CONFIGSET_SKIN },
85 { "logo-image", CONFIGSET_SKIN },
86 { "background-mimetype", CONFIGSET_SKIN },
87
+12 -9
--- src/configure.c
+++ src/configure.c
@@ -27,17 +27,18 @@
2727
#if INTERFACE
2828
/*
2929
** Configuration transfers occur in groups. These are the allowed
3030
** groupings:
3131
*/
32
-#define CONFIGSET_SKIN 0x000001 /* WWW interface appearance */
33
-#define CONFIGSET_TKT 0x000002 /* Ticket configuration */
34
-#define CONFIGSET_PROJ 0x000004 /* Project name */
35
-#define CONFIGSET_SHUN 0x000008 /* Shun settings */
36
-#define CONFIGSET_USER 0x000010 /* The USER table */
37
-#define CONFIGSET_ADDR 0x000020 /* The CONCEALED table */
38
-#define CONFIGSET_XFER 0x000040 /* Transfer configuration */
32
+#define CONFIGSET_CSS 0x000001 /* Style sheet only */
33
+#define CONFIGSET_SKIN 0x000002 /* WWW interface appearance */
34
+#define CONFIGSET_TKT 0x000004 /* Ticket configuration */
35
+#define CONFIGSET_PROJ 0x000008 /* Project name */
36
+#define CONFIGSET_SHUN 0x000010 /* Shun settings */
37
+#define CONFIGSET_USER 0x000020 /* The USER table */
38
+#define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */
39
+#define CONFIGSET_XFER 0x000080 /* Transfer configuration */
3940
4041
#define CONFIGSET_ALL 0x0000ff /* Everything */
4142
4243
#define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
4344
#define CONFIGSET_OLDFORMAT 0x200000 /* Use the legacy format */
@@ -52,11 +53,13 @@
5253
int groupMask; /* Mask for that configuration set */
5354
const char *zHelp; /* What it does */
5455
} aGroupName[] = {
5556
{ "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
5657
{ "/project", CONFIGSET_PROJ, "Project name and description" },
57
- { "/skin", CONFIGSET_SKIN, "Web interface apparance settings" },
58
+ { "/skin", CONFIGSET_SKIN | CONFIGSET_CSS,
59
+ "Web interface apparance settings" },
60
+ { "/css", CONFIGSET_CSS, "Style sheet" },
5861
{ "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
5962
{ "/ticket", CONFIGSET_TKT, "Ticket setup", },
6063
{ "/user", CONFIGSET_USER, "Users and privilege settings" },
6164
{ "/xfer", CONFIGSET_XFER, "Transfer setup", },
6265
{ "/all", CONFIGSET_ALL, "All of the above" },
@@ -73,11 +76,11 @@
7376
*/
7477
static struct {
7578
const char *zName; /* Name of the configuration parameter */
7679
int groupMask; /* Which config groups is it part of */
7780
} aConfig[] = {
78
- { "css", CONFIGSET_SKIN },
81
+ { "css", CONFIGSET_CSS },
7982
{ "header", CONFIGSET_SKIN },
8083
{ "footer", CONFIGSET_SKIN },
8184
{ "logo-mimetype", CONFIGSET_SKIN },
8285
{ "logo-image", CONFIGSET_SKIN },
8386
{ "background-mimetype", CONFIGSET_SKIN },
8487
--- src/configure.c
+++ src/configure.c
@@ -27,17 +27,18 @@
27 #if INTERFACE
28 /*
29 ** Configuration transfers occur in groups. These are the allowed
30 ** groupings:
31 */
32 #define CONFIGSET_SKIN 0x000001 /* WWW interface appearance */
33 #define CONFIGSET_TKT 0x000002 /* Ticket configuration */
34 #define CONFIGSET_PROJ 0x000004 /* Project name */
35 #define CONFIGSET_SHUN 0x000008 /* Shun settings */
36 #define CONFIGSET_USER 0x000010 /* The USER table */
37 #define CONFIGSET_ADDR 0x000020 /* The CONCEALED table */
38 #define CONFIGSET_XFER 0x000040 /* Transfer configuration */
 
39
40 #define CONFIGSET_ALL 0x0000ff /* Everything */
41
42 #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
43 #define CONFIGSET_OLDFORMAT 0x200000 /* Use the legacy format */
@@ -52,11 +53,13 @@
52 int groupMask; /* Mask for that configuration set */
53 const char *zHelp; /* What it does */
54 } aGroupName[] = {
55 { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
56 { "/project", CONFIGSET_PROJ, "Project name and description" },
57 { "/skin", CONFIGSET_SKIN, "Web interface apparance settings" },
 
 
58 { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
59 { "/ticket", CONFIGSET_TKT, "Ticket setup", },
60 { "/user", CONFIGSET_USER, "Users and privilege settings" },
61 { "/xfer", CONFIGSET_XFER, "Transfer setup", },
62 { "/all", CONFIGSET_ALL, "All of the above" },
@@ -73,11 +76,11 @@
73 */
74 static struct {
75 const char *zName; /* Name of the configuration parameter */
76 int groupMask; /* Which config groups is it part of */
77 } aConfig[] = {
78 { "css", CONFIGSET_SKIN },
79 { "header", CONFIGSET_SKIN },
80 { "footer", CONFIGSET_SKIN },
81 { "logo-mimetype", CONFIGSET_SKIN },
82 { "logo-image", CONFIGSET_SKIN },
83 { "background-mimetype", CONFIGSET_SKIN },
84
--- src/configure.c
+++ src/configure.c
@@ -27,17 +27,18 @@
27 #if INTERFACE
28 /*
29 ** Configuration transfers occur in groups. These are the allowed
30 ** groupings:
31 */
32 #define CONFIGSET_CSS 0x000001 /* Style sheet only */
33 #define CONFIGSET_SKIN 0x000002 /* WWW interface appearance */
34 #define CONFIGSET_TKT 0x000004 /* Ticket configuration */
35 #define CONFIGSET_PROJ 0x000008 /* Project name */
36 #define CONFIGSET_SHUN 0x000010 /* Shun settings */
37 #define CONFIGSET_USER 0x000020 /* The USER table */
38 #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */
39 #define CONFIGSET_XFER 0x000080 /* Transfer configuration */
40
41 #define CONFIGSET_ALL 0x0000ff /* Everything */
42
43 #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
44 #define CONFIGSET_OLDFORMAT 0x200000 /* Use the legacy format */
@@ -52,11 +53,13 @@
53 int groupMask; /* Mask for that configuration set */
54 const char *zHelp; /* What it does */
55 } aGroupName[] = {
56 { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
57 { "/project", CONFIGSET_PROJ, "Project name and description" },
58 { "/skin", CONFIGSET_SKIN | CONFIGSET_CSS,
59 "Web interface apparance settings" },
60 { "/css", CONFIGSET_CSS, "Style sheet" },
61 { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
62 { "/ticket", CONFIGSET_TKT, "Ticket setup", },
63 { "/user", CONFIGSET_USER, "Users and privilege settings" },
64 { "/xfer", CONFIGSET_XFER, "Transfer setup", },
65 { "/all", CONFIGSET_ALL, "All of the above" },
@@ -73,11 +76,11 @@
76 */
77 static struct {
78 const char *zName; /* Name of the configuration parameter */
79 int groupMask; /* Which config groups is it part of */
80 } aConfig[] = {
81 { "css", CONFIGSET_CSS },
82 { "header", CONFIGSET_SKIN },
83 { "footer", CONFIGSET_SKIN },
84 { "logo-mimetype", CONFIGSET_SKIN },
85 { "logo-image", CONFIGSET_SKIN },
86 { "background-mimetype", CONFIGSET_SKIN },
87
+2 -39
--- src/skins.c
+++ src/skins.c
@@ -542,11 +542,10 @@
542542
@ }
543543
@
544544
@ /* All page content from the bottom of the menu or submenu down to
545545
@ ** the footer */
546546
@ div.content {
547
-@ float right;
548547
@ padding: 2ex 1ex 0ex 2ex;
549548
@ }
550549
@
551550
@ /* Some pages have section dividers */
552551
@ div.section {
@@ -660,11 +659,11 @@
660659
@ ');
661660
;
662661
663662
664663
/*
665
-** Gradients and rounded corners.
664
+** Shadow boxes and rounded corners.
666665
*/
667666
static const char zBuiltinSkin4[] =
668667
@ REPLACE INTO config(name,mtime,value)
669668
@ VALUES('css',now(),'/* General settings for the entire page */
670669
@ html {
@@ -722,26 +721,16 @@
722721
@ /* The main menu bar that appears at the top of the page beneath
723722
@ ** the header */
724723
@ div.mainmenu {
725724
@ text-align: center;
726725
@ color: white;
727
-@ -moz-border-top-right-radius: 5px;
728
-@ -moz-border-top-left-radius: 5px;
729
-@ -webkit-border-top-right-radius: 5px;
730
-@ -webkit-border-top-left-radius: 5px;
731
-@ -border-top-right-radius: 5px;
732
-@ -border-top-left-radius: 5px;
733726
@ border-top-left-radius: 5px;
734727
@ border-top-right-radius: 5px;
735728
@ vertical-align: middle;
736729
@ padding-top: 8px;
737730
@ padding-bottom: 8px;
738731
@ background-color: #446979;
739
-@ background: -webkit-gradient(linear,left bottom,left top, color-stop(0.02, rgb(51,81,94)), color-stop(0.76, rgb(85,129,149)));
740
-@ background: -moz-linear-gradient(center bottom,rgb(51,81,94) 2%, rgb(85,129,149) 76%);
741
-@ -webkit-box-shadow: 0px 3px 4px #333333;
742
-@ -moz-box-shadow: 0px 3px 4px #333333;
743732
@ box-shadow: 0px 3px 4px #333333;
744733
@ }
745734
@
746735
@ /* The submenu bar that *sometimes* appears below the main menu */
747736
@ div.submenu {
@@ -750,12 +739,10 @@
750739
@ text-align: right;
751740
@ color: #000;
752741
@ background-color: #fff;
753742
@ height: 1.5em;
754743
@ vertical-align:middle;
755
-@ -webkit-box-shadow: 0px 3px 4px #999;
756
-@ -moz-box-shadow: 0px 3px 4px #999;
757744
@ box-shadow: 0px 3px 4px #999;
758745
@ }
759746
@ div.mainmenu a, div.mainmenu a:visited {
760747
@ padding: 3px 10px 3px 10px;
761748
@ color: white;
@@ -766,43 +753,30 @@
766753
@ padding: 2px 8px;
767754
@ color: #000;
768755
@ font-family: Arial;
769756
@ text-decoration: none;
770757
@ margin:auto;
771
-@ -webkit-border-radius: 5px;
772
-@ -moz-border-radius: 5px;
773758
@ border-radius: 5px;
774
-@ background: -webkit-gradient(linear,left bottom, left top, color-stop(0, rgb(184,184,184)), color-stop(0.75, rgb(214,214,214)));
775
-@ background: -moz-linear-gradient(center bottom, rgb(184,184,184) 0%, rgb(214,214,214) 75%);
776759
@ background-color: #e0e0e0 ;
777760
@ text-shadow: 0px -1px 0px #eee;
778
-@ filter: dropshadow(color=#eeeeee, offx=0, offy=-1);
779761
@ border: 1px solid #000;
780762
@ }
781763
@
782764
@ div.mainmenu a:hover {
783765
@ color: #000;
784766
@ background-color: white;
785767
@ }
786768
@
787769
@ div.submenu a:hover, div.sectionmenu>a.button:hover {
788
-@ background: -webkit-gradient(linear,left bottom, left top, color-stop(0, rgb(214,214,214)), color-stop(0.75, rgb(184,184,184)));
789
-@ background: -moz-linear-gradient(center bottom, rgb(214,214,214) 0%, rgb(184,184,184) 75%);
790770
@ background-color: #c0c0c0 ;
791771
@ }
792772
@
793773
@ /* All page content from the bottom of the menu or submenu down to
794774
@ ** the footer */
795775
@ div.content {
796776
@ background-color: #fff;
797
-@ -webkit-box-shadow: 0px 3px 4px #999;
798
-@ -moz-box-shadow: 0px 3px 4px #999;
799777
@ box-shadow: 0px 3px 4px #999;
800
-@ -moz-border-bottom-right-radius: 5px;
801
-@ -moz-border-bottom-left-radius: 5px;
802
-@ -webkit-border-bottom-right-radius: 5px;
803
-@ -webkit-border-bottom-left-radius: 5px;
804778
@ border-bottom-right-radius: 5px;
805779
@ border-bottom-left-radius: 5px;
806780
@ padding-bottom: 1em;
807781
@ min-height:40%;
808782
@ }
@@ -811,28 +785,17 @@
811785
@ /* Some pages have section dividers */
812786
@ div.section {
813787
@ margin-bottom: 0.5em;
814788
@ margin-top: 1em;
815789
@ margin-right: auto;
816
-@
817790
@ padding: 1px 1px 1px 1px;
818791
@ font-size: 1.2em;
819792
@ font-weight: bold;
820
-@
821793
@ text-align: center;
822794
@ color: white;
823
-@
824
-@ -webkit-border-radius: 5px;
825
-@ -moz-border-radius: 5px;
826795
@ border-radius: 5px;
827
-@
828796
@ background-color: #446979;
829
-@ background: -webkit-gradient(linear,left bottom,left top, color-stop(0.02, rgb(51,81,94)), color-stop(0.76, rgb(85,129,149)));
830
-@ background: -moz-linear-gradient(center bottom,rgb(51,81,94) 2%, rgb(85,129,149) 76%);
831
-@
832
-@ -webkit-box-shadow: 0px 3px 4px #333333;
833
-@ -moz-box-shadow: 0px 3px 4px #333333;
834797
@ box-shadow: 0px 3px 4px #333333;
835798
@ }
836799
@
837800
@ /* The "Date" that occurs on the left hand side of timelines */
838801
@ div.divider {
@@ -968,11 +931,11 @@
968931
} aBuiltinSkin[] = {
969932
{ "Default", 0 /* Filled in at runtime */ },
970933
{ "Plain Gray, No Logo", zBuiltinSkin1 },
971934
{ "Khaki, No Logo", zBuiltinSkin2 },
972935
{ "Black & White, Menu on Left", zBuiltinSkin3 },
973
- { "Gradient, Rounded Corners", zBuiltinSkin4 },
936
+ { "Shadow boxes & Rounded Corners", zBuiltinSkin4 },
974937
};
975938
976939
/*
977940
** For a skin named zSkinName, compute the name of the CONFIG table
978941
** entry where that skin is stored and return it.
979942
--- src/skins.c
+++ src/skins.c
@@ -542,11 +542,10 @@
542 @ }
543 @
544 @ /* All page content from the bottom of the menu or submenu down to
545 @ ** the footer */
546 @ div.content {
547 @ float right;
548 @ padding: 2ex 1ex 0ex 2ex;
549 @ }
550 @
551 @ /* Some pages have section dividers */
552 @ div.section {
@@ -660,11 +659,11 @@
660 @ ');
661 ;
662
663
664 /*
665 ** Gradients and rounded corners.
666 */
667 static const char zBuiltinSkin4[] =
668 @ REPLACE INTO config(name,mtime,value)
669 @ VALUES('css',now(),'/* General settings for the entire page */
670 @ html {
@@ -722,26 +721,16 @@
722 @ /* The main menu bar that appears at the top of the page beneath
723 @ ** the header */
724 @ div.mainmenu {
725 @ text-align: center;
726 @ color: white;
727 @ -moz-border-top-right-radius: 5px;
728 @ -moz-border-top-left-radius: 5px;
729 @ -webkit-border-top-right-radius: 5px;
730 @ -webkit-border-top-left-radius: 5px;
731 @ -border-top-right-radius: 5px;
732 @ -border-top-left-radius: 5px;
733 @ border-top-left-radius: 5px;
734 @ border-top-right-radius: 5px;
735 @ vertical-align: middle;
736 @ padding-top: 8px;
737 @ padding-bottom: 8px;
738 @ background-color: #446979;
739 @ background: -webkit-gradient(linear,left bottom,left top, color-stop(0.02, rgb(51,81,94)), color-stop(0.76, rgb(85,129,149)));
740 @ background: -moz-linear-gradient(center bottom,rgb(51,81,94) 2%, rgb(85,129,149) 76%);
741 @ -webkit-box-shadow: 0px 3px 4px #333333;
742 @ -moz-box-shadow: 0px 3px 4px #333333;
743 @ box-shadow: 0px 3px 4px #333333;
744 @ }
745 @
746 @ /* The submenu bar that *sometimes* appears below the main menu */
747 @ div.submenu {
@@ -750,12 +739,10 @@
750 @ text-align: right;
751 @ color: #000;
752 @ background-color: #fff;
753 @ height: 1.5em;
754 @ vertical-align:middle;
755 @ -webkit-box-shadow: 0px 3px 4px #999;
756 @ -moz-box-shadow: 0px 3px 4px #999;
757 @ box-shadow: 0px 3px 4px #999;
758 @ }
759 @ div.mainmenu a, div.mainmenu a:visited {
760 @ padding: 3px 10px 3px 10px;
761 @ color: white;
@@ -766,43 +753,30 @@
766 @ padding: 2px 8px;
767 @ color: #000;
768 @ font-family: Arial;
769 @ text-decoration: none;
770 @ margin:auto;
771 @ -webkit-border-radius: 5px;
772 @ -moz-border-radius: 5px;
773 @ border-radius: 5px;
774 @ background: -webkit-gradient(linear,left bottom, left top, color-stop(0, rgb(184,184,184)), color-stop(0.75, rgb(214,214,214)));
775 @ background: -moz-linear-gradient(center bottom, rgb(184,184,184) 0%, rgb(214,214,214) 75%);
776 @ background-color: #e0e0e0 ;
777 @ text-shadow: 0px -1px 0px #eee;
778 @ filter: dropshadow(color=#eeeeee, offx=0, offy=-1);
779 @ border: 1px solid #000;
780 @ }
781 @
782 @ div.mainmenu a:hover {
783 @ color: #000;
784 @ background-color: white;
785 @ }
786 @
787 @ div.submenu a:hover, div.sectionmenu>a.button:hover {
788 @ background: -webkit-gradient(linear,left bottom, left top, color-stop(0, rgb(214,214,214)), color-stop(0.75, rgb(184,184,184)));
789 @ background: -moz-linear-gradient(center bottom, rgb(214,214,214) 0%, rgb(184,184,184) 75%);
790 @ background-color: #c0c0c0 ;
791 @ }
792 @
793 @ /* All page content from the bottom of the menu or submenu down to
794 @ ** the footer */
795 @ div.content {
796 @ background-color: #fff;
797 @ -webkit-box-shadow: 0px 3px 4px #999;
798 @ -moz-box-shadow: 0px 3px 4px #999;
799 @ box-shadow: 0px 3px 4px #999;
800 @ -moz-border-bottom-right-radius: 5px;
801 @ -moz-border-bottom-left-radius: 5px;
802 @ -webkit-border-bottom-right-radius: 5px;
803 @ -webkit-border-bottom-left-radius: 5px;
804 @ border-bottom-right-radius: 5px;
805 @ border-bottom-left-radius: 5px;
806 @ padding-bottom: 1em;
807 @ min-height:40%;
808 @ }
@@ -811,28 +785,17 @@
811 @ /* Some pages have section dividers */
812 @ div.section {
813 @ margin-bottom: 0.5em;
814 @ margin-top: 1em;
815 @ margin-right: auto;
816 @
817 @ padding: 1px 1px 1px 1px;
818 @ font-size: 1.2em;
819 @ font-weight: bold;
820 @
821 @ text-align: center;
822 @ color: white;
823 @
824 @ -webkit-border-radius: 5px;
825 @ -moz-border-radius: 5px;
826 @ border-radius: 5px;
827 @
828 @ background-color: #446979;
829 @ background: -webkit-gradient(linear,left bottom,left top, color-stop(0.02, rgb(51,81,94)), color-stop(0.76, rgb(85,129,149)));
830 @ background: -moz-linear-gradient(center bottom,rgb(51,81,94) 2%, rgb(85,129,149) 76%);
831 @
832 @ -webkit-box-shadow: 0px 3px 4px #333333;
833 @ -moz-box-shadow: 0px 3px 4px #333333;
834 @ box-shadow: 0px 3px 4px #333333;
835 @ }
836 @
837 @ /* The "Date" that occurs on the left hand side of timelines */
838 @ div.divider {
@@ -968,11 +931,11 @@
968 } aBuiltinSkin[] = {
969 { "Default", 0 /* Filled in at runtime */ },
970 { "Plain Gray, No Logo", zBuiltinSkin1 },
971 { "Khaki, No Logo", zBuiltinSkin2 },
972 { "Black & White, Menu on Left", zBuiltinSkin3 },
973 { "Gradient, Rounded Corners", zBuiltinSkin4 },
974 };
975
976 /*
977 ** For a skin named zSkinName, compute the name of the CONFIG table
978 ** entry where that skin is stored and return it.
979
--- src/skins.c
+++ src/skins.c
@@ -542,11 +542,10 @@
542 @ }
543 @
544 @ /* All page content from the bottom of the menu or submenu down to
545 @ ** the footer */
546 @ div.content {
 
547 @ padding: 2ex 1ex 0ex 2ex;
548 @ }
549 @
550 @ /* Some pages have section dividers */
551 @ div.section {
@@ -660,11 +659,11 @@
659 @ ');
660 ;
661
662
663 /*
664 ** Shadow boxes and rounded corners.
665 */
666 static const char zBuiltinSkin4[] =
667 @ REPLACE INTO config(name,mtime,value)
668 @ VALUES('css',now(),'/* General settings for the entire page */
669 @ html {
@@ -722,26 +721,16 @@
721 @ /* The main menu bar that appears at the top of the page beneath
722 @ ** the header */
723 @ div.mainmenu {
724 @ text-align: center;
725 @ color: white;
 
 
 
 
 
 
726 @ border-top-left-radius: 5px;
727 @ border-top-right-radius: 5px;
728 @ vertical-align: middle;
729 @ padding-top: 8px;
730 @ padding-bottom: 8px;
731 @ background-color: #446979;
 
 
 
 
732 @ box-shadow: 0px 3px 4px #333333;
733 @ }
734 @
735 @ /* The submenu bar that *sometimes* appears below the main menu */
736 @ div.submenu {
@@ -750,12 +739,10 @@
739 @ text-align: right;
740 @ color: #000;
741 @ background-color: #fff;
742 @ height: 1.5em;
743 @ vertical-align:middle;
 
 
744 @ box-shadow: 0px 3px 4px #999;
745 @ }
746 @ div.mainmenu a, div.mainmenu a:visited {
747 @ padding: 3px 10px 3px 10px;
748 @ color: white;
@@ -766,43 +753,30 @@
753 @ padding: 2px 8px;
754 @ color: #000;
755 @ font-family: Arial;
756 @ text-decoration: none;
757 @ margin:auto;
 
 
758 @ border-radius: 5px;
 
 
759 @ background-color: #e0e0e0 ;
760 @ text-shadow: 0px -1px 0px #eee;
 
761 @ border: 1px solid #000;
762 @ }
763 @
764 @ div.mainmenu a:hover {
765 @ color: #000;
766 @ background-color: white;
767 @ }
768 @
769 @ div.submenu a:hover, div.sectionmenu>a.button:hover {
 
 
770 @ background-color: #c0c0c0 ;
771 @ }
772 @
773 @ /* All page content from the bottom of the menu or submenu down to
774 @ ** the footer */
775 @ div.content {
776 @ background-color: #fff;
 
 
777 @ box-shadow: 0px 3px 4px #999;
 
 
 
 
778 @ border-bottom-right-radius: 5px;
779 @ border-bottom-left-radius: 5px;
780 @ padding-bottom: 1em;
781 @ min-height:40%;
782 @ }
@@ -811,28 +785,17 @@
785 @ /* Some pages have section dividers */
786 @ div.section {
787 @ margin-bottom: 0.5em;
788 @ margin-top: 1em;
789 @ margin-right: auto;
 
790 @ padding: 1px 1px 1px 1px;
791 @ font-size: 1.2em;
792 @ font-weight: bold;
 
793 @ text-align: center;
794 @ color: white;
 
 
 
795 @ border-radius: 5px;
 
796 @ background-color: #446979;
 
 
 
 
 
797 @ box-shadow: 0px 3px 4px #333333;
798 @ }
799 @
800 @ /* The "Date" that occurs on the left hand side of timelines */
801 @ div.divider {
@@ -968,11 +931,11 @@
931 } aBuiltinSkin[] = {
932 { "Default", 0 /* Filled in at runtime */ },
933 { "Plain Gray, No Logo", zBuiltinSkin1 },
934 { "Khaki, No Logo", zBuiltinSkin2 },
935 { "Black & White, Menu on Left", zBuiltinSkin3 },
936 { "Shadow boxes & Rounded Corners", zBuiltinSkin4 },
937 };
938
939 /*
940 ** For a skin named zSkinName, compute the name of the CONFIG table
941 ** entry where that skin is stored and return it.
942
+49
--- src/stat.c
+++ src/stat.c
@@ -53,10 +53,13 @@
5353
5454
login_check_credentials();
5555
if( !g.perm.Read ){ login_needed(); return; }
5656
brief = P("brief")!=0;
5757
style_header("Repository Statistics");
58
+ if( g.perm.Admin ){
59
+ style_submenu_element("URLs", "URLs and Checkouts", "urllist");
60
+ }
5861
@ <table class="label-value">
5962
@ <tr><th>Repository&nbsp;Size:</th><td>
6063
fsize = file_size(g.zRepositoryName);
6164
bigSizeName(sizeof(zBuf), zBuf, fsize);
6265
@ %s(zBuf)
@@ -131,8 +134,54 @@
131134
@ %d(db_int(0, "PRAGMA %s.freelist_count", zDb)) free pages,
132135
@ %s(db_text(0, "PRAGMA %s.encoding", zDb)),
133136
@ %s(db_text(0, "PRAGMA %s.journal_mode", zDb)) mode
134137
@ </td></tr>
135138
139
+ @ </table>
140
+ style_footer();
141
+}
142
+
143
+/*
144
+** WEBPAGE: urllist
145
+**
146
+** Show ways in which this repository has been accessed
147
+*/
148
+void urllist_page(void){
149
+ Stmt q;
150
+ int cnt;
151
+ login_check_credentials();
152
+ if( !g.perm.Admin ){ login_needed(); return; }
153
+
154
+ style_header("URLs and Checkouts");
155
+ style_submenu_element("Stat", "Repository Stats", "stat");
156
+ @ <div class="section">URLs</div>
157
+ @ <table border="0" width='100%%'>
158
+ db_prepare(&q, "SELECT substr(name,9), datetime(mtime,'unixepoch')"
159
+ " FROM config WHERE name GLOB 'baseurl:*' ORDER BY 2");
160
+ cnt = 0;
161
+ while( db_step(&q)==SQLITE_ROW ){
162
+ @ <tr><td width='100%%'>%h(db_column_text(&q,0))</td>
163
+ @ <td><nobr>%h(db_column_text(&q,1))</nobr></td></tr>
164
+ cnt++;
165
+ }
166
+ db_finalize(&q);
167
+ if( cnt==0 ){
168
+ @ <tr><td>(none)</td>
169
+ }
170
+ @ </table>
171
+ @ <div class="section">Checkouts</div>
172
+ @ <table border="0" width='100%%'>
173
+ db_prepare(&q, "SELECT substr(name,7), datetime(mtime,'unixepoch')"
174
+ " FROM config WHERE name GLOB 'ckout:*' ORDER BY 2");
175
+ cnt = 0;
176
+ while( db_step(&q)==SQLITE_ROW ){
177
+ @ <tr><td width='100%%'>%h(db_column_text(&q,0))</td>
178
+ @ <td><nobr>%h(db_column_text(&q,1))</nobr></td></tr>
179
+ cnt++;
180
+ }
181
+ db_finalize(&q);
182
+ if( cnt==0 ){
183
+ @ <tr><td>(none)</td>
184
+ }
136185
@ </table>
137186
style_footer();
138187
}
139188
--- src/stat.c
+++ src/stat.c
@@ -53,10 +53,13 @@
53
54 login_check_credentials();
55 if( !g.perm.Read ){ login_needed(); return; }
56 brief = P("brief")!=0;
57 style_header("Repository Statistics");
 
 
 
58 @ <table class="label-value">
59 @ <tr><th>Repository&nbsp;Size:</th><td>
60 fsize = file_size(g.zRepositoryName);
61 bigSizeName(sizeof(zBuf), zBuf, fsize);
62 @ %s(zBuf)
@@ -131,8 +134,54 @@
131 @ %d(db_int(0, "PRAGMA %s.freelist_count", zDb)) free pages,
132 @ %s(db_text(0, "PRAGMA %s.encoding", zDb)),
133 @ %s(db_text(0, "PRAGMA %s.journal_mode", zDb)) mode
134 @ </td></tr>
135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136 @ </table>
137 style_footer();
138 }
139
--- src/stat.c
+++ src/stat.c
@@ -53,10 +53,13 @@
53
54 login_check_credentials();
55 if( !g.perm.Read ){ login_needed(); return; }
56 brief = P("brief")!=0;
57 style_header("Repository Statistics");
58 if( g.perm.Admin ){
59 style_submenu_element("URLs", "URLs and Checkouts", "urllist");
60 }
61 @ <table class="label-value">
62 @ <tr><th>Repository&nbsp;Size:</th><td>
63 fsize = file_size(g.zRepositoryName);
64 bigSizeName(sizeof(zBuf), zBuf, fsize);
65 @ %s(zBuf)
@@ -131,8 +134,54 @@
134 @ %d(db_int(0, "PRAGMA %s.freelist_count", zDb)) free pages,
135 @ %s(db_text(0, "PRAGMA %s.encoding", zDb)),
136 @ %s(db_text(0, "PRAGMA %s.journal_mode", zDb)) mode
137 @ </td></tr>
138
139 @ </table>
140 style_footer();
141 }
142
143 /*
144 ** WEBPAGE: urllist
145 **
146 ** Show ways in which this repository has been accessed
147 */
148 void urllist_page(void){
149 Stmt q;
150 int cnt;
151 login_check_credentials();
152 if( !g.perm.Admin ){ login_needed(); return; }
153
154 style_header("URLs and Checkouts");
155 style_submenu_element("Stat", "Repository Stats", "stat");
156 @ <div class="section">URLs</div>
157 @ <table border="0" width='100%%'>
158 db_prepare(&q, "SELECT substr(name,9), datetime(mtime,'unixepoch')"
159 " FROM config WHERE name GLOB 'baseurl:*' ORDER BY 2");
160 cnt = 0;
161 while( db_step(&q)==SQLITE_ROW ){
162 @ <tr><td width='100%%'>%h(db_column_text(&q,0))</td>
163 @ <td><nobr>%h(db_column_text(&q,1))</nobr></td></tr>
164 cnt++;
165 }
166 db_finalize(&q);
167 if( cnt==0 ){
168 @ <tr><td>(none)</td>
169 }
170 @ </table>
171 @ <div class="section">Checkouts</div>
172 @ <table border="0" width='100%%'>
173 db_prepare(&q, "SELECT substr(name,7), datetime(mtime,'unixepoch')"
174 " FROM config WHERE name GLOB 'ckout:*' ORDER BY 2");
175 cnt = 0;
176 while( db_step(&q)==SQLITE_ROW ){
177 @ <tr><td width='100%%'>%h(db_column_text(&q,0))</td>
178 @ <td><nobr>%h(db_column_text(&q,1))</nobr></td></tr>
179 cnt++;
180 }
181 db_finalize(&q);
182 if( cnt==0 ){
183 @ <tr><td>(none)</td>
184 }
185 @ </table>
186 style_footer();
187 }
188
+10 -7
--- src/style.c
+++ src/style.c
@@ -445,10 +445,12 @@
445445
@ font-size: 0.9em;
446446
@ font-weight: bold;
447447
@ text-align: center;
448448
@ letter-spacing: 1px;
449449
@ background-color: #558195;
450
+@ border-top-left-radius: 8px;
451
+@ border-top-right-radius: 8px;
450452
@ color: white;
451453
@ }
452454
@
453455
@ /* The submenu bar that *sometimes* appears below the main menu */
454456
@ div.submenu, div.sectionmenu {
@@ -470,11 +472,13 @@
470472
@ }
471473
@
472474
@ /* All page content from the bottom of the menu or submenu down to
473475
@ ** the footer */
474476
@ div.content {
475
-@ padding: 0ex 1ex 0ex 2ex;
477
+@ padding: 0ex 1ex 1ex 1ex;
478
+@ border: solid #aaa;
479
+@ border-width: 1px;
476480
@ }
477481
@
478482
@ /* Some pages have section dividers */
479483
@ div.section {
480484
@ margin-bottom: 0px;
@@ -501,14 +505,15 @@
501505
@
502506
@ /* The footer at the very bottom of the page */
503507
@ div.footer {
504508
@ clear: both;
505509
@ font-size: 0.8em;
506
-@ margin-top: 12px;
507510
@ padding: 5px 10px 5px 10px;
508511
@ text-align: right;
509512
@ background-color: #558195;
513
+@ border-bottom-left-radius: 8px;
514
+@ border-bottom-right-radius: 8px;
510515
@ color: white;
511516
@ }
512517
@
513518
@ /* Hyperlink colors in the footer */
514519
@ div.footer a { color: white; }
@@ -548,11 +553,11 @@
548553
"The nomenclature sidebox for branches,..",
549554
@ float: right;
550555
@ background-color: white;
551556
@ border-width: medium;
552557
@ border-style: double;
553
- @ margin: 10;
558
+ @ margin: 10px;
554559
},
555560
{ "div.sideboxTitle",
556561
"The nomenclature title in sideboxes for branches,..",
557562
@ display: inline;
558563
@ font-weight: bold;
@@ -571,18 +576,16 @@
571576
@ font-style: italic;
572577
@ font-size: small;
573578
},
574579
{ "table.timelineTable",
575580
"the format for the timeline data table",
576
- @ cellspacing: 0;
577581
@ border: 0;
578
- @ cellpadding: 0
579582
},
580583
{ "td.timelineTableCell",
581584
"the format for the timeline data cells",
582
- @ valign: top;
583
- @ align: left;
585
+ @ vertical-align: top;
586
+ @ text-align: left;
584587
},
585588
{ "span.timelineLeaf",
586589
"the format for the timeline leaf marks",
587590
@ font-weight: bold;
588591
},
589592
--- src/style.c
+++ src/style.c
@@ -445,10 +445,12 @@
445 @ font-size: 0.9em;
446 @ font-weight: bold;
447 @ text-align: center;
448 @ letter-spacing: 1px;
449 @ background-color: #558195;
 
 
450 @ color: white;
451 @ }
452 @
453 @ /* The submenu bar that *sometimes* appears below the main menu */
454 @ div.submenu, div.sectionmenu {
@@ -470,11 +472,13 @@
470 @ }
471 @
472 @ /* All page content from the bottom of the menu or submenu down to
473 @ ** the footer */
474 @ div.content {
475 @ padding: 0ex 1ex 0ex 2ex;
 
 
476 @ }
477 @
478 @ /* Some pages have section dividers */
479 @ div.section {
480 @ margin-bottom: 0px;
@@ -501,14 +505,15 @@
501 @
502 @ /* The footer at the very bottom of the page */
503 @ div.footer {
504 @ clear: both;
505 @ font-size: 0.8em;
506 @ margin-top: 12px;
507 @ padding: 5px 10px 5px 10px;
508 @ text-align: right;
509 @ background-color: #558195;
 
 
510 @ color: white;
511 @ }
512 @
513 @ /* Hyperlink colors in the footer */
514 @ div.footer a { color: white; }
@@ -548,11 +553,11 @@
548 "The nomenclature sidebox for branches,..",
549 @ float: right;
550 @ background-color: white;
551 @ border-width: medium;
552 @ border-style: double;
553 @ margin: 10;
554 },
555 { "div.sideboxTitle",
556 "The nomenclature title in sideboxes for branches,..",
557 @ display: inline;
558 @ font-weight: bold;
@@ -571,18 +576,16 @@
571 @ font-style: italic;
572 @ font-size: small;
573 },
574 { "table.timelineTable",
575 "the format for the timeline data table",
576 @ cellspacing: 0;
577 @ border: 0;
578 @ cellpadding: 0
579 },
580 { "td.timelineTableCell",
581 "the format for the timeline data cells",
582 @ valign: top;
583 @ align: left;
584 },
585 { "span.timelineLeaf",
586 "the format for the timeline leaf marks",
587 @ font-weight: bold;
588 },
589
--- src/style.c
+++ src/style.c
@@ -445,10 +445,12 @@
445 @ font-size: 0.9em;
446 @ font-weight: bold;
447 @ text-align: center;
448 @ letter-spacing: 1px;
449 @ background-color: #558195;
450 @ border-top-left-radius: 8px;
451 @ border-top-right-radius: 8px;
452 @ color: white;
453 @ }
454 @
455 @ /* The submenu bar that *sometimes* appears below the main menu */
456 @ div.submenu, div.sectionmenu {
@@ -470,11 +472,13 @@
472 @ }
473 @
474 @ /* All page content from the bottom of the menu or submenu down to
475 @ ** the footer */
476 @ div.content {
477 @ padding: 0ex 1ex 1ex 1ex;
478 @ border: solid #aaa;
479 @ border-width: 1px;
480 @ }
481 @
482 @ /* Some pages have section dividers */
483 @ div.section {
484 @ margin-bottom: 0px;
@@ -501,14 +505,15 @@
505 @
506 @ /* The footer at the very bottom of the page */
507 @ div.footer {
508 @ clear: both;
509 @ font-size: 0.8em;
 
510 @ padding: 5px 10px 5px 10px;
511 @ text-align: right;
512 @ background-color: #558195;
513 @ border-bottom-left-radius: 8px;
514 @ border-bottom-right-radius: 8px;
515 @ color: white;
516 @ }
517 @
518 @ /* Hyperlink colors in the footer */
519 @ div.footer a { color: white; }
@@ -548,11 +553,11 @@
553 "The nomenclature sidebox for branches,..",
554 @ float: right;
555 @ background-color: white;
556 @ border-width: medium;
557 @ border-style: double;
558 @ margin: 10px;
559 },
560 { "div.sideboxTitle",
561 "The nomenclature title in sideboxes for branches,..",
562 @ display: inline;
563 @ font-weight: bold;
@@ -571,18 +576,16 @@
576 @ font-style: italic;
577 @ font-size: small;
578 },
579 { "table.timelineTable",
580 "the format for the timeline data table",
 
581 @ border: 0;
 
582 },
583 { "td.timelineTableCell",
584 "the format for the timeline data cells",
585 @ vertical-align: top;
586 @ text-align: left;
587 },
588 { "span.timelineLeaf",
589 "the format for the timeline leaf marks",
590 @ font-weight: bold;
591 },
592
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1049,11 +1049,12 @@
10491049
*/
10501050
static void openHyperlink(
10511051
Renderer *p, /* Rendering context */
10521052
const char *zTarget, /* Hyperlink traget; text within [...] */
10531053
char *zClose, /* Write hyperlink closing text here */
1054
- int nClose /* Bytes available in zClose[] */
1054
+ int nClose, /* Bytes available in zClose[] */
1055
+ const char *zOrig /* Complete document text */
10551056
){
10561057
const char *zTerm = "</a>";
10571058
assert( nClose>=20 );
10581059
10591060
if( strncmp(zTarget, "http:", 5)==0
@@ -1111,10 +1112,14 @@
11111112
&& wiki_name_is_wellformed((const unsigned char*)zTarget) ){
11121113
zTarget += 5;
11131114
blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", zTarget);
11141115
}else if( wiki_name_is_wellformed((const unsigned char *)zTarget) ){
11151116
blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", zTarget);
1117
+ }else if( zTarget>=&zOrig[2] && !fossil_isspace(zTarget[-2]) ){
1118
+ /* Probably an array subscript in code */
1119
+ blob_appendf(p->pOut, "[");
1120
+ zTerm = "]";
11161121
}else{
11171122
blob_appendf(p->pOut, "<span class=\"brokenlink\">[%h]</span>", zTarget);
11181123
zTerm = "";
11191124
}
11201125
assert( strlen(zTerm)<nClose );
@@ -1154,10 +1159,11 @@
11541159
int tokenType;
11551160
ParsedMarkup markup;
11561161
int n;
11571162
int inlineOnly = (p->state & INLINE_MARKUP_ONLY)!=0;
11581163
int wikiUseHtml = (p->state & WIKI_USE_HTML)!=0;
1164
+ char *zOrig = z;
11591165
11601166
/* Make sure the attribute constants and names still align
11611167
** following changes in the attribute list. */
11621168
assert( fossil_strcmp(aAttribute[ATTR_WIDTH].zName, "width")==0 );
11631169
@@ -1289,11 +1295,11 @@
12891295
if( zDisplay==0 ){
12901296
zDisplay = zTarget;
12911297
}else{
12921298
while( fossil_isspace(*zDisplay) ) zDisplay++;
12931299
}
1294
- openHyperlink(p, zTarget, zClose, sizeof(zClose));
1300
+ openHyperlink(p, zTarget, zClose, sizeof(zClose), zOrig);
12951301
savedState = p->state;
12961302
p->state &= ~ALLOW_WIKI;
12971303
p->state |= FONT_MARKUP_ONLY;
12981304
wiki_render(p, zDisplay);
12991305
p->state = savedState;
13001306
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1049,11 +1049,12 @@
1049 */
1050 static void openHyperlink(
1051 Renderer *p, /* Rendering context */
1052 const char *zTarget, /* Hyperlink traget; text within [...] */
1053 char *zClose, /* Write hyperlink closing text here */
1054 int nClose /* Bytes available in zClose[] */
 
1055 ){
1056 const char *zTerm = "</a>";
1057 assert( nClose>=20 );
1058
1059 if( strncmp(zTarget, "http:", 5)==0
@@ -1111,10 +1112,14 @@
1111 && wiki_name_is_wellformed((const unsigned char*)zTarget) ){
1112 zTarget += 5;
1113 blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", zTarget);
1114 }else if( wiki_name_is_wellformed((const unsigned char *)zTarget) ){
1115 blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", zTarget);
 
 
 
 
1116 }else{
1117 blob_appendf(p->pOut, "<span class=\"brokenlink\">[%h]</span>", zTarget);
1118 zTerm = "";
1119 }
1120 assert( strlen(zTerm)<nClose );
@@ -1154,10 +1159,11 @@
1154 int tokenType;
1155 ParsedMarkup markup;
1156 int n;
1157 int inlineOnly = (p->state & INLINE_MARKUP_ONLY)!=0;
1158 int wikiUseHtml = (p->state & WIKI_USE_HTML)!=0;
 
1159
1160 /* Make sure the attribute constants and names still align
1161 ** following changes in the attribute list. */
1162 assert( fossil_strcmp(aAttribute[ATTR_WIDTH].zName, "width")==0 );
1163
@@ -1289,11 +1295,11 @@
1289 if( zDisplay==0 ){
1290 zDisplay = zTarget;
1291 }else{
1292 while( fossil_isspace(*zDisplay) ) zDisplay++;
1293 }
1294 openHyperlink(p, zTarget, zClose, sizeof(zClose));
1295 savedState = p->state;
1296 p->state &= ~ALLOW_WIKI;
1297 p->state |= FONT_MARKUP_ONLY;
1298 wiki_render(p, zDisplay);
1299 p->state = savedState;
1300
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1049,11 +1049,12 @@
1049 */
1050 static void openHyperlink(
1051 Renderer *p, /* Rendering context */
1052 const char *zTarget, /* Hyperlink traget; text within [...] */
1053 char *zClose, /* Write hyperlink closing text here */
1054 int nClose, /* Bytes available in zClose[] */
1055 const char *zOrig /* Complete document text */
1056 ){
1057 const char *zTerm = "</a>";
1058 assert( nClose>=20 );
1059
1060 if( strncmp(zTarget, "http:", 5)==0
@@ -1111,10 +1112,14 @@
1112 && wiki_name_is_wellformed((const unsigned char*)zTarget) ){
1113 zTarget += 5;
1114 blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", zTarget);
1115 }else if( wiki_name_is_wellformed((const unsigned char *)zTarget) ){
1116 blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", zTarget);
1117 }else if( zTarget>=&zOrig[2] && !fossil_isspace(zTarget[-2]) ){
1118 /* Probably an array subscript in code */
1119 blob_appendf(p->pOut, "[");
1120 zTerm = "]";
1121 }else{
1122 blob_appendf(p->pOut, "<span class=\"brokenlink\">[%h]</span>", zTarget);
1123 zTerm = "";
1124 }
1125 assert( strlen(zTerm)<nClose );
@@ -1154,10 +1159,11 @@
1159 int tokenType;
1160 ParsedMarkup markup;
1161 int n;
1162 int inlineOnly = (p->state & INLINE_MARKUP_ONLY)!=0;
1163 int wikiUseHtml = (p->state & WIKI_USE_HTML)!=0;
1164 char *zOrig = z;
1165
1166 /* Make sure the attribute constants and names still align
1167 ** following changes in the attribute list. */
1168 assert( fossil_strcmp(aAttribute[ATTR_WIDTH].zName, "width")==0 );
1169
@@ -1289,11 +1295,11 @@
1295 if( zDisplay==0 ){
1296 zDisplay = zTarget;
1297 }else{
1298 while( fossil_isspace(*zDisplay) ) zDisplay++;
1299 }
1300 openHyperlink(p, zTarget, zClose, sizeof(zClose), zOrig);
1301 savedState = p->state;
1302 p->state &= ~ALLOW_WIKI;
1303 p->state |= FONT_MARKUP_ONLY;
1304 wiki_render(p, zDisplay);
1305 p->state = savedState;
1306
--- www/index.wiki
+++ www/index.wiki
@@ -23,10 +23,11 @@
2323
<li> [/timeline | Recent changes]
2424
<li> [./faq.wiki | FAQ]
2525
<li> [./contribute.wiki | Contributing]
2626
<li> [./changes.wiki | Change Log]
2727
<li> [./permutedindex.wiki | Doc Index]
28
+<li> [http://www.fossil-scm.org/schimpf-book/home | Jim Schimpf's book]
2829
<li> Mailing list
2930
<ul>
3031
<li> [http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users | sign-up]
3132
<li> [http://www.mail-archive.com/[email protected] | archives]
3233
<ul>
3334
--- www/index.wiki
+++ www/index.wiki
@@ -23,10 +23,11 @@
23 <li> [/timeline | Recent changes]
24 <li> [./faq.wiki | FAQ]
25 <li> [./contribute.wiki | Contributing]
26 <li> [./changes.wiki | Change Log]
27 <li> [./permutedindex.wiki | Doc Index]
 
28 <li> Mailing list
29 <ul>
30 <li> [http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users | sign-up]
31 <li> [http://www.mail-archive.com/[email protected] | archives]
32 <ul>
33
--- www/index.wiki
+++ www/index.wiki
@@ -23,10 +23,11 @@
23 <li> [/timeline | Recent changes]
24 <li> [./faq.wiki | FAQ]
25 <li> [./contribute.wiki | Contributing]
26 <li> [./changes.wiki | Change Log]
27 <li> [./permutedindex.wiki | Doc Index]
28 <li> [http://www.fossil-scm.org/schimpf-book/home | Jim Schimpf's book]
29 <li> Mailing list
30 <ul>
31 <li> [http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users | sign-up]
32 <li> [http://www.mail-archive.com/[email protected] | archives]
33 <ul>
34

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button