IMPROVE: better documentation distribution (IVY-274) - in progress

git-svn-id: https://svn.apache.org/repos/asf/incubator/ivy/trunk@484461 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Xavier Hanin 2006-08-21 04:47:06 +00:00
parent 1cc2024ab5
commit d4d4ffe9e8
24 changed files with 1611 additions and 11 deletions

View File

@ -32,6 +32,7 @@ Changes:
- NEW: adding to SPECIAL_MEANINGS in LatestRevisionStrategy (IVY-121)
- NEW: Allow use of system properties in ivyconf.xml (IVY-228)
- IMPROVE: better documentation distribution (IVY-274) - in progress
- IMPROVE: define conflict manager per organisation/module in ivyconf (IVY-270)
- IMPROVE: transitive parameter in resolve (IVY-21)
- IMPROVE: add syncing feature in retrieve (IVY-33)

View File

@ -5,8 +5,11 @@ build.dir=${basedir}/build
classes.build.dir=${basedir}/build/classes
test.build.dir=${basedir}/build/test
artifacts.build.dir=${basedir}/build/artifact
test.report.dir=${basedir}/build/report
javadoc.build.dir=${basedir}/build/doc/api
doc.build.dir=${basedir}/doc/ivy
test.report.dir=${doc.build.dir}/test-report
javadoc.build.dir=${doc.build.dir}/api
doc.src.dir=${basedir}/src/doc
dxml.doc.file=${doc.src.dir}/ivy-book.xml
ivy.minimum.javaversion=1.4
debug.mode=on

View File

@ -147,6 +147,18 @@
</junitreport>
</target>
<target name="get-dxml" description="download dxml doc file from web site">
<get src="http://www.jayasoft.org/ivy/doc/dxml" dest="${dxml.doc.file}" verbose="true" />
</target>
<target name="main-doc" description="generates doc from dxml file -- WARNING: this operation is very slow and requires ruby 1.8.2 or greater">
<echo message="generating documentation"/>
<echo message="this operation is very slow... be patient"/>
<exec dir="${basedir}" executable="ruby">
<arg line="${doc.src.dir}/dxml_to_html.rb"/>
</exec>
</target>
<target name="install" depends="jar" if="env.ANT_HOME">
<copy file="${artifacts.build.dir}/ivy.jar" todir="${env.ANT_HOME}/lib"/>
</target>

BIN
doc/images/background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
doc/images/grippie.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

BIN
doc/images/jayasoft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
doc/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

BIN
doc/images/menu-leaf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

View File

@ -1,13 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Ivy Documentation Index</title>
<META HTTP-EQUIV="refresh" CONTENT="0;URL=ivy/doc.html">
</head>
<body>
<h1>Welcome to Ivy documentation index !</h1>
Here is what you can find in this documentation:<br/>
- <a href="build/main/index.html">Main documentation</a><br/>
- <a href="build/api/index.html">Javadoc</a><br/>
- <a href="build/report/junit/junit-noframes.html">JUnit tests report</a><br/>
</body>
</html>

38
doc/style/ant.css Normal file
View File

@ -0,0 +1,38 @@
/*
.ant thead td:first-child + td + td{
text-align: center;
}
*/
table.ant {
border-collapse:collapse;
width:90%;
margin:auto;
margin-top: 10px;
}
.ant thead {
background-color:#DEE4CD;
border:1px solid #7A9437;
}
.ant tbody {
background-color:#FFFFFF;
border:1px solid #7A9437;
}
.ant th {
font-family:monospace;
border:1px solid #7A9437;
padding:5px;
}
.ant td {
border:1px dotted #7A9437;
padding:5px;
}
th.ant-att {
width:15%;
}
th.ant-desc {
width:50%;
}

5
doc/style/codefilter.css Normal file
View File

@ -0,0 +1,5 @@
div.codeblock {
padding: 5px;
border: 1px solid #CCC;
background-color: #EEE;
}

142
doc/style/color.css Normal file
View File

