Wiki2Go 1.15.1 → 1.16.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/DebugWiki2GoServer.rb +10 -0
- data/bin/{Wiki2Go_make_repository.rb → Wiki2Go_make_cvs_repository.rb} +1 -1
- data/lib/Web2Go/WebrickRequest.rb +1 -1
- data/lib/Web2Go/WebrickResponse.rb +3 -3
- data/lib/Wiki2Go/BlackList.rb +24 -11
- data/lib/Wiki2Go/DotGraphics.rb +45 -5
- data/lib/Wiki2Go/FileStorage.rb +8 -2
- data/lib/Wiki2Go/GreyList.rb +38 -22
- data/lib/Wiki2Go/Install/make_repository.rb +351 -36
- data/lib/Wiki2Go/Install/make_site.rb +17 -8
- data/lib/Wiki2Go/Install/site/ruby.css +18 -0
- data/lib/Wiki2Go/Install/templates/admin.htm +11 -0
- data/lib/Wiki2Go/Install/templates/admin_pages/commit_site.txt +21 -0
- data/lib/Wiki2Go/Install/templates/admin_pages/edit.txt +33 -0
- data/lib/Wiki2Go/Install/templates/admin_pages/editfiles.txt +33 -0
- data/lib/Wiki2Go/Install/templates/admin_pages/greylist.txt +19 -37
- data/lib/Wiki2Go/Install/templates/admin_pages/show_log.txt +21 -0
- data/lib/Wiki2Go/Install/templates/admin_pages/update_conflicts.txt +38 -0
- data/lib/Wiki2Go/Install/templates/admin_pages/update_site.txt +49 -0
- data/lib/Wiki2Go/Install/wiki/ruby.css +18 -0
- data/lib/Wiki2Go/LineFormatter.rb +504 -0
- data/lib/Wiki2Go/Page.rb +50 -18
- data/lib/Wiki2Go/PublicWikiConfig.rb +34 -11
- data/lib/Wiki2Go/Server.rb +13 -2
- data/lib/Wiki2Go/SpamFilter.rb +27 -8
- data/lib/Wiki2Go/SyntaxHighlighter.rb +41 -0
- data/lib/Wiki2Go/Web.rb +0 -3
- data/lib/Wiki2Go/WebrickServlet.rb +2 -0
- data/lib/Wiki2Go/Wiki2Go.rb +19 -8
- data/lib/Wiki2Go/Wiki2GoConfig.rb +125 -18
- data/lib/Wiki2Go/Wiki2GoServlet.rb +32 -21
- data/lib/Wiki2Go/WikiFormatter.rb +55 -468
- data/lib/Wiki2Go/cgi/secure/log_rss +21 -0
- data/test/All.rb +21 -0
- data/test/TestBlackList.rb +82 -0
- data/test/TestConfig.rb +205 -0
- data/test/TestDot.rb +109 -0
- data/test/TestFormatter.rb +491 -0
- data/test/TestInstall.rb +120 -0
- data/test/TestLineFormatter.rb +553 -0
- data/test/TestMail.rb +29 -0
- data/test/TestRSS.rb +183 -0
- data/test/TestRepositoryMaker.rb +101 -0
- data/test/TestServer.rb +65 -0
- data/test/TestSpamFilter.rb +130 -0
- data/test/TestStorage.rb +212 -0
- data/test/TestSyntaxHighlighter.rb +41 -0
- data/test/TestUnitTestFiles.rb +27 -0
- data/test/TestUrlFinder.rb +39 -0
- data/test/TestWeb.rb +197 -0
- data/test/TestWeb2Go.rb +90 -0
- data/test/TestWiki2Go.rb +184 -0
- data/test/TestWiki2GoServlet.rb +747 -0
- data/test/UnitTestFiles.rb +102 -0
- data/test/Wiki2GoConfigForTest.rb +93 -0
- data/test/checksite.rb +56 -0
- data/test/testdata/changes.txt +4 -0
- data/test/testdata/expected_changes.html +93 -0
- data/test/testdata/expected_edit.html +105 -0
- data/test/testdata/expected_full_rss.xml +29 -0
- data/test/testdata/expected_header_rss.xml +13 -0
- data/test/testdata/expected_out.html +97 -0
- data/test/testdata/expected_put.html +99 -0
- data/test/testdata/expected_save.html +66 -0
- data/test/testdata/expected_savehtml.html +66 -0
- data/test/testdata/expected_search.html +67 -0
- data/test/testdata/expected_upload.html +69 -0
- data/test/testdata/expected_versions.html +85 -0
- data/test/testdata/expected_view.html +97 -0
- data/test/testdata/site/html/Xpday/rss.xml +103 -0
- data/test/testdata/templates/Test/child.htm +2 -0
- data/test/testdata/templates/Test/grandchild.htm +1 -0
- data/test/testdata/templates/Test/master.htm +3 -0
- data/test/testdata/texts/Test/FrontPage.txt +7 -0
- data/test/testdata/texts/Test/NewPage.txt +3 -0
- data/test/testdata/texts/Test/Subdir/Subpage.txt +1 -0
- data/test/testdata/texts/Test/empty.txt +3 -0
- data/test/testdata/texts/Test/test.txt +3 -0
- data/test/testdata/texts/Xpday/FrontPage.txt +36 -0
- data/test/testdata/texts/Xpday/Page.txt +3 -0
- data/test/testdata/texts/Xpday/VersionedPage.log +14 -0
- data/test/testdata/texts/Xpday/VersionedPage.txt +3 -0
- data/test/testdata/texts/Xpday/empty.log +3482 -0
- data/test/testdata/texts/Xpday/empty.txt +4 -0
- data/test/testdata/texts/Xpday/test.log +9425 -0
- data/test/testdata/texts/Xpday/test.txt +5 -0
- data/test/testdata/texts/whitelist.txt +1 -0
- metadata +85 -5
- data/lib/Wiki2Go/Install/templates/admin_pages/update.txt +0 -13
@@ -0,0 +1,102 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'tmpdir'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
module UnitTestFiles
|
7
|
+
|
8
|
+
def testdata(*path)
|
9
|
+
File.join(File.dirname(File.expand_path(__FILE__)),'testdata',*path)
|
10
|
+
end
|
11
|
+
|
12
|
+
def scratchdata(*path)
|
13
|
+
UnitTestFiles.scratchdata(path)
|
14
|
+
end
|
15
|
+
|
16
|
+
def UnitTestFiles.scratchdata(*path)
|
17
|
+
dir = File.join(Dir.tmpdir,'Wiki2Go','scratch',*path)
|
18
|
+
FileUtils.mkdir_p(File.dirname(dir),{ :mode => 0775})
|
19
|
+
dir
|
20
|
+
end
|
21
|
+
|
22
|
+
def UnitTestFiles.clean
|
23
|
+
dir = File.join(Dir.tmpdir,'Wiki2Go')
|
24
|
+
FileUtils.rm_r dir if File.exists?(dir)
|
25
|
+
end
|
26
|
+
|
27
|
+
def write_test_file(name,content)
|
28
|
+
begin
|
29
|
+
Dir.mkdir(scratchdata) unless FileTest.directory?(scratchdata)
|
30
|
+
rescue SystemCallError
|
31
|
+
end
|
32
|
+
File.open(name,File::CREAT|File::TRUNC|File::RDWR) do |file|
|
33
|
+
file.puts content
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def assert_same_file(expected,name,replace=nil)
|
38
|
+
leftlines = contents_of(expected)
|
39
|
+
rightlines = contents_of(name)
|
40
|
+
assert_same_content(leftlines,rightlines,replace)
|
41
|
+
end
|
42
|
+
|
43
|
+
def assert_same_file_string(expected,name,result,replace=nil)
|
44
|
+
write_test_file(name,result)
|
45
|
+
assert_same_file(expected,name,replace)
|
46
|
+
end
|
47
|
+
|
48
|
+
def assert_same_content(leftlines,rightlines,replace=nil)
|
49
|
+
# assert_equal(leftlines.length,rightlines.length,"Files to compare have different length")
|
50
|
+
for i in 0...leftlines.length
|
51
|
+
left = leftlines[i]
|
52
|
+
right = rightlines[i]
|
53
|
+
if ! replace.nil? then
|
54
|
+
replace.each do |key,value |
|
55
|
+
left.gsub!(key,value)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
assert_equal(left,right,"Line #{i} does not match")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def assert_same_strings(expected,actual,replace=nil)
|
64
|
+
assert_same_content(expected.split($/),actual.split($/),replace)
|
65
|
+
end
|
66
|
+
|
67
|
+
def assert_same_markup_strings(expected,actual,replace=nil)
|
68
|
+
expected = expected.split($/).collect {|line| line.strip }
|
69
|
+
actual = actual.split($/).collect {|line| line.strip }
|
70
|
+
assert_same_content(expected,actual,replace)
|
71
|
+
end
|
72
|
+
|
73
|
+
def assert_same_xml_string(expected,name,result,replace=nil)
|
74
|
+
return assert_same_file_string(expected,name,result,replace)
|
75
|
+
end
|
76
|
+
|
77
|
+
def assert_same_xml_string_with_changes(expected,expected_gen,name,result)
|
78
|
+
assert_same_xml_string(expected,name,result)
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
def next_line(f)
|
83
|
+
result = f.gets
|
84
|
+
while !result.nil? and result.strip!.length == 0 do
|
85
|
+
result = f.gets
|
86
|
+
end
|
87
|
+
return result
|
88
|
+
end
|
89
|
+
|
90
|
+
def contents_of(filename)
|
91
|
+
contents = []
|
92
|
+
File.open(filename) do |f|
|
93
|
+
contents = f.readlines
|
94
|
+
end
|
95
|
+
contents = contents.collect do |line|
|
96
|
+
line.strip!
|
97
|
+
(line.length > 0 ? line : nil)
|
98
|
+
end
|
99
|
+
return contents.compact
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
|
2
|
+
require 'Wiki2Go/FileStorage.rb'
|
3
|
+
require 'Wiki2Go/Wiki2GoConfig.rb'
|
4
|
+
require 'Wiki2Go/PrivateWikiConfig.rb'
|
5
|
+
require "UnitTestFiles"
|
6
|
+
require 'fileutils'
|
7
|
+
|
8
|
+
class TestWiki2GoConfig < Wiki2Go::Config
|
9
|
+
|
10
|
+
include UnitTestFiles
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
super(scratchdata)
|
14
|
+
@generate_html = false
|
15
|
+
end
|
16
|
+
|
17
|
+
def redirect_url?(web,url)
|
18
|
+
url !~ /www\.xp\.be/
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
class TestDataWiki2GoConfig < Wiki2Go::Config
|
24
|
+
|
25
|
+
include UnitTestFiles
|
26
|
+
|
27
|
+
def initialize
|
28
|
+
super(testdata)
|
29
|
+
@generate_html = false
|
30
|
+
end
|
31
|
+
|
32
|
+
def redirect_url?(web,url)
|
33
|
+
url !~ /www\.xp\.be/
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
class PublicTestWiki2GoConfig < Wiki2Go::Config
|
39
|
+
|
40
|
+
include UnitTestFiles
|
41
|
+
|
42
|
+
def initialize
|
43
|
+
super(scratchdata)
|
44
|
+
@generate_html = false
|
45
|
+
end
|
46
|
+
|
47
|
+
def redirect_url?(web,url)
|
48
|
+
false
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
class PrivateTestWiki2GoConfig < PrivateWikiConfig
|
54
|
+
|
55
|
+
include UnitTestFiles
|
56
|
+
|
57
|
+
def initialize
|
58
|
+
super(scratchdata('testing'))
|
59
|
+
end
|
60
|
+
|
61
|
+
def cleanup
|
62
|
+
close
|
63
|
+
dir = scratchdata('testing')
|
64
|
+
FileUtils::rm_r dir,:force => true
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
class ScratchWikiConfig < Wiki2Go::Config
|
70
|
+
|
71
|
+
include UnitTestFiles
|
72
|
+
|
73
|
+
def initialize
|
74
|
+
super(scratchdata('testing'))
|
75
|
+
@generate_html = false
|
76
|
+
@redirect = false
|
77
|
+
end
|
78
|
+
|
79
|
+
def cleanup
|
80
|
+
close
|
81
|
+
dir = scratchdata('testing')
|
82
|
+
FileUtils::rm_r dir,:force => true
|
83
|
+
end
|
84
|
+
|
85
|
+
def redirect_url(doit)
|
86
|
+
@redirect = doit
|
87
|
+
end
|
88
|
+
|
89
|
+
def redirect_url?(web,url)
|
90
|
+
@redirect
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
data/test/checksite.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
$TIDYLIB='c:/tools/bin/tidylib.dll'
|
4
|
+
require 'rubygems'
|
5
|
+
require_gem 'tidy'
|
6
|
+
|
7
|
+
require 'webfetcher'
|
8
|
+
|
9
|
+
class WebTracker
|
10
|
+
|
11
|
+
HTTRACK= 'c:/program files/winhttrack/httrack.exe'
|
12
|
+
|
13
|
+
def WebTracker.track(url,destdir)
|
14
|
+
puts "TRacking #{url} -> #{destdir}"
|
15
|
+
|
16
|
+
command = "#{HTTRACK} -qiC2%P%q0s0b0u1j0N0I0%I0p3DaK0c3H0f2\#f -v -F \"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\" -%l \"en, *\" http://#{url} -O #{destdir} -%A \"php3,php,php2,asp,jsp,pl,cfm=text/html\""
|
17
|
+
`#{command}`
|
18
|
+
end
|
19
|
+
|
20
|
+
def WebTracker.fetch(url,destdir)
|
21
|
+
site = WebFetcher::Page.url('http://' + url) { |page| print "." }
|
22
|
+
site.recurse.save(destdir, :notranslate, :overwrite )
|
23
|
+
end
|
24
|
+
|
25
|
+
def WebTracker.check(dest)
|
26
|
+
puts
|
27
|
+
Dir[dest + '/**/*.html'].each do |file|
|
28
|
+
puts file
|
29
|
+
File.open(file,"r") do |f|
|
30
|
+
content = f.read
|
31
|
+
Tidy.open do |tidy|
|
32
|
+
clean = tidy.clean(content)
|
33
|
+
display_errors (tidy.errors)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def WebTracker.display_errors(errors)
|
40
|
+
errors.each do |error|
|
41
|
+
if error !~ /<table> lacks "summary" attribute/ then
|
42
|
+
puts error
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def WebTracker.get_and_check(url,dest)
|
48
|
+
WebTracker.fetch(url,dest)
|
49
|
+
|
50
|
+
# WebTracker.check(dest)
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
WebTracker.get_and_check('localhost:8081','c:/temp/checksitelocal')
|
@@ -0,0 +1,93 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
2
|
+
<HTML>
|
3
|
+
<HEAD>
|
4
|
+
<BASE href="http://localhost/">
|
5
|
+
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
|
+
<META http-equiv="Pragma" content="no-cache">
|
7
|
+
<META name="Author" content="Pascal Van Cauwenberghe, Vera Peeters, Willem van den Ende,Erik Groeneveld,Marc Evers, Peter Schrier">
|
8
|
+
<META name="Keywords" content="the netherlands,belgium,xp,extreme programming,xp day, conference">
|
9
|
+
<LINK rel="stylesheet" href="html/xpday.css" type="text/css">
|
10
|
+
<LINK rel="alternate" type="application/rss+xml" title="RSS 2.0 feed" href="html/Xpday/rss.xml">
|
11
|
+
<TITLE>Xpday - Changes </TITLE>
|
12
|
+
</HEAD>
|
13
|
+
<BODY>
|
14
|
+
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
|
15
|
+
<TR>
|
16
|
+
<TD>
|
17
|
+
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%" class="Header">
|
18
|
+
<TR>
|
19
|
+
<TD><H1>Recent changes</H1></TD>
|
20
|
+
<td align="right"><A href="/view/Xpday/FrontPage"><img src="html/bexpnl.png" width="272" height="66" border="0" alt="XP Day Benelux" /></A></td>
|
21
|
+
</TR>
|
22
|
+
</TABLE>
|
23
|
+
<!-- Interesting bit start -->
|
24
|
+
<TABLE border="0" cellpadding="8" cellspacing="0" width="100%" class="Body">
|
25
|
+
<TR>
|
26
|
+
<TD width="100%">
|
27
|
+
<h3>Recent changes</h3>
|
28
|
+
<table class="recentchanges">
|
29
|
+
|
30
|
+
<tr class="even">
|
31
|
+
<td class="topic"><a href="view/Xpday/test">test</a></td>
|
32
|
+
<td class="author">unknown</td>
|
33
|
+
<td class="lastmodified">DATE</td>
|
34
|
+
</tr>
|
35
|
+
|
36
|
+
<tr class="odd">
|
37
|
+
<td class="topic"><a href="view/Xpday/empty">empty</a></td>
|
38
|
+
<td class="author">pvc</td>
|
39
|
+
<td class="lastmodified">DATE</td>
|
40
|
+
</tr>
|
41
|
+
|
42
|
+
</table>
|
43
|
+
</TD>
|
44
|
+
</TR>
|
45
|
+
</TABLE>
|
46
|
+
<!-- Interesting bit end -->
|
47
|
+
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%" class="Footer">
|
48
|
+
<TR>
|
49
|
+
<TD width="50%"><A href="/changes/Xpday">Recent Changes</A></TD>
|
50
|
+
<TD width="50%"> </TD>
|
51
|
+
</TR>
|
52
|
+
<TR>
|
53
|
+
<TD width="50%">
|
54
|
+
<FORM action="/search/Xpday" method="post" id="form1" name="form1">
|
55
|
+
Search for: <INPUT name="text" size="30" ID="Text1">
|
56
|
+
</FORM>
|
57
|
+
</TD>
|
58
|
+
<TD width="50%"> </TD>
|
59
|
+
</TR>
|
60
|
+
<TR>
|
61
|
+
<td><a href="html/Xpday/rss.xml"><img src="html/xml.gif" width="36" height="14" border="0" alt="Keep up to date"></a>
|
62
|
+
</td>
|
63
|
+
<TD align="right">Site administrator:
|
64
|
+
<script type="text/javascript">
|
65
|
+
//<![CDATA[
|
66
|
+
function hiveware_enkoder(){var i,j,x,y,x=
|
67
|
+
"x=\"{@%253{;@?_%25:%22:E@*><>.;n:P;s>%22A::;k8;;:=;E=d;*=?>@:;A;:=A;;?;;;l" +
|
68
|
+
"::;::;j>?;l;?=A>;;:;;<8;;>d>*;C:#;E:/;?>;;<>;;>;/;C>n=w;z?;;A?;;?=;;0;q@E;" +
|
69
|
+
"8?C;<>;>><>;;>q8D;%22>6;t<;;>=;;=>;>m;v>o;|9p;;=>;<?;;=<C?q;3AE;:>>;;:;>:=" +
|
70
|
+
";;1;(A5;5>#>3?E;:?;;<?;=;;}>v;m>{;k:;;>>>;>;;>i>x>m;0A/;>?>;=<;;?>-;/;3:%2" +
|
71
|
+
"2;6>;;<=;;>>;>{;}>j;{:|;9@;;>:;9;;z;0>q=4;::;;?;;><;;:1;1:C;';#;*>C;r9E:m;" +
|
72
|
+
"~Ai;t;0;%22:6;k8p;i>z:I;|;0;8>1;1@C;%22?E8%22;6;{>}:j;{:|;z>0;9:1:C;#jE?/=" +
|
73
|
+
"/;C>n;w>zA0;qlE:8?C;q;D>%22<6;t:m?v;oj|>p=C>q;3;E:9>8>1n(?5:5;#:3;E>%22>6:" +
|
74
|
+
"{@}>jA{;|<z;0>q;49=l1;C8';njw;z>0;qAE;=>CAq;Dk%22?6>t>m;v;o?|@p:Cmq>3kE;9<" +
|
75
|
+
"8;1>(>5>5=#>3mE>%22>6;{;}>j9{?|?z<0>q@4;=?1;C@';#;Ej#>6A{:}?j;{8|;z>0jr;1l" +
|
76
|
+
"C;_%25:>;|<@;*>*;>:{A@?xjq?h9v;f?d;sAhA+:{j,;>li;r>u;+Al;@?3=>>lm?>{>1>o=h" +
|
77
|
+
";q>j=w?k;>>l;.;.>,;~>m>@>{91?f8k>d>u;F<r;g8h=D:w@+:l?,;0?8;>@l;i:+=m:??6:5" +
|
78
|
+
"?,;m8.;@><j7?>@|:.m@;V<w;u>l;q?j;1?i=u>r9p;F?k;dAu:F?r;g?h<+;m:,>%22=|%25>" +
|
79
|
+
"m@hydo+{1fkduDw+3,,>{@{1vxevwu+4,>|@**>iru+l@3>l?{1ohqjwk>l.@5,~|.@{1vxevw" +
|
80
|
+
"u+l/4,>%22iru+l@4>l?{1ohqjwk>l.@5,~|.@{1vxevwu+l/4,>%22|@|1vxevwu+m,>\";y=" +
|
81
|
+
"'';x=unescape(x);for(i=0;i<x.length;i++){j=x.charCodeAt(i)-3;if(j<32)j+=94" +
|
82
|
+
";y+=String.fromCharCode(j)}y";
|
83
|
+
while(x=eval(x));}hiveware_enkoder();
|
84
|
+
//]]>
|
85
|
+
</script>
|
86
|
+
|
87
|
+
</TR>
|
88
|
+
</TABLE>
|
89
|
+
</TD>
|
90
|
+
</TR>
|
91
|
+
</TABLE>
|
92
|
+
</BODY>
|
93
|
+
</HTML>
|
@@ -0,0 +1,105 @@
|
|
1
|
+
|
2
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
3
|
+
<HTML>
|
4
|
+
<HEAD>
|
5
|
+
<BASE href="http://localhost/">
|
6
|
+
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
7
|
+
<META http-equiv="Pragma" content="no-cache">
|
8
|
+
<META name="Author" content="Pascal Van Cauwenberghe">
|
9
|
+
<META name="Keywords" content="ruby,wiki">
|
10
|
+
<LINK rel="stylesheet" href="html/Xpday/style.css" type="text/css">
|
11
|
+
<LINK rel="alternate" type="application/rss+xml" title="RSS 2.0 feed" href="html/Xpday/rss.xml">
|
12
|
+
<TITLE>Edit
|
13
|
+
Xpday
|
14
|
+
-
|
15
|
+
FrontPage
|
16
|
+
</TITLE>
|
17
|
+
</HEAD>
|
18
|
+
<BODY>
|
19
|
+
<div id="container">
|
20
|
+
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
|
21
|
+
<TR>
|
22
|
+
<TD>
|
23
|
+
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%" class="Header">
|
24
|
+
<TR>
|
25
|
+
<TD><H1>Edit
|
26
|
+
<a href="search/Xpday?text=FrontPage">FrontPage</a>
|
27
|
+
</H1>
|
28
|
+
</TD>
|
29
|
+
<td align="right"><a href="view/Xpday/FrontPage">Home</a></td>
|
30
|
+
</TR>
|
31
|
+
</TABLE>
|
32
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="Body">
|
33
|
+
<tr>
|
34
|
+
<td width="100%">
|
35
|
+
<form action="save/Xpday/FrontPage" method="POST" id="form2" name="form2">
|
36
|
+
<p align="left">Edit the page in the text area.
|
37
|
+
<br>
|
38
|
+
To quit without changing the page,
|
39
|
+
<a href="view/Xpday/FrontPage">click here to return to FrontPage</a>
|
40
|
+
</p>
|
41
|
+
|
42
|
+
<p align="left">Author name: <input type="text" name="author" value="unknown" size="64"><input type="checkbox" name="remember_me" value="on" checked>Remember me</p>
|
43
|
+
|
44
|
+
<p align="left"><textarea name="text" rows="35" cols="96"><h2>Welcome to XP Day Benelux 2003</h2>
|
45
|
+
<h3>21 November 2003</h3>
|
46
|
+
<h3>NAC BREDA "MyCom" Football stadium, Breda, The Netherlands</h3>
|
47
|
+
<hr>
|
48
|
+
The XP Day Benelux is a one day conference about all aspects of Extreme Programming and other agile software development methods like DSDM, Scrum, Feature-driven development, and Crystal. See the "{Agile Manifesto@http://www.agilemanifesto.org}" for the principles of agile software development.
|
49
|
+
|
50
|
+
The XP Day Benelux conference is aimed at software developers, project leaders, IT managers, testers,
|
51
|
+
architects, and coaches. It will provide a good opportunity for exchanging ideas and sharing experiences, and is suited for both experienced participants and beginners in Agile Software
|
52
|
+
Development. The focus of this conference is on practical knowledge, real-world experience and active participation of all attendees. We aim at 50-100 participants.
|
53
|
+
|
54
|
+
This event was organized by members of the %Belgian XP users group@http://www.xp.be% and the %Dutch XP users group@http://www.xp-nl.org% and took place in Breda, the Netherlands (near Belgium) on 21 November 2003.
|
55
|
+
|
56
|
+
---
|
57
|
+
|
58
|
+
* LATEST NEWS:*
|
59
|
+
|
60
|
+
* *The next XP Day Benelux will take place on 19 November 2004 in Mechelen, Belgium*. See {Xpday2004:FrontPage}
|
61
|
+
* The conference is now over. The organizers had lots of fun and learned a lot. We hope you did too.
|
62
|
+
* Session presentations and workshop transcripts available from the %Program% page
|
63
|
+
* Images from the event are available at XpDay2003Pictures and more at http://www.willemvandenende.com/images/2003/xpdaybenelux/
|
64
|
+
* Now the conference is over, the story can be told, over at %Xpday2003Story%
|
65
|
+
|
66
|
+
---
|
67
|
+
|
68
|
+
* See the conference {Program} for a list of sessions and presenters. There is also a %printable version@programma.pdf%
|
69
|
+
* The ConferenceLocation page tells you all about the location and acces by car and public transport.
|
70
|
+
* Download the {flyer@flyer.pdf}.
|
71
|
+
* RelatedEvents
|
72
|
+
|
73
|
+
---
|
74
|
+
|
75
|
+
XP Day Benelux is an %Organisation% of AgileSystems vzwFor more information, the organizers can be contacted at: mailto:xpdayinfo@xpday.be
|
76
|
+
|
77
|
+
</textarea><br>
|
78
|
+
<input type="submit" value=" Save " name="save"><input type="reset" value=" Undo changes "> </p>
|
79
|
+
</form>
|
80
|
+
<p align="left"><em>Don't forget to follow the <a href="http://wiki2go.nayima.be/Wiki2Go/TextFormattingRules.html" target="_blank">TextFormatting rules</a></em></p>
|
81
|
+
</td>
|
82
|
+
</tr>
|
83
|
+
</table>
|
84
|
+
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%" class="Footer" ID="Table1">
|
85
|
+
<TR>
|
86
|
+
<TD width="50%"><a href="changes/Xpday">Recent changes</a></TD>
|
87
|
+
<TD width="50%">
|
88
|
+
<FORM action="search/Xpday" method="post" id="form1" name="form1">
|
89
|
+
Search: <INPUT name="text" size="30" ID="Text1">
|
90
|
+
</FORM>
|
91
|
+
</TD>
|
92
|
+
</TR>
|
93
|
+
<TR>
|
94
|
+
<td><a href="html/Xpday/rss.xml"><img src="html/rssLogo.png" width="36" height="14" border="0" alt="Keep informed"></a></td>
|
95
|
+
<TD align="right">
|
96
|
+
Contact the site administrator: <a href="view/Xpday/MailFormattingRules" onmouseover="this.href='mai' + 'lto:' + 'wiki2go' + '@' + 'nayima.be'">wiki2go</a>
|
97
|
+
</TD>
|
98
|
+
</TR>
|
99
|
+
</TABLE>
|
100
|
+
</TD>
|
101
|
+
</TR>
|
102
|
+
</TABLE>
|
103
|
+
</div>
|
104
|
+
</BODY>
|
105
|
+
</HTML>
|