From d4d4ffe9e8c7f2c5d11c0c986c2b577c09cfaf20 Mon Sep 17 00:00:00 2001 From: Xavier Hanin Date: Mon, 21 Aug 2006 04:47:06 +0000 Subject: [PATCH] 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 --- CHANGES.txt | 1 + build.properties | 7 +- build.xml | 12 + doc/images/background.png | Bin 0 -> 17081 bytes doc/images/grippie.png | Bin 0 -> 162 bytes doc/images/jayasoft.png | Bin 0 -> 12206 bytes doc/images/logo.png | Bin 0 -> 9085 bytes doc/images/menu-collapsed.png | Bin 0 -> 108 bytes doc/images/menu-expanded.png | Bin 0 -> 106 bytes doc/images/menu-leaf.png | Bin 0 -> 194 bytes doc/index.html | 11 +- doc/style/ant.css | 38 ++ doc/style/codefilter.css | 5 + doc/style/color.css | 142 +++++++ doc/style/drupal.css | 684 ++++++++++++++++++++++++++++++++++ doc/style/ivy-ref.css | 72 ++++ doc/style/nav.css | 96 +++++ doc/style/quote.css | 13 + doc/style/shell.css | 3 + doc/style/style.css | 248 ++++++++++++ doc/style/vim.css | 19 + doc/style/xmlverbatim.css | 13 + src/doc/dxml_to_html.rb | 151 ++++++++ src/doc/template.html | 107 ++++++ 24 files changed, 1611 insertions(+), 11 deletions(-) create mode 100644 doc/images/background.png create mode 100644 doc/images/grippie.png create mode 100644 doc/images/jayasoft.png create mode 100644 doc/images/logo.png create mode 100644 doc/images/menu-collapsed.png create mode 100644 doc/images/menu-expanded.png create mode 100644 doc/images/menu-leaf.png create mode 100644 doc/style/ant.css create mode 100644 doc/style/codefilter.css create mode 100644 doc/style/color.css create mode 100644 doc/style/drupal.css create mode 100644 doc/style/ivy-ref.css create mode 100644 doc/style/nav.css create mode 100644 doc/style/quote.css create mode 100644 doc/style/shell.css create mode 100644 doc/style/style.css create mode 100644 doc/style/vim.css create mode 100644 doc/style/xmlverbatim.css create mode 100644 src/doc/dxml_to_html.rb create mode 100644 src/doc/template.html diff --git a/CHANGES.txt b/CHANGES.txt index e1a84b26..32fa6688 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -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) diff --git a/build.properties b/build.properties index 04c1dbea..2ccc238c 100644 --- a/build.properties +++ b/build.properties @@ -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 diff --git a/build.xml b/build.xml index 34185c8e..823cd58f 100644 --- a/build.xml +++ b/build.xml @@ -147,6 +147,18 @@ + + + + + + + + + + + + diff --git a/doc/images/background.png b/doc/images/background.png new file mode 100644 index 0000000000000000000000000000000000000000..761da5ae50b2f5230bc937867cd71a15a0d1afef GIT binary patch literal 17081 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 literal 0 HcmV?d00001 diff --git a/doc/images/grippie.png b/doc/images/grippie.png new file mode 100644 index 0000000000000000000000000000000000000000..d863dc75d20bb22040ef29c777e705e6cb91229e GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3>?NMQuIyKNr1_ck-SdrEfI?xO zE{-7@=ht31$a{c+g*9Muv_A`T#3JJ>D?>92U)cXW(#>IUt#SU!nQJpFT;{A?)mHqy zG3|Pw;LezGZR7OsmDy#L<~p%UUB0|pWS=o}YTe~~XX|w>8UHQ+cj~oGPa4n$22WQ% Jmvv4FO#rJyIb#3- literal 0 HcmV?d00001 diff --git a/doc/images/jayasoft.png b/doc/images/jayasoft.png new file mode 100644 index 0000000000000000000000000000000000000000..75f437a502f8dbe0cd3ed121c6c735c5bd551367 GIT binary patch literal 12206 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 SNA5wu*XdJM#&1p%V*d~R^D9gM literal 0 HcmV?d00001 diff --git a/doc/images/logo.png b/doc/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4baf170472404e9bf3d4ac7d1a9e4c3742141fba GIT binary patch literal 9085 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 literal 0 HcmV?d00001 diff --git a/doc/images/menu-collapsed.png b/doc/images/menu-collapsed.png new file mode 100644 index 0000000000000000000000000000000000000000..95a214a6e6d17fee2f098804997f3826ffc9d4ca GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j@3?%=}IXVGIu?6^qxc>kDAIJlF_r}R z1v5B2yO9Ruh>$j@3?%=}IXVGIu?6^qxc>kDAIJlF_r}R z1v5B2yO9Ru2zk0VhE&W+{&76uaKb@_0}N~oA{!VF-#vS9IZ&3t)78&qol`;+0EMF; ATL1t6 literal 0 HcmV?d00001 diff --git a/doc/images/menu-leaf.png b/doc/images/menu-leaf.png new file mode 100644 index 0000000000000000000000000000000000000000..827ba08543e4eedac351c413b22b1f787bb4b946 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+3?x7IEPn{3SkfJR9T^y|-MHc(VFct$mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&P5AX?bJ#gT_{{8#AySsq`|Ns9# z7<#w`$YL!C@(TuX|1xt*bbftf*YGQ$GzyDvn6dKf%i{an^LB{Ts59yvc& literal 0 HcmV?d00001 diff --git a/doc/index.html b/doc/index.html index f8c46cd4..03d65705 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1,13 +1,6 @@ - -Ivy Documentation Index + - -

Welcome to Ivy documentation index !

- Here is what you can find in this documentation:
- - Main documentation
- - Javadoc
- - JUnit tests report
- \ No newline at end of file + \ No newline at end of file diff --git a/doc/style/ant.css b/doc/style/ant.css new file mode 100644 index 00000000..61b83a4f --- /dev/null +++ b/doc/style/ant.css @@ -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%; +} diff --git a/doc/style/codefilter.css b/doc/style/codefilter.css new file mode 100644 index 00000000..a90d6c91 --- /dev/null +++ b/doc/style/codefilter.css @@ -0,0 +1,5 @@ +div.codeblock { + padding: 5px; + border: 1px solid #CCC; + background-color: #EEE; +} diff --git a/doc/style/color.css b/doc/style/color.css new file mode 100644 index 00000000..4720a5df --- /dev/null +++ b/doc/style/color.css @@ -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; +} diff --git a/doc/style/drupal.css b/doc/style/drupal.css new file mode 100644 index 00000000..c0b7f2f1 --- /dev/null +++ b/doc/style/drupal.css @@ -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; +} diff --git a/doc/style/ivy-ref.css b/doc/style/ivy-ref.css new file mode 100644 index 00000000..eb0f03ce --- /dev/null +++ b/doc/style/ivy-ref.css @@ -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%; +} diff --git a/doc/style/nav.css b/doc/style/nav.css new file mode 100644 index 00000000..2da03fbb --- /dev/null +++ b/doc/style/nav.css @@ -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; +} diff --git a/doc/style/quote.css b/doc/style/quote.css new file mode 100644 index 00000000..17d98458 --- /dev/null +++ b/doc/style/quote.css @@ -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; +} \ No newline at end of file diff --git a/doc/style/shell.css b/doc/style/shell.css new file mode 100644 index 00000000..e454d7df --- /dev/null +++ b/doc/style/shell.css @@ -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;} diff --git a/doc/style/style.css b/doc/style/style.css new file mode 100644 index 00000000..a33caafa --- /dev/null +++ b/doc/style/style.css @@ -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; +} diff --git a/doc/style/vim.css b/doc/style/vim.css new file mode 100644 index 00000000..cd3df1f8 --- /dev/null +++ b/doc/style/vim.css @@ -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 } + diff --git a/doc/style/xmlverbatim.css b/doc/style/xmlverbatim.css new file mode 100644 index 00000000..dfa3f2a7 --- /dev/null +++ b/doc/style/xmlverbatim.css @@ -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 } + diff --git a/src/doc/dxml_to_html.rb b/src/doc/dxml_to_html.rb new file mode 100644 index 00000000..5b830726 --- /dev/null +++ b/src/doc/dxml_to_html.rb @@ -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 = '" + 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") diff --git a/src/doc/template.html b/src/doc/template.html new file mode 100644 index 00000000..93477db6 --- /dev/null +++ b/src/doc/template.html @@ -0,0 +1,107 @@ + + + +#{title} | Ivy + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + + + + + +
+
+ +

#{title} view online

+ #{content} +
+
+ + + + + + + + + + + + +
+ + +