@ -0,0 +1,142 @@
/*
ivy color theme
*/
body {
background-color: #5a7418;
}
#body {
color: #000;
background-color: #fff;
}
h1, h2, h3, h4, h5, h6 {
color: #7a9438;
}
h1 {
color: #fff;
background-color: #7a9438;
}
.title {
color: #7a9438;
background-color: #fff;
background: none;
}
a:link {
color: #7a9438;
}
a:visited {
color: #7a9438;
}
a:hover, a:active {
color: #7a9438;
}
blockquote {
color: #696969;
}
pre {
background-color: #eee;
border: 1px solid #ddd;
}
.form-item label {
color: #7a9438;
}
.item-list .title {
color: #7a9438;
}
/*
** Page layout blocks / IDs
*/
#header {
background-color: #ffffff;
/* border: 3px solid #9ebf47; */
}
#top-menu {
background-color:#7a9438;
border-top: 3px solid #9ebf47;
border-bottom: 3px solid #9ebf47;
}
#search .form-text, #search .form-submit {
border: 1px solid #7a9438;
}
#search .form-submit {
background-color: #9ebf47;
}
.block h2 {
color: #000;
background-color: #eee;
}
.block .content {
background-color: #fff;
border: 1px solid #eee;
}
/*
.block h2 {
color: #000;
}
*/
#navcontainer {
background-color:#7a9438;
}
#nav {
background-color:#7a9438;
}
#nav ul {
background-color:#7a9438;
border-top: 1px solid #7a9438;
border-right: 1px solid #7a9438;
border-bottom: 1px solid #7a9438;
border-left: 0.75em solid #7a9438;
}
#nav li a {
color: #fff;
}
#nav .title {
color: #fff;
/*
background: #61752c;
*/
background: #7a9438;
border-top: 0;
border-right: 0;
border-bottom: 1px solid #7a9438;
border-left: 0;
}
#nav li li a {
background: #fff;
color: #7a9438;
border-top: 0;
border-right: 0;
border-bottom: 1px solid #7a9438;
border-left: 0;
}
#nav a:hover,
#nav a:active {
background: #9ebf47;
}
#content {
border-top: 3px solid #9ebf47;
}
#forum tr.dark {
background: #daeddc;
}
.postit {
background-color: #FFDBA1;
border: 1px solid #FFB643;
color: #4E3000;
}

684
doc/style/drupal.css Normal file
View File

