1 # Special utilities for projects pages
2 #read "contributors.list"
6 # . All contributors are listed in the file 'contributors.list' as
7 # RFC822-compliant addresses, i.e. "Real Name <email@domain.tld>".
8 # They will automatically be added into a Contributors box (at max
9 # <maxcontrib> names, default is 10).
11 # . There are three boxes that will appear on the right side if the
12 # environment <projectpg project=foo> will be used:
14 # . News (max. <maxnews> items)
15 # . Download (max. <maxdownload> items)
16 # . Contributors (max. <maxcontrib> items)
18 # . The download items will be revers sorted, i.e. the most recent
19 # appears at the top of the list.
21 # . The same applies for news boxes and the entire news listing
23 # . The entire list of contributors it reserved for peoples.wml. Use
24 # <contributors> there
26 # . All news have to be named news-yyyy-mm-dd.wml, otherwise they won't
27 # get included properly in the listings. Additionally, the
28 # headline/subject of an item has to be written in
29 # <headline>...</headline> and has to be at last one line long, no
30 # linebreaks are allowed.
32 # . The entire list of news items is reserved for news.wml. Please use
35 # . The entire list of ChangeLog entries reserved for changes.wml.
36 # #Please use <changes> there
38 # . Since /projects/sysklogd/ was the first project to work on, use it
42 <define-tag download-dir>download</define-tag>
50 @news = reverse (sort (grep (/^news-.*\.wml$/, readdir (THIS))));
61 if (open (NEWS, $file)) {
63 next until (/<headline>(.*)<\/headline>/);
75 open (CONTRIB, "contributors.list"); # Bail out if the file is not there
91 @news = reverse (sort (grep (/^changes-.*\.wml$/, readdir (THIS))));
102 if (open (F, $file)) {
104 next until (/<b>Releasedate: (.*)<\/b>/);
113 <define-tag get_tarfiles>
115 function get_tarfiles ($dirname)
118 if (is_dir ($dirname)) {
119 $dir = dir ($dirname);
120 while ($dentry = $dir->read()) {
121 if ($dentry != "." && $dentry != ".." && is_file ($dirname . "/" . $dentry)) {
122 $foo = strstr ($dentry, ".tar.");
124 #$name = substr ($dentry, 0, (strlen ($dentry) - strlen ($foo)));
135 <define-tag get_tarfiles2>
137 function get_tarfiles2 ($dirname)
140 if (is_dir ($dirname)) {
141 $dir = dir ($dirname);
142 while ($dentry = $dir->read()) {
143 if ($dentry != "." && $dentry != ".." && is_file ($dirname . "/" . $dentry)) {
144 $foo = strstr ($dentry, ".tar.");
146 #$name = substr ($dentry, 0, (strlen ($dentry) - strlen ($foo)));
157 <define-tag get_files>
159 function get_files ($dirname, $version)
162 if (is_dir ($dirname)) {
163 $dir = dir ($dirname);
164 while ($dentry = $dir->read()) {
165 if ($dentry != "." && $dentry != ".." && is_file ($dirname . "/" . $dentry)) {
166 if (ereg (".*-$version\..*", $dentry)) {
177 # Default: maxcontrib=10
180 <define-tag projectpg endtag=required>
181 <preserve project maxcontrib maxnews maxnews>
182 <set-var %attributes>
184 <if <not <get-var maxcontrib>>
185 <set-var maxcontrib=10>
187 <if <not <get-var maxnews>>
190 <if <not <get-var maxdownload>>
191 <set-var maxdownload=4>
194 <page title="Infodrom Projects - <get-var project>">
196 <table width=100% cellpadding=0 cellspacing=0 border=0>
198 #<td width=75% valign=top align=left><font face="Helvetica,Arial">
199 <td width=75% valign=top align=left><font face="Helvetica,Arial">
201 <h1 align=center><get-var project></h1>
205 </td><td valign=top><img src=<root_prefix>gifs/imgdot-1x1-transp.gif width=3 height=0 alt="">
206 #</td><td width=25% valign=top align=right>
207 </td><td width=150 valign=top align=right>
209 <ifneq <get-var WML_SRC_BASENAME> "news"
211 <titlebox title=News>
212 <table width=100% cellpadding=2 cellspacing=0 border=0>
213 <tr><td><font face="Helvetica,Arial" size=-1>
216 $row = "<b>%s</b> %s <a href=\"news-%s.php3\"><font size=\"-2\" color=\"#$menucolor\"><b>[more]</b></font></a>";
217 $delim = "</font></td></tr><tr><td><font face=\"Helvetica,Arial\" size=\"-1\">";
219 @news = get_news_list ();
222 while ($printed < <get-var maxnews> && $i <= $#news) {
223 print $delim if ($printed > 0);
224 if ($news[$i] ne "<get-var WML_SRC_BASENAME>.wml") {
225 $news[$i] =~ /news-(\d{4}-\d{2}-\d{2})\.wml/;
227 $headline = get_news_headline ($news[$i]);
228 printf $row, $date, $headline, $date;
235 </font></td></tr></table>
237 </font></titlebox><p>
239 # <ifneq <get-var WML_SRC_BASENAME> "news"
242 <: if (-r "download.wml" && "<get-var WML_SRC_BASENAME>" ne "download") { :>
244 <titlebox title=Download><font size=-1>
248 $file = get_tarfiles ("<download-dir>");
251 for ($i=0; ($i < count ($file)) && ($i < <get-var maxdownload>); $i++) {
252 $foo = strstr ($file[$i], ".tar.");
254 $name = substr ($file[$i], 0, (strlen ($file[$i]) - strlen ($foo)));
256 for ($token = strtok ($name, "-"); strlen ($token); $token = strtok ("-")) {
258 $version .= "-" . $token;
260 if (ereg ("^[0-9][0-9a-zA-Z\.:]*", $token)) {
267 printf (" <a href=\"<download-dir>/%s\">Version %s</a> (%d kB)<br>",
268 $file[$i], $version, filesize ("<download-dir>/" . $file[$i]) / 1024);
270 if (count ($file) == 0) {
271 echo "Nothing to download yet.";
274 # <a href=download.php3>all files</a>
275 </font></titlebox><p>
279 <ifneq <get-var WML_SRC_BASENAME> "people"
281 <titlebox title=Contributors><font size=-1>
285 @contrib = get_contrib_list ();
286 foreach $c (@contrib) {
287 $c =~ /(.*)\s+<(.*)>/;
288 printf " \$contrib[] = \"%s\";\n", $1;
293 $max = <get-var maxcontrib> > count ($contrib) ? count ($contrib) : <get-var maxcontrib>;
295 if (count ($contrib) == 1) {
298 while (count ($ci) < $max) {
299 $r = rand (0, count ($contrib)-1);
301 # Filter out already selected items
303 for ($i=0; $i < count ($ci); $i++) {
304 if ($ci[$i] == $r) $new = 0;
307 if ($new) $ci[] = $r;
311 for ($i=0; $i < count ($ci); $i++) {
312 printf (" %s<br>", $contrib[$ci[$i]]);
315 </font></titlebox><p>
317 # <ifneq <get-var WML_SRC_BASENAME> "people"
323 <restore project maxcontrib maxnews maxnews>
326 <define-tag headline endtag=required>
329 "<get-var WML_SRC_BASENAME>" =~ /news-(\d{4}-\d{2}-\d{2})/;
335 <define-tag contributors>
337 <h3>Contributors</h3>
339 <em>Alphabetically sorted</em>
342 $row = "<li><b>%s</b> <%s><br>";
344 @contrib = get_contrib_list ();
345 foreach $c (sort(@contrib)) {
346 if ($c =~ /(.*)\s+<(.*)>/) {
356 <define-tag newslist>
361 # $delim = '<line color="XXXXXX">';
362 # $delim =~ s/XXXXXX/$menucolor/;
364 $row = "<b>%s</b>: %s <a href=\"news-%s.php3\"><font size=\"-1\" color=\"#$menucolor\"><b>[more]</b></font></a>";
366 @news = get_news_list ();
369 while ($i <= $#news) {
370 print $delim if ($i > 0);
371 $news[$i] =~ /news-(\d{4}-\d{2}-\d{2})\.wml/;
373 $headline = get_news_headline ($news[$i]);
374 printf $row, $date, $headline, $date;
383 <h3>ChangeLog entries</h3>
387 $row = "<b>%s</b>: %s <a href=\"changes-%s.php3\"><font size=\"-1\" color=\"#$menucolor\"><b>[more]</b></font></a>";
389 @changes = get_changes_list ();
392 while ($i <= $#changes) {
393 print $delim if ($i > 0);
394 $changes[$i] =~ /changes-(.*)\.wml/;
396 $date = get_changes_date ($changes[$i]);
397 printf $row, $date, $version, $version;
404 <define-tag download>
410 $file = get_tarfiles ("<download-dir>");
413 for ($i=0; $i < count ($file); $i++) {
414 $foo = strstr ($file[$i], ".tar.");
416 $name = substr ($file[$i], 0, (strlen ($file[$i]) - strlen ($foo)));
418 for ($token = strtok ($name, "-"); strlen ($token); $token = strtok ("-")) {
420 $version .= "-" . $token;
422 if (ereg ("^[0-9][0-9a-zA-Z\.:]*", $token)) {
429 printf ("<h3>Version %s</h3>", $version);
430 $files = get_files ("<download-dir>", $version);
432 if (count ($files) > 0) {
434 if (is_file ("changes-" . $version . ".php3")) {
435 printf ("<li> <a href=\"changes-%s.php3\">ChangeLog</a>", $version);
437 for ($k=0; $k < count ($files); $k++) {
438 printf ("<li> <a href=\"<download-dir>/%s\">%s</a> (%d kB)",
439 $files[$k], $files[$k], filesize ("<download-dir>/" . $files[$k]) / 1024);
445 echo "<h3><a href=\"<download-dir>/\">All files</a></h3>";
451 # Only available for changes-*.wml files
452 <define-tag downloadbutton>
454 if ("<get-var WML_SRC_BASENAME>" =~ /^changes-(.*)/) {
456 $version =~ s/\./\\./g;
459 # Should already known because of download box, but the box comes
463 $fstr = "<p><b><a href=\"<download-dir>/%s\">Download</a></b><p>";
464 $file = get_tarfiles2 ("<download-dir>");
466 for ($i=0; $i < count ($file); $i++) {
467 if (ereg (".*-<: print $version; :>\.tar\..*", $file[$i])) {
468 printf ($fstr, $file[$i]);
476 # mode: indented-text