Fossil SCM
Adding a new skin option with gradients, shadows, and rounded corners.
Commit
babe3fb52a79603f781f077e0569584381132f8a
Parent
7fcbbb1da0dd28b…
1 file changed
+295
-1
+295
-1
| --- src/skins.c | ||
| +++ src/skins.c | ||
| @@ -597,11 +597,11 @@ | ||
| 597 | 597 | @ media="screen"> |
| 598 | 598 | @ </head> |
| 599 | 599 | @ <body> |
| 600 | 600 | @ <div class="header"> |
| 601 | 601 | @ <div class="logo"> |
| 602 | -@ <!-- <img src="$home/logo" alt="logo"> --> | |
| 602 | +@ <img src="$home/logo" alt="logo"> | |
| 603 | 603 | @ <br /><nobr>$<project_name></nobr> |
| 604 | 604 | @ </div> |
| 605 | 605 | @ <div class="title">$<title></div> |
| 606 | 606 | @ <div class="status"><nobr><th1> |
| 607 | 607 | @ if {[info exists login]} { |
| @@ -647,10 +647,303 @@ | ||
| 647 | 647 | @ Fossil version $manifest_version $manifest_date |
| 648 | 648 | @ </div> |
| 649 | 649 | @ </body></html> |
| 650 | 650 | @ '); |
| 651 | 651 | ; |
| 652 | + | |
| 653 | + | |
| 654 | +/* | |
| 655 | +** Gradients and rounded corners. | |
| 656 | +*/ | |
| 657 | +static const char zBuiltinSkin4[] = | |
| 658 | +@ REPLACE INTO config VALUES('css','/* General settings for the entire page */ | |
| 659 | +@ html { | |
| 660 | +@ min-height: 100%; | |
| 661 | +@ } | |
| 662 | +@ body { | |
| 663 | +@ margin: 0ex 1ex; | |
| 664 | +@ padding: 0px; | |
| 665 | +@ background-color: white; | |
| 666 | +@ color: #333; | |
| 667 | +@ font-family: Verdana, sans-serif; | |
| 668 | +@ font-size: 0.8em; | |
| 669 | +@ } | |
| 670 | +@ | |
| 671 | +@ /* The project logo in the upper left-hand corner of each page */ | |
| 672 | +@ div.logo { | |
| 673 | +@ display: table-cell; | |
| 674 | +@ text-align: right; | |
| 675 | +@ vertical-align: bottom; | |
| 676 | +@ font-weight: normal; | |
| 677 | +@ } | |
| 678 | +@ | |
| 679 | +@ /* Widths */ | |
| 680 | +@ div.header, div.mainmenu, div.submenu, div.content, div.footer { | |
| 681 | +@ max-width: 900px; | |
| 682 | +@ margin: auto; | |
| 683 | +@ padding: 3px 20px 3px 20px; | |
| 684 | +@ clear: both; | |
| 685 | +@ } | |
| 686 | +@ | |
| 687 | +@ /* The page title at the top of each page */ | |
| 688 | +@ div.title { | |
| 689 | +@ display: table-cell; | |
| 690 | +@ padding-left: 1em; | |
| 691 | +@ font-size: 2em; | |
| 692 | +@ font-weight: bold; | |
| 693 | +@ margin: 10px 0 10px -20px; | |
| 694 | +@ vertical-align: bottom; | |
| 695 | +@ text-align: left; | |
| 696 | +@ width: 80%; | |
| 697 | +@ font-family: Georgia, serif; | |
| 698 | +@ font-weight:normal; | |
| 699 | +@ } | |
| 700 | +@ | |
| 701 | +@ /* The login status message in the top right-hand corner */ | |
| 702 | +@ div.status { | |
| 703 | +@ display: table-cell; | |
| 704 | +@ text-align: right; | |
| 705 | +@ vertical-align: bottom; | |
| 706 | +@ color: #333; | |
| 707 | +@ margin-right: -20px; | |
| 708 | +@ } | |
| 709 | +@ | |
| 710 | +@ /* The main menu bar that appears at the top of the page beneath | |
| 711 | +@ ** the header */ | |
| 712 | +@ div.mainmenu { | |
| 713 | +@ text-align: center; | |
| 714 | +@ color: white; | |
| 715 | +@ -moz-border-top-right-radius: 5px; | |
| 716 | +@ -moz-border-top-left-radius: 5px; | |
| 717 | +@ -webkit-border-top-right-radius: 5px; | |
| 718 | +@ -webkit-border-top-left-radius: 5px; | |
| 719 | +@ -border-top-right-radius: 5px; | |
| 720 | +@ -border-top-left-radius: 5px; | |
| 721 | +@ border-top-left-radius: 5px; | |
| 722 | +@ border-top-right-radius: 5px; | |
| 723 | +@ min-height: 2em; | |
| 724 | +@ background-color: #446979; | |
| 725 | +@ background: -webkit-gradient(linear,left bottom,left top, color-stop(0.02, rgb(51,81,94)), color-stop(0.76, rgb(85,129,149))); | |
| 726 | +@ background: -moz-linear-gradient(center bottom,rgb(51,81,94) 2%, rgb(85,129,149) 76%); | |
| 727 | +@ -webkit-box-shadow: 0px 3px 4px #333333; | |
| 728 | +@ -moz-box-shadow: 0px 3px 4px #333333; | |
| 729 | +@ box-shadow: 0px 3px 4px #333333; | |
| 730 | +@ } | |
| 731 | +@ | |
| 732 | +@ /* The submenu bar that *sometimes* appears below the main menu */ | |
| 733 | +@ div.submenu { | |
| 734 | +@ padding-top:10px; | |
| 735 | +@ padding-bottom:0; | |
| 736 | +@ text-align: right; | |
| 737 | +@ color: #000; | |
| 738 | +@ background-color: #fff; | |
| 739 | +@ height: 1.5em; | |
| 740 | +@ vertical-align:middle; | |
| 741 | +@ -webkit-box-shadow: 0px 3px 4px #999; | |
| 742 | +@ -moz-box-shadow: 0px 3px 4px #999; | |
| 743 | +@ box-shadow: 0px 3px 4px #999; | |
| 744 | +@ } | |
| 745 | +@ div.mainmenu a, div.mainmenu a:visited { | |
| 746 | +@ padding: 3px 10px 3px 10px; | |
| 747 | +@ color: white; | |
| 748 | +@ text-decoration: none; | |
| 749 | +@ } | |
| 750 | +@ div.submenu a, div.submenu a:visited { | |
| 751 | +@ padding: 2px 8px; | |
| 752 | +@ color: #000; | |
| 753 | +@ font-family: Arial; | |
| 754 | +@ text-decoration: none; | |
| 755 | +@ margin:auto; | |
| 756 | +@ -webkit-border-radius: 5px; | |
| 757 | +@ -moz-border-radius: 5px; | |
| 758 | +@ border-radius: 5px; | |
| 759 | +@ background: -webkit-gradient(linear,left bottom, left top, color-stop(0, rgb(184,184,184)), color-stop(0.75, rgb(214,214,214))); | |
| 760 | +@ background: -moz-linear-gradient(center bottom, rgb(184,184,184) 0%, rgb(214,214,214) 75%); | |
| 761 | +@ background-color: #e0e0e0 ; | |
| 762 | +@ text-shadow: 0px -1px 0px #eee; | |
| 763 | +@ filter: dropshadow(color=#eeeeee, offx=0, offy=-1); | |
| 764 | +@ border: 1px solid #000; | |
| 765 | +@ } | |
| 766 | +@ | |
| 767 | +@ div.mainmenu a:hover { | |
| 768 | +@ color: #000; | |
| 769 | +@ background-color: white; | |
| 770 | +@ } | |
| 771 | +@ | |
| 772 | +@ div.submenu a:hover { | |
| 773 | +@ background: -webkit-gradient(linear,left bottom, left top, color-stop(0, rgb(214,214,214)), color-stop(0.75, rgb(184,184,184))); | |
| 774 | +@ background: -moz-linear-gradient(center bottom, rgb(214,214,214) 0%, rgb(184,184,184) 75%); | |
| 775 | +@ background-color: #c0c0c0 ; | |
| 776 | +@ } | |
| 777 | +@ | |
| 778 | +@ /* All page content from the bottom of the menu or submenu down to | |
| 779 | +@ ** the footer */ | |
| 780 | +@ div.content { | |
| 781 | +@ background-color: #fff; | |
| 782 | +@ -webkit-box-shadow: 0px 3px 4px #999; | |
| 783 | +@ -moz-box-shadow: 0px 3px 4px #999; | |
| 784 | +@ box-shadow: 0px 3px 4px #999; | |
| 785 | +@ -moz-border-bottom-right-radius: 5px; | |
| 786 | +@ -moz-border-bottom-left-radius: 5px; | |
| 787 | +@ -webkit-border-bottom-right-radius: 5px; | |
| 788 | +@ -webkit-border-bottom-left-radius: 5px; | |
| 789 | +@ border-bottom-right-radius: 5px; | |
| 790 | +@ border-bottom-left-radius: 5px; | |
| 791 | +@ padding-bottom: 1em; | |
| 792 | +@ min-height:40%; | |
| 793 | +@ } | |
| 794 | +@ | |
| 795 | +@ | |
| 796 | +@ /* Some pages have section dividers */ | |
| 797 | +@ div.section { | |
| 798 | +@ margin-bottom: 0.5em; | |
| 799 | +@ margin-top: 1em; | |
| 800 | +@ margin-right: auto; | |
| 801 | +@ | |
| 802 | +@ padding: 1px 1px 1px 1px; | |
| 803 | +@ font-size: 1.2em; | |
| 804 | +@ font-weight: bold; | |
| 805 | +@ | |
| 806 | +@ text-align: center; | |
| 807 | +@ color: white; | |
| 808 | +@ | |
| 809 | +@ -webkit-border-radius: 5px; | |
| 810 | +@ -moz-border-radius: 5px; | |
| 811 | +@ border-radius: 5px; | |
| 812 | +@ | |
| 813 | +@ background-color: #446979; | |
| 814 | +@ background: -webkit-gradient(linear,left bottom,left top, color-stop(0.02, rgb(51,81,94)), color-stop(0.76, rgb(85,129,149))); | |
| 815 | +@ background: -moz-linear-gradient(center bottom,rgb(51,81,94) 2%, rgb(85,129,149) 76%); | |
| 816 | +@ | |
| 817 | +@ -webkit-box-shadow: 0px 3px 4px #333333; | |
| 818 | +@ -moz-box-shadow: 0px 3px 4px #333333; | |
| 819 | +@ box-shadow: 0px 3px 4px #333333; | |
| 820 | +@ } | |
| 821 | +@ | |
| 822 | +@ /* The "Date" that occurs on the left hand side of timelines */ | |
| 823 | +@ div.divider { | |
| 824 | +@ font-size: 1.2em; | |
| 825 | +@ font-family: Georgia, serif; | |
| 826 | +@ font-weight: bold; | |
| 827 | +@ margin-top: 1em; | |
| 828 | +@ white-space: nowrap; | |
| 829 | +@ } | |
| 830 | +@ | |
| 831 | +@ /* The footer at the very bottom of the page */ | |
| 832 | +@ div.footer { | |
| 833 | +@ font-size: 0.9em; | |
| 834 | +@ text-align: right; | |
| 835 | +@ margin-bottom: 1em; | |
| 836 | +@ color: #666; | |
| 837 | +@ } | |
| 838 | +@ | |
| 839 | +@ /* Hyperlink colors in the footer */ | |
| 840 | +@ div.footer a { color: white; } | |
| 841 | +@ div.footer a:link { color: white; } | |
| 842 | +@ div.footer a:visited { color: white; } | |
| 843 | +@ div.footer a:hover { background-color: white; color: #558195; } | |
| 844 | +@ | |
| 845 | +@ /* <verbatim> blocks */ | |
| 846 | +@ pre.verbatim, blockquote pre { | |
| 847 | +@ font-family: Dejavu Sans Mono, Monaco, Lucida Console, monospace; | |
| 848 | +@ background-color: #f3f3f3; | |
| 849 | +@ padding: 0.5em; | |
| 850 | +@ white-space: pre-wrap; | |
| 851 | +@ } | |
| 852 | +@ | |
| 853 | +@ blockquote pre { | |
| 854 | +@ border: 1px #000 dashed; | |
| 855 | +@ } | |
| 856 | +@ | |
| 857 | +@ /* The label/value pairs on (for example) the ci page */ | |
| 858 | +@ table.label-value th { | |
| 859 | +@ vertical-align: top; | |
| 860 | +@ text-align: right; | |
| 861 | +@ padding: 0.2ex 2ex; | |
| 862 | +@ } | |
| 863 | +@ | |
| 864 | +@ | |
| 865 | +@ table.report { | |
| 866 | +@ border-collapse:collapse; | |
| 867 | +@ border: 1px solid #999; | |
| 868 | +@ margin: 1em 0 1em 0; | |
| 869 | +@ } | |
| 870 | +@ | |
| 871 | +@ table.report tr th { | |
| 872 | +@ padding: 3px 5px; | |
| 873 | +@ text-transform : capitalize; | |
| 874 | +@ } | |
| 875 | +@ | |
| 876 | +@ table.report tr td { | |
| 877 | +@ padding: 3px 5px; | |
| 878 | +@ } | |
| 879 | +@ | |
| 880 | +@ textarea { | |
| 881 | +@ font-size: 1em; | |
| 882 | +@ }'); | |
| 883 | +@ REPLACE INTO config VALUES('header','<html> | |
| 884 | +@ <head> | |
| 885 | +@ <title>$<project_name>: $<title></title> | |
| 886 | +@ <link rel="alternate" type="application/rss+xml" title="RSS Feed" | |
| 887 | +@ href="$home/timeline.rss"> | |
| 888 | +@ <link rel="stylesheet" href="$home/style.css?black2" type="text/css" | |
| 889 | +@ media="screen"> | |
| 890 | +@ </head> | |
| 891 | +@ <body> | |
| 892 | +@ <div class="header"> | |
| 893 | +@ <div class="logo"> | |
| 894 | +@ <img src="$home/logo" alt="logo"> | |
| 895 | +@ <br /><nobr>$<project_name></nobr> | |
| 896 | +@ </div> | |
| 897 | +@ <div class="title">$<title></div> | |
| 898 | +@ <div class="status"><nobr><th1> | |
| 899 | +@ if {[info exists login]} { | |
| 900 | +@ puts "Logged in as $login" | |
| 901 | +@ } else { | |
| 902 | +@ puts "Not logged in" | |
| 903 | +@ } | |
| 904 | +@ </th1></nobr></div> | |
| 905 | +@ </div> | |
| 906 | +@ <div class="mainmenu"><ul><th1> | |
| 907 | +@ html "<a href=''$home$index_page''>Home</a>" | |
| 908 | +@ if {[anycap jor]} { | |
| 909 | +@ html "<a href=''$home/timeline''>Timeline</a>" | |
| 910 | +@ } | |
| 911 | +@ if {[hascap oh]} { | |
| 912 | +@ html "<a href=''$home/dir?ci=tip''>Files</a>" | |
| 913 | +@ } | |
| 914 | +@ if {[hascap o]} { | |
| 915 | +@ html "<a href=''$home/brlist''>Branches</a>" | |
| 916 | +@ html "<a href=''$home/taglist''>Tags</a>" | |
| 917 | +@ } | |
| 918 | +@ if {[hascap r]} { | |
| 919 | +@ html "<a href=''$home/reportlist''>Tickets</a>" | |
| 920 | +@ } | |
| 921 | +@ if {[hascap j]} { | |
| 922 | +@ html "<a href=''$home/wiki''>Wiki</a>" | |
| 923 | +@ } | |
| 924 | +@ if {[hascap s]} { | |
| 925 | +@ html "<a href=''$home/setup''>Admin</a>" | |
| 926 | +@ } elseif {[hascap a]} { | |
| 927 | +@ html "<a href=''$home/setup_ulist''>Users</a>" | |
| 928 | +@ } | |
| 929 | +@ if {[info exists login]} { | |
| 930 | +@ html "<a href=''$home/login''>Logout</a>" | |
| 931 | +@ } else { | |
| 932 | +@ html "<a href=''$home/login''>Login</a>" | |
| 933 | +@ } | |
| 934 | +@ </th1></ul></div> | |
| 935 | +@ <div id="container"> | |
| 936 | +@ '); | |
| 937 | +@ REPLACE INTO config VALUES('footer','</div> | |
| 938 | +@ <div class="footer"> | |
| 939 | +@ Fossil version $manifest_version $manifest_date | |
| 940 | +@ </div> | |
| 941 | +@ </body></html> | |
| 942 | +@ '); | |
| 943 | +; | |
| 944 | + | |
| 652 | 945 | /* |
| 653 | 946 | ** An array of available built-in skins. |
| 654 | 947 | */ |
| 655 | 948 | static struct BuiltinSkin { |
| 656 | 949 | const char *zName; |
| @@ -658,10 +951,11 @@ | ||
| 658 | 951 | } aBuiltinSkin[] = { |
| 659 | 952 | { "Default", 0 /* Filled in at runtime */ }, |
| 660 | 953 | { "Plain Gray, No Logo", zBuiltinSkin1 }, |
| 661 | 954 | { "Khaki, No Logo", zBuiltinSkin2 }, |
| 662 | 955 | { "Black & White, Menu on Left", zBuiltinSkin3 }, |
| 956 | + { "Gradient, Rounded Corners", zBuiltinSkin4 }, | |
| 663 | 957 | }; |
| 664 | 958 | |
| 665 | 959 | /* |
| 666 | 960 | ** For a skin named zSkinName, compute the name of the CONFIG table |
| 667 | 961 | ** entry where that skin is stored and return it. |
| 668 | 962 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -597,11 +597,11 @@ | |
| 597 | @ media="screen"> |
| 598 | @ </head> |
| 599 | @ <body> |
| 600 | @ <div class="header"> |
| 601 | @ <div class="logo"> |
| 602 | @ <!-- <img src="$home/logo" alt="logo"> --> |
| 603 | @ <br /><nobr>$<project_name></nobr> |
| 604 | @ </div> |
| 605 | @ <div class="title">$<title></div> |
| 606 | @ <div class="status"><nobr><th1> |
| 607 | @ if {[info exists login]} { |
| @@ -647,10 +647,303 @@ | |
| 647 | @ Fossil version $manifest_version $manifest_date |
| 648 | @ </div> |
| 649 | @ </body></html> |
| 650 | @ '); |
| 651 | ; |
| 652 | /* |
| 653 | ** An array of available built-in skins. |
| 654 | */ |
| 655 | static struct BuiltinSkin { |
| 656 | const char *zName; |
| @@ -658,10 +951,11 @@ | |
| 658 | } aBuiltinSkin[] = { |
| 659 | { "Default", 0 /* Filled in at runtime */ }, |
| 660 | { "Plain Gray, No Logo", zBuiltinSkin1 }, |
| 661 | { "Khaki, No Logo", zBuiltinSkin2 }, |
| 662 | { "Black & White, Menu on Left", zBuiltinSkin3 }, |
| 663 | }; |
| 664 | |
| 665 | /* |
| 666 | ** For a skin named zSkinName, compute the name of the CONFIG table |
| 667 | ** entry where that skin is stored and return it. |
| 668 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -597,11 +597,11 @@ | |
| 597 | @ media="screen"> |
| 598 | @ </head> |
| 599 | @ <body> |
| 600 | @ <div class="header"> |
| 601 | @ <div class="logo"> |
| 602 | @ <img src="$home/logo" alt="logo"> |
| 603 | @ <br /><nobr>$<project_name></nobr> |
| 604 | @ </div> |
| 605 | @ <div class="title">$<title></div> |
| 606 | @ <div class="status"><nobr><th1> |
| 607 | @ if {[info exists login]} { |
| @@ -647,10 +647,303 @@ | |
| 647 | @ Fossil version $manifest_version $manifest_date |
| 648 | @ </div> |
| 649 | @ </body></html> |
| 650 | @ '); |
| 651 | ; |
| 652 | |
| 653 | |
| 654 | /* |
| 655 | ** Gradients and rounded corners. |
| 656 | */ |
| 657 | static const char zBuiltinSkin4[] = |
| 658 | @ REPLACE INTO config VALUES('css','/* General settings for the entire page */ |
| 659 | @ html { |
| 660 | @ min-height: 100%; |
| 661 | @ } |
| 662 | @ body { |
| 663 | @ margin: 0ex 1ex; |
| 664 | @ padding: 0px; |
| 665 | @ background-color: white; |
| 666 | @ color: #333; |
| 667 | @ font-family: Verdana, sans-serif; |
| 668 | @ font-size: 0.8em; |
| 669 | @ } |
| 670 | @ |
| 671 | @ /* The project logo in the upper left-hand corner of each page */ |
| 672 | @ div.logo { |
| 673 | @ display: table-cell; |
| 674 | @ text-align: right; |
| 675 | @ vertical-align: bottom; |
| 676 | @ font-weight: normal; |
| 677 | @ } |
| 678 | @ |
| 679 | @ /* Widths */ |
| 680 | @ div.header, div.mainmenu, div.submenu, div.content, div.footer { |
| 681 | @ max-width: 900px; |
| 682 | @ margin: auto; |
| 683 | @ padding: 3px 20px 3px 20px; |
| 684 | @ clear: both; |
| 685 | @ } |
| 686 | @ |
| 687 | @ /* The page title at the top of each page */ |
| 688 | @ div.title { |
| 689 | @ display: table-cell; |
| 690 | @ padding-left: 1em; |
| 691 | @ font-size: 2em; |
| 692 | @ font-weight: bold; |
| 693 | @ margin: 10px 0 10px -20px; |
| 694 | @ vertical-align: bottom; |
| 695 | @ text-align: left; |
| 696 | @ width: 80%; |
| 697 | @ font-family: Georgia, serif; |
| 698 | @ font-weight:normal; |
| 699 | @ } |
| 700 | @ |
| 701 | @ /* The login status message in the top right-hand corner */ |
| 702 | @ div.status { |
| 703 | @ display: table-cell; |
| 704 | @ text-align: right; |
| 705 | @ vertical-align: bottom; |
| 706 | @ color: #333; |
| 707 | @ margin-right: -20px; |
| 708 | @ } |
| 709 | @ |
| 710 | @ /* The main menu bar that appears at the top of the page beneath |
| 711 | @ ** the header */ |
| 712 | @ div.mainmenu { |
| 713 | @ text-align: center; |
| 714 | @ color: white; |
| 715 | @ -moz-border-top-right-radius: 5px; |
| 716 | @ -moz-border-top-left-radius: 5px; |
| 717 | @ -webkit-border-top-right-radius: 5px; |
| 718 | @ -webkit-border-top-left-radius: 5px; |
| 719 | @ -border-top-right-radius: 5px; |
| 720 | @ -border-top-left-radius: 5px; |
| 721 | @ border-top-left-radius: 5px; |
| 722 | @ border-top-right-radius: 5px; |
| 723 | @ min-height: 2em; |
| 724 | @ background-color: #446979; |
| 725 | @ background: -webkit-gradient(linear,left bottom,left top, color-stop(0.02, rgb(51,81,94)), color-stop(0.76, rgb(85,129,149))); |
| 726 | @ background: -moz-linear-gradient(center bottom,rgb(51,81,94) 2%, rgb(85,129,149) 76%); |
| 727 | @ -webkit-box-shadow: 0px 3px 4px #333333; |
| 728 | @ -moz-box-shadow: 0px 3px 4px #333333; |
| 729 | @ box-shadow: 0px 3px 4px #333333; |
| 730 | @ } |
| 731 | @ |
| 732 | @ /* The submenu bar that *sometimes* appears below the main menu */ |
| 733 | @ div.submenu { |
| 734 | @ padding-top:10px; |
| 735 | @ padding-bottom:0; |
| 736 | @ text-align: right; |
| 737 | @ color: #000; |
| 738 | @ background-color: #fff; |
| 739 | @ height: 1.5em; |
| 740 | @ vertical-align:middle; |
| 741 | @ -webkit-box-shadow: 0px 3px 4px #999; |
| 742 | @ -moz-box-shadow: 0px 3px 4px #999; |
| 743 | @ box-shadow: 0px 3px 4px #999; |
| 744 | @ } |
| 745 | @ div.mainmenu a, div.mainmenu a:visited { |
| 746 | @ padding: 3px 10px 3px 10px; |
| 747 | @ color: white; |
| 748 | @ text-decoration: none; |
| 749 | @ } |
| 750 | @ div.submenu a, div.submenu a:visited { |
| 751 | @ padding: 2px 8px; |
| 752 | @ color: #000; |
| 753 | @ font-family: Arial; |
| 754 | @ text-decoration: none; |
| 755 | @ margin:auto; |
| 756 | @ -webkit-border-radius: 5px; |
| 757 | @ -moz-border-radius: 5px; |
| 758 | @ border-radius: 5px; |
| 759 | @ background: -webkit-gradient(linear,left bottom, left top, color-stop(0, rgb(184,184,184)), color-stop(0.75, rgb(214,214,214))); |
| 760 | @ background: -moz-linear-gradient(center bottom, rgb(184,184,184) 0%, rgb(214,214,214) 75%); |
| 761 | @ background-color: #e0e0e0 ; |
| 762 | @ text-shadow: 0px -1px 0px #eee; |
| 763 | @ filter: dropshadow(color=#eeeeee, offx=0, offy=-1); |
| 764 | @ border: 1px solid #000; |
| 765 | @ } |
| 766 | @ |
| 767 | @ div.mainmenu a:hover { |
| 768 | @ color: #000; |
| 769 | @ background-color: white; |
| 770 | @ } |
| 771 | @ |
| 772 | @ div.submenu a:hover { |
| 773 | @ background: -webkit-gradient(linear,left bottom, left top, color-stop(0, rgb(214,214,214)), color-stop(0.75, rgb(184,184,184))); |
| 774 | @ background: -moz-linear-gradient(center bottom, rgb(214,214,214) 0%, rgb(184,184,184) 75%); |
| 775 | @ background-color: #c0c0c0 ; |
| 776 | @ } |
| 777 | @ |
| 778 | @ /* All page content from the bottom of the menu or submenu down to |
| 779 | @ ** the footer */ |
| 780 | @ div.content { |
| 781 | @ background-color: #fff; |
| 782 | @ -webkit-box-shadow: 0px 3px 4px #999; |
| 783 | @ -moz-box-shadow: 0px 3px 4px #999; |
| 784 | @ box-shadow: 0px 3px 4px #999; |
| 785 | @ -moz-border-bottom-right-radius: 5px; |
| 786 | @ -moz-border-bottom-left-radius: 5px; |
| 787 | @ -webkit-border-bottom-right-radius: 5px; |
| 788 | @ -webkit-border-bottom-left-radius: 5px; |
| 789 | @ border-bottom-right-radius: 5px; |
| 790 | @ border-bottom-left-radius: 5px; |
| 791 | @ padding-bottom: 1em; |
| 792 | @ min-height:40%; |
| 793 | @ } |
| 794 | @ |
| 795 | @ |
| 796 | @ /* Some pages have section dividers */ |
| 797 | @ div.section { |
| 798 | @ margin-bottom: 0.5em; |
| 799 | @ margin-top: 1em; |
| 800 | @ margin-right: auto; |
| 801 | @ |
| 802 | @ padding: 1px 1px 1px 1px; |
| 803 | @ font-size: 1.2em; |
| 804 | @ font-weight: bold; |
| 805 | @ |
| 806 | @ text-align: center; |
| 807 | @ color: white; |
| 808 | @ |
| 809 | @ -webkit-border-radius: 5px; |
| 810 | @ -moz-border-radius: 5px; |
| 811 | @ border-radius: 5px; |
| 812 | @ |
| 813 | @ background-color: #446979; |
| 814 | @ background: -webkit-gradient(linear,left bottom,left top, color-stop(0.02, rgb(51,81,94)), color-stop(0.76, rgb(85,129,149))); |
| 815 | @ background: -moz-linear-gradient(center bottom,rgb(51,81,94) 2%, rgb(85,129,149) 76%); |
| 816 | @ |
| 817 | @ -webkit-box-shadow: 0px 3px 4px #333333; |
| 818 | @ -moz-box-shadow: 0px 3px 4px #333333; |
| 819 | @ box-shadow: 0px 3px 4px #333333; |
| 820 | @ } |
| 821 | @ |
| 822 | @ /* The "Date" that occurs on the left hand side of timelines */ |
| 823 | @ div.divider { |
| 824 | @ font-size: 1.2em; |
| 825 | @ font-family: Georgia, serif; |
| 826 | @ font-weight: bold; |
| 827 | @ margin-top: 1em; |
| 828 | @ white-space: nowrap; |
| 829 | @ } |
| 830 | @ |
| 831 | @ /* The footer at the very bottom of the page */ |
| 832 | @ div.footer { |
| 833 | @ font-size: 0.9em; |
| 834 | @ text-align: right; |
| 835 | @ margin-bottom: 1em; |
| 836 | @ color: #666; |
| 837 | @ } |
| 838 | @ |
| 839 | @ /* Hyperlink colors in the footer */ |
| 840 | @ div.footer a { color: white; } |
| 841 | @ div.footer a:link { color: white; } |
| 842 | @ div.footer a:visited { color: white; } |
| 843 | @ div.footer a:hover { background-color: white; color: #558195; } |
| 844 | @ |
| 845 | @ /* <verbatim> blocks */ |
| 846 | @ pre.verbatim, blockquote pre { |
| 847 | @ font-family: Dejavu Sans Mono, Monaco, Lucida Console, monospace; |
| 848 | @ background-color: #f3f3f3; |
| 849 | @ padding: 0.5em; |
| 850 | @ white-space: pre-wrap; |
| 851 | @ } |
| 852 | @ |
| 853 | @ blockquote pre { |
| 854 | @ border: 1px #000 dashed; |
| 855 | @ } |
| 856 | @ |
| 857 | @ /* The label/value pairs on (for example) the ci page */ |
| 858 | @ table.label-value th { |
| 859 | @ vertical-align: top; |
| 860 | @ text-align: right; |
| 861 | @ padding: 0.2ex 2ex; |
| 862 | @ } |
| 863 | @ |
| 864 | @ |
| 865 | @ table.report { |
| 866 | @ border-collapse:collapse; |
| 867 | @ border: 1px solid #999; |
| 868 | @ margin: 1em 0 1em 0; |
| 869 | @ } |
| 870 | @ |
| 871 | @ table.report tr th { |
| 872 | @ padding: 3px 5px; |
| 873 | @ text-transform : capitalize; |
| 874 | @ } |
| 875 | @ |
| 876 | @ table.report tr td { |
| 877 | @ padding: 3px 5px; |
| 878 | @ } |
| 879 | @ |
| 880 | @ textarea { |
| 881 | @ font-size: 1em; |
| 882 | @ }'); |
| 883 | @ REPLACE INTO config VALUES('header','<html> |
| 884 | @ <head> |
| 885 | @ <title>$<project_name>: $<title></title> |
| 886 | @ <link rel="alternate" type="application/rss+xml" title="RSS Feed" |
| 887 | @ href="$home/timeline.rss"> |
| 888 | @ <link rel="stylesheet" href="$home/style.css?black2" type="text/css" |
| 889 | @ media="screen"> |
| 890 | @ </head> |
| 891 | @ <body> |
| 892 | @ <div class="header"> |
| 893 | @ <div class="logo"> |
| 894 | @ <img src="$home/logo" alt="logo"> |
| 895 | @ <br /><nobr>$<project_name></nobr> |
| 896 | @ </div> |
| 897 | @ <div class="title">$<title></div> |
| 898 | @ <div class="status"><nobr><th1> |
| 899 | @ if {[info exists login]} { |
| 900 | @ puts "Logged in as $login" |
| 901 | @ } else { |
| 902 | @ puts "Not logged in" |
| 903 | @ } |
| 904 | @ </th1></nobr></div> |
| 905 | @ </div> |
| 906 | @ <div class="mainmenu"><ul><th1> |
| 907 | @ html "<a href=''$home$index_page''>Home</a>" |
| 908 | @ if {[anycap jor]} { |
| 909 | @ html "<a href=''$home/timeline''>Timeline</a>" |
| 910 | @ } |
| 911 | @ if {[hascap oh]} { |
| 912 | @ html "<a href=''$home/dir?ci=tip''>Files</a>" |
| 913 | @ } |
| 914 | @ if {[hascap o]} { |
| 915 | @ html "<a href=''$home/brlist''>Branches</a>" |
| 916 | @ html "<a href=''$home/taglist''>Tags</a>" |
| 917 | @ } |
| 918 | @ if {[hascap r]} { |
| 919 | @ html "<a href=''$home/reportlist''>Tickets</a>" |
| 920 | @ } |
| 921 | @ if {[hascap j]} { |
| 922 | @ html "<a href=''$home/wiki''>Wiki</a>" |
| 923 | @ } |
| 924 | @ if {[hascap s]} { |
| 925 | @ html "<a href=''$home/setup''>Admin</a>" |
| 926 | @ } elseif {[hascap a]} { |
| 927 | @ html "<a href=''$home/setup_ulist''>Users</a>" |
| 928 | @ } |
| 929 | @ if {[info exists login]} { |
| 930 | @ html "<a href=''$home/login''>Logout</a>" |
| 931 | @ } else { |
| 932 | @ html "<a href=''$home/login''>Login</a>" |
| 933 | @ } |
| 934 | @ </th1></ul></div> |
| 935 | @ <div id="container"> |
| 936 | @ '); |
| 937 | @ REPLACE INTO config VALUES('footer','</div> |
| 938 | @ <div class="footer"> |
| 939 | @ Fossil version $manifest_version $manifest_date |
| 940 | @ </div> |
| 941 | @ </body></html> |
| 942 | @ '); |
| 943 | ; |
| 944 | |
| 945 | /* |
| 946 | ** An array of available built-in skins. |
| 947 | */ |
| 948 | static struct BuiltinSkin { |
| 949 | const char *zName; |
| @@ -658,10 +951,11 @@ | |
| 951 | } aBuiltinSkin[] = { |
| 952 | { "Default", 0 /* Filled in at runtime */ }, |
| 953 | { "Plain Gray, No Logo", zBuiltinSkin1 }, |
| 954 | { "Khaki, No Logo", zBuiltinSkin2 }, |
| 955 | { "Black & White, Menu on Left", zBuiltinSkin3 }, |
| 956 | { "Gradient, Rounded Corners", zBuiltinSkin4 }, |
| 957 | }; |
| 958 | |
| 959 | /* |
| 960 | ** For a skin named zSkinName, compute the name of the CONFIG table |
| 961 | ** entry where that skin is stored and return it. |
| 962 |