@ -0,0 +1,684 @@
/* $Id: drupal.css,v 1.147.2.3 2006/06/30 00:13:45 unconed Exp $ */
/*
** HTML elements
*/
fieldset {
margin-bottom: 1em;
padding: .5em;
}
form {
margin: 0;
padding: 0;
}
hr {
height: 1px;
border: 1px solid gray;
}
img {
border: 0;
}
table {
border-collapse: collapse;
}
th {
text-align: left;
padding-right: 1em;
border-bottom: 3px solid #ccc;
}
th.active img {
display: inline;
}
tr.even, tr.odd {
background-color: #eee;
border-bottom: 1px solid #ccc;
}
tr.even, tr.odd {
padding: 0.1em 0.6em;
}
td.active {
background-color: #ddd;
}
/*
** Menu styles
*/
ul.menu {
list-style: none;
border: none;
text-align:left;
}
ul.menu li {
margin: 0 0 0 0.5em;
}
li.expanded {
list-style-type: circle;
list-style-image: url(../images/menu-expanded.png);
padding: 0.2em 0.5em 0 0;
margin: 0;
}
li.collapsed {
list-style-type: disc;
list-style-image: url(../images/menu-collapsed.png);
padding: 0.2em 0.5em 0 0;
margin: 0;
}
li.leaf {
list-style-type: square;
list-style-image: url(../images/menu-leaf.png);
padding: 0.2em 0.5em 0 0;
margin: 0;
}
li a.active {
color: #000;
}
td.menu-disabled {
background: #ccc;
}
/*
** Other common styles
*/
.breadcrumb {
padding-bottom: .5em
}
.block-region {
background-color: #ffff66;
margin-top: 4px;
margin-bottom: 4px;
padding: 3px;
}
.block ul {
margin: 0;
padding: 0 0 0.25em 1em;
}
br.clear {
clear: both;
height: 0;
}
.container-inline div {
display: inline;
}
.error {
color: red;
}
.item-list .icon {
color: #555;
float: right;
padding-left: 0.25em;
clear: right;
}
.item-list .icon a {
color: #000;
text-decoration: none;
}
.item-list .icon a:hover {
color: #000;
text-decoration: none;
}
.item-list .title {
font-weight: bold;
}
.item-list ul {
margin: 0 0 0.75em 0;
padding: 0;
}
.item-list ul li {
margin: 0 0 0.25em 1.5em;
padding: 0;
list-style: disc;
}
.form-item {
margin-top: 1em;
margin-bottom: 1em;
}
tr.odd .form-item, tr.even .form-item {
margin-top: 0;
margin-bottom: 0;
white-space: nowrap;
}
.form-item input.error, .form-item textarea.error {
border: 2px solid red;
}
.form-item .description {
font-size: 0.85em;
}
.form-item label {
display: block;
font-weight: bold;
}
.form-item label.option {
display: inline;
font-weight: normal;
}
.marker, .form-required {
color: #f00;
}
.more-link {
text-align: right;
}
.node-form .form-text {
display: block;
width: 95%;
}
.node-form .standard {
clear: both;
}
.node-form textarea {
display: block;
width: 95%;
}
.node-form .attachments fieldset {
float: none;
display: block;
}
.nowrap {
white-space: nowrap;
}
.ok {
color: #080;
}
#pager {
clear: both;
text-align: center;
}
#pager a, #pager strong.pager-current {
padding: 0.5em;
}
.path {
padding-bottom: 0.7em;
font-size: 1.1em;
}
/*
** Module specific styles
*/
#aggregator .feed-source .feed-title {
margin-top: 0;
}
#aggregator .feed-source .feed-image img {
margin-bottom: 0.75em;
}
#aggregator .feed-source .feed-icon {
float: right;
display: block;
}
#aggregator .feed-item {
margin-bottom: 1.5em;
}
#aggregator .feed-item-title {
margin-bottom: 0;
font-size: 1.3em;
}
#aggregator .feed-item-meta, #aggregator .feed-item-body {
margin-bottom: 0.5em;
}
#aggregator .feed-item-categories {
font-size: 0.9em;
}
#aggregator td {
vertical-align: bottom;
}
#aggregator td.categorize-item {
white-space: nowrap;
}
#aggregator .categorize-item .news-item .body {
margin-top: 0;
}
#aggregator .categorize-item h3 {
margin-bottom: 1em;
margin-top: 0;
}
.book-navigation .menu {
border-top: 1px solid #888;
padding: 1em 0 0 3em;
}
.book-navigation .page-links {
border-top: 1px solid #888;
border-bottom: 1px solid #888;
text-align: center;
padding: 0.5em;
}
.book-navigation .page-previous {
text-align: right;
}
.book-navigation .page-up {
margin: 0 4em;
}
.book-navigation .page-next {
text-align: left;
}
.node-unpublished, .comment-unpublished {
background-color: #fff4f4;
}
.preview .node, .preview .comment {
background-color: #ffffea;
}
.archive {
margin: 1em 0 1em 0;
}
.calendar .row-week td a {
display: block;
}
.calendar .row-week td a:hover {
background-color: #888; color: #fff;
}
.calendar a {
text-decoration: none;
}
.calendar a:hover {
text-decoration: none;
}
.calendar table {
border-collapse: collapse;
width: 100%;
border: 1px solid #000;
}
.calendar td, .calendar th {
text-align: center;
border: 1px solid #000;
padding: 1px;
margin: 0;
font-size: 0.8em;
}
.calendar td.day-blank {
border: 0;
}
.tips {
margin-top: 0;
margin-bottom: 0;
padding-top: 0;
padding-bottom: 0;
font-size: 0.9em;
}
#forum .description {
font-size: 0.9em;
margin: 0.5em;
}
#forum td.created, #forum td.posts, #forum td.topics, #forum td.last-reply, #forum td.replies, #forum td.pager {
white-space: nowrap;
}
#forum td.posts, #forum td.topics, #forum td.replies, #forum td.pager {
text-align: center;
}
.forum-topic-navigation {
padding: 1em 0 0 3em;
border-top: 1px solid #888;
border-bottom: 1px solid #888;
text-align: center;
padding: 0.5em;
}
.forum-topic-navigation .topic-previous {
margin-right: 4em;
text-align: right;
}
.forum-topic-navigation .topic-next {
text-align: left;
}
.locale-untranslated {
font-style: normal;
text-decoration: line-through;
}
#node-admin-filter ul {
list-style-type: none;
padding: 0;
margin: 0;
width: 100%;
}
#node-admin-buttons {
float: left;
margin-left: 0.5em;
clear: right;
}
td.revision-current {
background: #ffc;
}
dl.multiselect dd.b, dl.multiselect dd.b .form-item, dl.multiselect dd.b select {
font-family: inherit;
font-size: inherit;
width: 14em;
}
dl.multiselect dd.a, dl.multiselect dd.a .form-item {
width: 8em;
}
dl.multiselect dt, dl.multiselect dd {
float: left;
line-height: 1.75em;
padding: 0;
margin: 0 1em 0 0;
}
dl.multiselect .form-item {
height: 1.75em;
margin: 0;
}
#permissions td.module, #blocks td.region {
font-weight: bold;
}
#permissions td.permission, #blocks td.block, #taxonomy td.term, #taxonomy td.message {
padding-left: 1.5em;
}
#access-rules .access-type, #access-rules .rule-type {
margin-right: 1em;
float: left;
}
#access-rules .access-type .form-item, #access-rules .rule-type .form-item {
margin-top: 0;
}
#access-rules .mask {
clear: both;
}
.poll .bar {
height: 1em;
margin: 1px 0;
background-color: #ddd;
}
.poll .bar .foreground {
background-color: #000;
height: 1em;
clear: left;
float: left;
}
.poll .links {
text-align: center;
}
.poll .percent {
text-align: right;
}
.poll .total {
text-align: center;
}
.poll .vote-form {
text-align: center;
}
.poll .vote-form .choices {
text-align: left;
margin: 0 auto;
display: table;
}
.profile {
clear: both;
margin: 1em 0 1em 0;
}
.profile .picture {
float: right;
margin: 0 1em 1em 0;
}
.profile dt {
margin: 1em 0 0.2em 0;
font-weight: bold;
}
.profile dd {
margin:0;
}
.node-form .poll-form fieldset {
display: block;
}
img.screenshot {
border: 1px solid #808080;
display: block;
margin: 2px;
}
.search-form {
margin-bottom: 1em;
}
.search-form p {
margin-top: 0;
margin-bottom: 0.2em;
padding-top: 0;
padding-bottom: 0;
}
.search-form input {
margin-top: 0;
margin-bottom: 0;
}
.search-results p {
margin-top: 0;
}
.search-results dt {
font-size: 1.1em;
}
.search-results dd {
margin-bottom: 1em;
}
.search-results .search-info {
font-size: 0.85em;
}
.search-advanced .criterion {
float: left;
margin-right: 2em;
}
.search-advanced .action {
float: left;
clear: left;
}
#tracker td.replies {
text-align: center;
}
#tracker table {
width: 100%;
}
.theme-settings-left {
float: left;
width: 49%;
}
.theme-settings-right {
float: right;
width: 49%;
}
.theme-settings-bottom {
clear: both;
}
#user-login-form {
text-align: center;
}
.more-help-link {
font-size: 0.85em;
text-align: right;
}
table.watchdog-event th {
border-bottom: 1px solid #ccc;
}
tr.watchdog-user {
background: #ffd;
}
tr.watchdog-user .active {
background: #eed;
}
tr.watchdog-content {
background: #ddf;
}
tr.watchdog-content .active {
background: #cce;
}
tr.watchdog-page-not-found, tr.watchdog-access-denied {
background: #dfd;
}
tr.watchdog-page-not-found .active, tr.watchdog-access-denied .active {
background: #cec;
}
tr.watchdog-error {
background: #ffc9c9;
}
tr.watchdog-error .active {
background: #eeb9b9;
}
/* Tab navigation */
ul.primary {
border-collapse: collapse;
padding: 0 0 0 1em;
white-space: nowrap;
list-style: none;
margin: 5px;
height: auto;
line-height: normal;
border-bottom: 1px solid #bbb;
}
ul.primary li {
display: inline;
}
ul.primary li a {
background-color: #ddd;
border-color: #bbb;
border-width: 1px;
border-style: solid solid none solid;
height: auto;
margin-right: 0.5em;
padding: 0 1em;
text-decoration: none;
}
ul.primary li.active a {
background-color: #fff;
border: 1px solid #bbb;
border-bottom: #fff 1px solid;
}
ul.primary li a:hover {
background-color: #eee;
border-color: #ccc;
border-bottom-color: #eee;
}
ul.secondary {
border-bottom: 1px solid #bbb;
padding: 0.5em 1em 0.5em 1em;
margin: 5px;
}
ul.secondary li {
display: inline;
padding: 0 1em;
border-right: 1px solid #ccc;
}
ul.secondary a {
padding: 0;
text-decoration: none;
}
ul.secondary a.active {
border-bottom: 4px solid #999;
}
/*
** Help module
*/
.help-items {
float: left;
width: 22%;
padding-right: 3%;
}
.help-items-last {
padding-right: 0;
}
/*
** Autocomplete styles
*/
/* Suggestion list */
#autocomplete {
position: absolute;
border: 1px solid;
overflow: hidden;
}
#autocomplete ul {
margin: 0;
padding: 0;
list-style: none;
}
#autocomplete li {
background: #fff;
color: #000;
white-space: pre;
cursor: default;
}
#autocomplete li.selected {
background: #0072b9;
color: #fff;
}
/* Animated throbber */
html.js input.form-autocomplete {
background-image: url(throbber.gif);
background-repeat: no-repeat;
background-position: 100% 2px;
}
html.js input.throbbing {
background-position: 100% -18px;
}
/*
** Progressbar styles
*/
.progress {
font-weight: bold;
}
.progress .bar {
background: #fff url(progress.gif);
border: 1px solid #00375a;
height: 1.5em;
margin-top: 0.2em;
}
.progress .filled {
background: #0072b9;
height: 1em;
border-bottom: 0.5em solid #004a73;
width: 0%;
}
.progress .percentage {
float: right;
}
/*
** Collapsing fieldsets
*/
html.js fieldset.collapsed {
border-bottom-width: 0;
border-left-width: 0;
border-right-width: 0;
margin-bottom: 0;
}
html.js fieldset.collapsed * {
display: none;
}
html.js fieldset.collapsed table *,
html.js fieldset.collapsed legend,
html.js fieldset.collapsed legend * {
display: inline;
}
html.js fieldset.collapsible legend a {
padding-left: 15px;
background: url(../images/menu-expanded.png) 5px 50% no-repeat;
}
html.js fieldset.collapsed legend a {
background-image: url(../images/menu-collapsed.png);
}
/* Note: IE-only fix due to '* html' (breaks Konqueror otherwise). */
* html.js fieldset.collapsible legend a {
display: block;
}
/*
** Resizable text areas
*/
.resizable-textarea {
width: 95%;
}
.resizable-textarea .grippie {
height: 14px;
background: #eee url(../images/grippie.png) no-repeat 100% 100%;
border: 1px solid #ddd;
border-top-width: 0;
cursor: s-resize;
}
/*
** Formatting for welcome page
*/
#first-time strong {
display: block;
padding: 1.5em 0 .5em;
}
h1 {
margin-top: 1.5em;
}
.sticky {
background-color: #eee;
margin-bottom: 3em;
}

72
doc/style/ivy-ref.css Normal file
View File

@ -0,0 +1,72 @@
/*
.ant thead td:first-child + td + td{
text-align: center;
}
*/
table.ivy-attributes {
border-collapse:collapse;
width:90%;
margin:auto;
margin-top: 10px;
}
.ivy-attributes thead {
background-color:#DEE4CD;
border:1px solid #7A9437;
}
.ivy-attributes tbody {
background-color:#FFFFFF;
border:1px solid #7A9437;
}
.ivy-attributes th {
font-family:monospace;
border:1px solid #7A9437;
padding:5px;
}
.ivy-attributes td {
border:1px dotted #7A9437;
padding:5px;
}
th.ivy-att {
width:15%;
}
th.ivy-att-desc {
width:50%;
}
table.ivy-children {
/* border:3px solid #6495ed; */
border-collapse:collapse;
width:90%;
margin:auto;
margin-top: 10px;
}
.ivy-children thead {
background-color:#DEE4CD;
border:1px solid #7A9437;
}
.ivy-children tbody {
background-color:#FFFFFF;
border:1px solid #7A9437;
}
.ivy-children th {
font-family:monospace;
border:1px solid #7A9437;
padding:5px;
}
.ivy-children td {
border:1px dotted #7A9437;
padding:5px;
}
th.ivy-chld {
width:15%;
}
th.ivy-chld-desc {
width:50%;
}

96
doc/style/nav.css Normal file
View File

@ -0,0 +1,96 @@
#navcontainer {
width: inherit;
margin: 0 0 0 50px;
padding-left: 0;
height: 1.20em;
z-index: 100;
}
#nav {
font: bold 0.75em/100% Trebuchet MS, Arial, Helvetica, sans-serif;
float: left;
width: inherit;
list-style: none;
line-height: 1;
padding: 0;
margin: 0;
z-index: 100;
}
#nav ul {
font: normal 100%/140% Trebuchet MS, Arial, Helvetica, sans-serif;
position: absolute;
left: -999em;
height: auto;
width: 11.4em;
w\idth: 12.0em;
list-style: none;
margin: 0;
padding: 0;
z-index: 100;
}
#nav li {
float: left;
padding: 0;
width: auto;
z-index: 100;
}
#nav ul li {
float: left;
padding: 0;
width: 10em;
z-index: 100;
}
#nav li a {
display: block;
width: auto;
padding: 0.25em 1.0em;
text-decoration: none;
}
#nav .title {
text-align: center;
font-weight: 700;
width: 11em;
w\idth: 10em;
margin: 0;
padding: 0.15em 1.0em;
}
#nav li li a {
width: 11em;
w\idth: 10em;
margin: 0;
padding: 0.25em 1.0em;
}
#nav li ul ul {
margin: -1.75em 0 0 11em;
z-index: 100;
}
#nav li:hover ul ul,
#nav li:hover ul ul ul,
#nav li.sfhover ul ul,
#nav li.sfhover ul ul ul {
left: -999em;
z-index: 100;
}
#nav li:hover ul,
#nav li li:hover ul,
#nav li li li:hover ul,
#nav li.sfhover ul,
#nav li li.sfhover ul,
#nav li li li.sfhover ul {
left: auto;
z-index: 100;
}
#nav li:hover,
#nav li.sfhover {
z-index: 100;
}

13
doc/style/quote.css Normal file
View File

@ -0,0 +1,13 @@
/* $Id: quote.css,v 1.4 2006/03/31 19:12:23 karthik Exp $ */
.quote-msg {
margin: 1em 2em 1em 2em;
padding: 1em;
border: 1px solid #DDD;
background-color: #F6F6F6;
}
.quote-author {
display: block;
font-weight: bold;
margin: 0 0 1em 0;
}

3
doc/style/shell.css Normal file
View File

@ -0,0 +1,3 @@
/* the class shell is used when a copy of the content of a shell or DOS window is made */
.shell {background-color: black; color: white; border: medium gray solid;}
.shell pre {background-color: black; border: none; font-size: small;}

248
doc/style/style.css Normal file
View File

@ -0,0 +1,248 @@
/* $Id: style.css,v 1.8 2005/03/27 18:55:35 unconed Exp $ */
@import "color.css";
@import "nav.css";
@import "xmlverbatim.css";
@import "ant.css";
@import "ivy-ref.css";
@import "shell.css";
/*
** HTML elements
*/
body {
margin: 0;
padding: 0;
}
#body {
display: table;
margin: 8px auto;
padding: 0;
width: 98%;
}
body, p, td, li, ul, ol {
font-family: Verdana, Helvetica, Arial, sans-serif;
font-size: small;
}
h1, h2, h3, h4, h5, h6 {
font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif;
}
h1 {
/*
margin-left: 15px;
margin-right: 15px;
*/
padding-left: 10px;
font-size: 1.6em;
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
-moz-border-radius-bottomright: 5px;
-moz-border-radius-bottomleft: 5px;
}
h2 {
font-size: 1.4em;
}
h3 {
font-size: 1.2em;
}
h4 {
font-size: 1.1em;
}
tr.dark td, tr.light td {
padding: 0.3em;
}
a:link {
text-decoration: none;
font-weight: bold;
}
a:visited {
text-decoration: none;
font-weight: bold;
}
a:hover, a:active {
font-weight: bold;
text-decoration: underline;
}
p {
margin: 0 0 1.3em 0;
padding: 0;
}
blockquote {
padding: 0 15px 0 15px;
margin: 15px 50px 15px 50px;
text-align: left;
font-size: 1.2em;
line-height: 1.3em;
font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif;
}
pre {
padding: 0.75em 1.5em;
font-size: 1em;
}
.form-item {
margin-top: 1em;
}
.item-list .title {
font-size: 0.85em;
}
.hide {
display: none
}
/*
** Page layout blocks / IDs
*/
#body {
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
-moz-border-radius-bottomright: 5px;
-moz-border-radius-bottomleft: 5px;
padding-top: 5px;
padding-bottom: 5px;
}
#home img {
padding: 5px 20px 10px 10px;
}
.product img {
padding: 5px 20px 10px 10px;
}
#top-menu tr {
padding: 0;
margin: 0;
}
#top-menu td {
padding: 0;
margin: 0;
}
#search {
padding: 0 1em 0 1em;
margin: 0;
}
#search .form-text, #search .form-submit {
padding: 0;
margin: 0;
font-size: 0.85em;
}
#search .form-text {
width: 8em;
padding: 0;
margin: 0;
}
#sidebar-left, #sidebar-right {
width: 200px;
/* padding in px not ex because IE messes up 100% width tables otherwise */
padding: 15px 5px 75px 10px;
vertical-align: top;
}
#sidebar-left li, #sidebar-right li {
font-size: 1em;
}
.block h2 {
margin: 5px 0px 0px 0px;
padding: 1px 5px 1px 30px;
font-size: 1.2em;
font-weight: 700;
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
}
.block .content {
-moz-border-radius-bottomright: 5px;
-moz-border-radius-bottomleft: 5px;
margin-bottom: 10px;
}
#main {
padding-left: 10px;
padding-right: 10px;
padding-bottom: 10px;
background: transparent url(../images/background.png) center center no-repeat;
}
.content {
padding-top: 10px;
}
#forum {
margin: 15px 0 15px 0;
}
#forum table {
width: 100%;
}
#forum table tr th {
text-align: center;
font-size: 0.75em;
}
#forum table tr th a {
text-decoration: underline;
}
#forum table tr th img {
margin: 0;
}
#forum td {
padding: 0.5em 0.5em 0.5em 0.5em;
}
#forum td.container a {
padding: 20px 0 20px 35px;
}
#forum td.statistics, #forum td.settings, #forum td.pager {
height: 1.5em;
}
#forum td .links {
padding-top: 0.7em;
font-size: 0.9em;
}
.block-forum h3 {
margin-bottom: .5em;
}
#footer-menu td {
padding-top: 3px;
}
.comparison td, .comparison th {
text-align: center;
}
.comment {
-moz-border-radius: 5px;
border: 1px solid #abc;
padding: .5em;
margin-bottom: 1em;
}
.comment .title {
font-size: 1em;
padding: 10px 0px 12px 19px;
background: transparent url(icon-comment.png) left center no-repeat;
}
.comment .new {
font-weight: bold;
font-size: 1em;
margin-left: 2px;
color: red;
}
.comment .picture {
border: 1px solid #fff;
float: right;
margin: 10px;
}
.submitted {
color: #999;
font-size: 0.79em;
}
.since {
font-weight: 700;
font-style: italic;
}
.postit {
margin:10px;
padding:10px;
-moz-border-radius:10px;
float:right;
width:400px;
}

19
doc/style/vim.css Normal file
View File

@ -0,0 +1,19 @@
div.codeblock {
padding: 5px;
margin-bottom:10px;
border: 1px solid #CCC;
background-color: #EEE;
}
.synComment { color: #0000FF }
.synConstant { color: #0000FF }
.synIdentifier { color: #008B8B }
.synStatement { color: #A52A2A ; font-weight: bold }
.synPreProc { color: #A020F0 }
.synType { color: #2E8B57 ; font-weight: bold }
.synSpecial { color: #6A5ACD }
.synUnderlined { color: #000000 ; text-decoration: underline }
.synError { color: #FFFFFF ; background: #FF0000 none }
.synTodo { color: #0000FF ; background: #FFFF00 none }

13
doc/style/xmlverbatim.css Normal file
View File

@ -0,0 +1,13 @@
.xmlverb-default { color: #333333; background-color: #ffffff;
font-family: monospace }
.xmlverb-element-name { color: #990000 }
.xmlverb-element-nsprefix { color: #666600 }
.xmlverb-attr-name { color: #660000 }
.xmlverb-attr-content { color: #000099; font-weight: bold }
.xmlverb-ns-name { color: #666600 }
.xmlverb-ns-uri { color: #330099 }
.xmlverb-text { color: #000000; font-weight: bold }
.xmlverb-comment { color: #006600; font-style: italic }
.xmlverb-pi-name { color: #006600; font-style: italic }
.xmlverb-pi-content { color: #006666; font-style: italic }

151
src/doc/dxml_to_html.rb Normal file
View File

@ -0,0 +1,151 @@
#
# Generates HTML documentation from DrupalXML (DXML) format
#
# This script has been written for Ivy usage, and may contain things specific to Ivy
#
# The performances are also very poor, I don't know if it's ruby or my fault (certainly mine, I'm still
# a ruby newbie), but since this generation doesn't occur too often for Ivy, this is fine
#
# Note also that I had to modify the export_dxml module of drupal to put the node path in the xml
# file (since we use heavily the url alias feature of drupal).
#
# This modification is as simple as adding the following lines in
# book_node_visitor_dxml_pre - $Id: export_dxml.module,v 1.3 2005/11/29 19:28:10 puregin Exp $:
# // check if we have an alias
# $path = "node/$node->nid";
#
# $result = db_query("SELECT dst FROM {url_alias} WHERE src = '%s'", $path);
# if (db_num_rows($result)) {
# $node->path = db_result($result);
# } else {
# $node->path = $path;
# }
# $output .= " path='" . $node->path . "'";
#
# Note that this only work if the path module is activated (due to the use of the url_alias table
#
require 'FileUtils'
require 'rexml/document'
include REXML
class DxmlToHtml
##
# initialise a dxml to html converter
#
# site is the web site on which relative links not part of the book should be redirected, with no trailing slash
# template if the template file to use, look template.html for an example (tokens are of the form #{token}
# ext is the extension to append to the generated files and links
def initialize(site, template, ext = "html")
@site = site
@template = template
@ext = ext
end
private
def process_template(tpl, fields, dest)
ptpl = tpl.dup
ptpl.gsub!(/#\{([^\}]+)\}/) {|s| fields[$1]}
f = File.new(dest, 'w')
f.puts ptpl
f.close
end
def gen_navigation(node, path = nil, pathdepth = node.elements["nodeinfo"].attributes['path'].count('/'))
if (!path)
path = Array.new
while node.parent
path.push node
node = node.parent
end
end
content = '<ul class="menu">'
node = path.pop
node.each_element("./node") do |child|
if child.elements["./node"]
if (child == path.last)
clss = 'expanded'
else
clss = 'collapsed'
end
else
clss = 'leaf'
end
content += '<li class="'+clss+'"><a href="'+ ("../" * pathdepth + child.elements["nodeinfo"].attributes['path']+"."+@ext) +'">'+child.elements["title"].text+'</a>'
if (child == path.last)
content += gen_navigation(node,path,pathdepth)
end
content += "</li>"
end
content += "</ul>"
return content
end
public
##
# generates html files from a DXML file into the speficied directory
# Note that if files already exist in the target directory they will be overwritten!
#
# A file will be created for each node in the DXML file, the name of the file being the path
# of the node + .ext (where ext is configured in the object instanciation).
#
# All hyperlinks are processed so that any link to another page of the book will be automatically
# converted to a relative link in the generated files.
#
# Other site relative links are prefixed with the site configured in the object instanciation,
# external absolute links are kept as is.
#
# Links processing only works with absolute path on the site (/ivy/doc/conf, for instance), and not
# with relative path, or full absolute path (like http://www.jayasoft.org/ivy).
#
def gen(book, todir)
puts "reading template..."
tpl = IO.readlines(@template).join()
puts "parsing dxml (#{book})..."
doc = Document.new(File.new(book))
root = doc.root
puts "starting generation..."
root.each_element("//node") do |node|
path = node.elements["nodeinfo"].attributes['path']
pathdepth = path.count("/")
node_file_path = todir+"/"+path+"."+@ext
puts "generating #{node_file_path}"
FileUtils.mkdir_p(File.dirname(node_file_path))
title = node.elements["title"].text
base = "../" * pathdepth
content = node.elements["content"].cdatas.to_s
content.gsub!(/href="\/([^"]+)"/) do |s|
if root.elements["//nodeinfo[@path='"+$1+"']"]
'href="'+base+$1 +'.'+@ext+'"'
else
'href="'+@site + '/' +$1+'"'
end
end
navigation = gen_navigation(node)
process_template(tpl, {
'path' => path,
'base' => base,
'title' => title,
'navigation' => navigation,
'content' => content
}, node_file_path)
end
end
end
puts "starting generator"
g = DxmlToHtml.new("http://www.jayasoft.org", "src/doc/template.html")
g.gen("src/doc/ivy-book.xml", "doc")

107
src/doc/template.html Normal file
View File

@ -0,0 +1,107 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>#{title} | Ivy</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" media="all">@import "#{base}style/drupal.css";</style>
<style type="text/css" media="all">@import "#{base}style/vim.css"</style>
<style type="text/css" media="all">@import "#{base}style/style.css";</style>
<style type="text/css" media="all">@import "#{base}style/codefilter.css";</style>
<style type="text/css" media="all">@import "#{base}style/quote.css";</style>
<style type="text/css" media="all">@import "#{base}style/color.css";</style>
</head>
<body bgcolor="#ffffff">
<div id="body">
<table id="header" summary="Navigation elements." border="0"
cellpadding="0" cellspacing="0" width="100%">
<tr>
<td id="home" width="30%"><a href="http://www.jayasoft.org/"
title="Home"><img src="#{base}images/jayasoft.png" alt="Jayasoft.org"
border="0" /></a></td>
<td class="product" width="70%" align="right" valign="middle"><img
src="#{base}images/logo.png" alt="ivy" border="0" /></td>
</tr>
</table>
<table id="top-menu" summary="Navigation elements." border="0"
cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
<div id="navcontainer">
<ul id="nav">
<li><a href="#{base}index.html">Documentation</a></li>
<li><a href="#{base}ivy/api/index.html">Javadoc</a></li>
<li><a href="#{base}ivy/test-report/index.html">Test results</a></li>
<li><a href="http://www.jayasoft.org/ivy">Web site</a></li>
<li><a href="http://www.jayasoft.org/forum/ivy/core">Forum</a></li>
<li><a href="http://www.jayasoft.org/contribute">Contribute</a></li>
</ul>
</div>
</td>
<td align="right" valign="middle">
<form action="/" method="post" id="search_theme_form">
<div><div id="search" class="container-inline"><div class="form-item">
<input type="text" maxlength="128" name="edit[search_theme_form_keys]" id="edit-search_theme_form_keys" size="15" value="" title="Enter the terms you wish to search for." class="form-text" />
</div>
<input type="submit" name="op" value="Search" class="form-submit" />
<input type="hidden" name="edit[form_id]" id="edit-search-theme-form" value="search_theme_form" />
</div>
</div></form>
</td>
</tr>
</table>
<table id="content" border="0" cellpadding="0" cellspacing="0"
width="100%">
<tr>
<td id="sidebar-left">
<div class="block block-book" id="block-book-0">
<h2>Ivy Documentation</h2>
<div class="content">#{navigation}</div>
</div>
</td>
<td valign="top">
<div id="main">
<h1 class="title">#{title} <a href="http://www.jayasoft.org/#{path}"><img src="#{base}images/discovery.gif" alt="view online" title="view online"/></a></h1>
#{content}
</div><!-- main -->
</td>
</tr>
</table>
<table id="footer-menu" summary="Navigation elements." border="0"
cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" valign="middle">
<div class="primary-links">::
<a href="#{base}index.html">Home</a> ::
<a href="http://www.jayasoft.org/ivy">Web site</a> ::
<a href="http://www.jayasoft.org/forum/ivy/core">Forum</a> ::
<a href="http://www.jayasoft.org/contribute">Contribute</a> ::
</div>
</td>
</tr>
</table>
<div id="footer-message"></div>
</div><!-- body -->
</body>
</html>