Skip to content

Commit fc8c503

Browse files
committed
Add htdocs helper scripts from old JabRef repository
1 parent 1102565 commit fc8c503

File tree

3 files changed

+388
-0
lines changed

3 files changed

+388
-0
lines changed

htdocs-helper/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# JabRef helper tools
2+
3+
## Helper scripts
4+
5+
* [generate-htdocs-help-from-jabref-src-help](generate-htdocs-help-from-jabref-src-help) is a script generating the help fiels in `htdocs` based on the content from `src/main/resources/help`
6+
* [validate-htdocs-syntax.pl](validate-htdocs-syntax.pl) is used for syntax checking of the `htdocs` repository.
7+
8+
## Repository `htdocs`
9+
10+
https://github.com/JabRef/htdocs is the git repository for the htdocs of http://jabref.sourceforge.net/.
11+
It is uploaded manually to JabRef.
12+
13+
`htdocs/images/es.png` and `us.png` are from the "Flag icons - http://www.famfamfam.com".
14+
These icons are public domain, and as such are free for any use (attribution appreciated but not required).
Lines changed: 302 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,302 @@
1+
#!/usr/bin/perl
2+
#requires: perl >= 5.10
3+
4+
#generate-htdocs-help-form-jabref-src-help.pl
5+
#(c) 2012 Kolja Brix and Oliver Kopp
6+
7+
#This scripts converts the help files
8+
#from the source directory of JabRef (HELPDIR_JABREF)
9+
#to help files for the web page (HELPDIR_WEB)
10+
11+
#Start it from the root directory of your git repository.
12+
# Windows: perl generate-htdocs-help-form-jabref-src-help.pl
13+
#It will overwrite all help files in HELPDIR_WEB
14+
#It will NOT delete files in HELPDIR_WEB which were removed in HELPDIR_JABREF
15+
16+
#There are NO command line parameters
17+
18+
#If you have newline issues at the generated files,
19+
#adapt FORCE_WINDOWS_NEWLINES
20+
21+
22+
#Error:
23+
#Use of uninitialized value in concatenation (.) or string at generate-htdocs-help-from-jabref-src-help.pl line 174, <$infileH> line 138.
24+
#Reason:
25+
#A new language has been added to HELPDIR_JABREF, where no translation is contained in
26+
#%translation_back_to_contents. Please add the language to there.
27+
28+
use constant HELPDIR_JABREF => "../src/main/resources/help";
29+
use constant HELPDIR_WEB => "../../htdocs/help";
30+
31+
#0 for normal operationrequired
32+
#1 for cygwin's perl
33+
use constant FORCE_WINDOWS_NEWLINES => 0;
34+
35+
#translations for "Back to contents"
36+
our %translation_back_to_contents = (
37+
"da" => "Back to contents",
38+
"de" => "Zur&uuml;ck zum Inhaltsverzeichnis",
39+
"en" => "Back to contents",
40+
"fr" => "Retour au contenu",
41+
"in" => "Kembali ke Daftar Isi",
42+
"ja" => "目次に戻る"
43+
);
44+
45+
46+
#build.xml for getting string replacements @version@ and @year@
47+
use constant BUILDXML => "../build.xml";
48+
49+
use warnings;
50+
use strict;
51+
52+
#enable "given/when"
53+
use feature ":5.10";
54+
55+
sub handleDir;
56+
sub handleFile;
57+
sub loadPreferences;
58+
59+
our $jabref_version;
60+
our $jabref_year;
61+
our $jabref_placeholder_version;
62+
our $jabref_placeholder_year;
63+
64+
loadPreferences();
65+
66+
#Debug call for a single file
67+
#handleFile("../src/main/resources/help/About.html", "../../htdocs/help/About.php", "en");
68+
#exit;
69+
70+
71+
# handle English
72+
handleDir(HELPDIR_JABREF, HELPDIR_WEB, "en");
73+
74+
#handle other languages (contained in sub directories)
75+
76+
my $helpdirJabRef;
77+
78+
opendir($helpdirJabRef, HELPDIR_JABREF) or die $!;
79+
80+
my $sourcedir;
81+
my $targetdir;
82+
my $lang;
83+
84+
while (my $subdir = readdir($helpdirJabRef)) {
85+
$sourcedir = HELPDIR_JABREF . "/$subdir";
86+
next unless (-d $sourcedir);
87+
next if ($subdir =~ /\.\.?/);
88+
89+
$targetdir = HELPDIR_WEB . "/$subdir";
90+
$lang = $subdir;
91+
92+
handleDir($sourcedir, $targetdir, $lang);
93+
}
94+
close($helpdirJabRef);
95+
96+
exit 0;
97+
98+
99+
100+
# Parameters:
101+
# sourcedir
102+
# targetdir
103+
# language
104+
sub handleDir {
105+
my $sourcedir = shift;
106+
my $targetdir = shift;
107+
my $lang = shift;
108+
109+
print("Handling $sourcedir...\n");
110+
111+
if (!-d $targetdir) {
112+
mkdir($targetdir);
113+
}
114+
115+
my $dh;
116+
opendir($dh, $sourcedir) or die $!;
117+
while (my $infilename = readdir($dh)) {
118+
next unless ($infilename =~ /\.html$/);
119+
my $outfilename = $infilename;
120+
$outfilename =~ s/\.html/\.php/g;
121+
my $sourcefilename = $sourcedir . "/" . $infilename;
122+
my $targetfilename = $targetdir . "/" . $outfilename;
123+
handleFile($sourcefilename, $targetfilename, $lang);
124+
}
125+
close($dh);
126+
}
127+
128+
#
129+
# Parameters:
130+
# infilename: source file (html)
131+
# outfile: target file (php)
132+
# lang: language (ISO-format)
133+
#
134+
sub handleFile {
135+
my $infilename = shift;
136+
my $outfilename = shift;
137+
my $lang = shift;
138+
139+
my $replace_placeholders = ($infilename =~ /About.html$/);
140+
141+
#Debug output
142+
#print("handleFile:\n$infilename\n$outfilename\n$lang\n$replace_placeholders\n\n");
143+
144+
open(my $infileH, "<", $infilename) or die "cannot open < $infilename: $!";
145+
my @infile = <$infileH>;
146+
147+
my @outfile=();
148+
149+
# Determine title out of first h1 heading
150+
my $title="";
151+
my $line;
152+
foreach $line(@infile) {
153+
if ($line =~ /\<h1\>(.*)\<\/h1\>/) {
154+
$title=$1;
155+
if ($replace_placeholders) {
156+
$title =~ s/$jabref_placeholder_version/$jabref_version/;
157+
$title =~ s/$jabref_placeholder_year/$jabref_year/;
158+
}
159+
# title is found, go to the normal handling
160+
last;
161+
}
162+
}
163+
164+
#remove html tags from title
165+
#even if <em> is not allowed in h1 elements, JabRef doc uses that
166+
$title =~ s#<(.|\n)*?>##g;
167+
168+
#Following prefix does not work at sourceforge.
169+
#<?xml version=\"1.0\" encoding=\"UTF-8\"?>
170+
#We use php's header statement instead
171+
172+
#add to the relative path to navigation|footer if help is non-english
173+
my $pathaddition;
174+
if ($lang eq 'en') {
175+
$pathaddition = "";
176+
} else {
177+
$pathaddition = "../";
178+
}
179+
180+
my $navigationlink = $pathaddition . "../navigation.php";
181+
my $footerlink = $pathaddition . "../footer.php";
182+
183+
my $header=<<HTML;
184+
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
185+
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
186+
<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"$lang\" xml:lang=\"$lang\">
187+
<?php
188+
header('Content-type: application/xhtml+xml; charset=utf-8');
189+
190+
// DO NOT EDIT BY HAND
191+
// This file is generated from jabref/src/help.
192+
// Run generate-htdocs-help-from-jabref-src-help.pl in the root directory
193+
// of the JabRef repository to regenerate the htdocs out of JabRef's help.
194+
?>
195+
<head>
196+
<meta http-equiv=\"content-type\" content=\"application/xhtml+xml; charset=UTF-8\" />
197+
<title>$title</title>
198+
<link href=\"/css/style.css\" rel=\"stylesheet\" type=\"text/css\" />
199+
</head>
200+
201+
<body>
202+
<div id=\"container\">
203+
<?php include(\"$navigationlink\"); ?>
204+
<a href=\"Contents.php\">$translation_back_to_contents{$lang}</a>
205+
206+
HTML
207+
208+
my $footer=<<HTML;
209+
<?php include(\"$footerlink\"); ?>
210+
</div>\n\n</body>\n</html>
211+
HTML
212+
213+
push(@outfile, $header);
214+
215+
my $status=0;
216+
# 0 out of html
217+
# 1 in html
218+
# 2 within basefont
219+
220+
foreach $line(@infile) {
221+
#Debug states
222+
#print "$status / $line";
223+
224+
if ($status==0 && $line =~ /\<body/) {
225+
$status=1;
226+
} elsif ($status==1 && $line =~ /\<\/body\>/) {
227+
$status=0;
228+
} elsif ($status==1) {
229+
#we may not transfer a "basefont"
230+
if ($line =~ /\<basefont/) {
231+
if ($line !~ /\/\>/) {
232+
$status = 2;
233+
}
234+
} else {
235+
if ($replace_placeholders) {
236+
$line =~ s/$jabref_placeholder_version/$jabref_version/;
237+
$line =~ s/$jabref_placeholder_year/$jabref_year/;
238+
}
239+
if (!($line =~ /href=\"http:\/\//)) {
240+
#line does NOT contain a href to some http address
241+
#we assume that line is NOT a reference to an external site
242+
#replace "html" extension with "php" extension
243+
#still allow links as "...html#part".
244+
$line =~ s/href=\"([^\"]*)\.html/href=\"$1\.php/g;
245+
}
246+
push(@outfile, $line);
247+
}
248+
} elsif (($status==2) && ($line =~ /\/\>/)) {
249+
#basefont ended, reset to "inhtml"
250+
$status = 1;
251+
}
252+
}
253+
254+
push(@outfile, $footer);
255+
256+
open(OUTFILE,">$outfilename");
257+
258+
if (FORCE_WINDOWS_NEWLINES) {
259+
foreach my $line (@outfile) {
260+
$line =~ s/\r?\n|\r/\r\n/g;
261+
}
262+
}
263+
264+
print OUTFILE @outfile;
265+
266+
close(OUTFILE);
267+
268+
close($infileH);
269+
}
270+
271+
#extracts info out of build.xml
272+
# <property name="jabref.version" value="2.8b" />
273+
# <property name="jabref.year" value="2012" />
274+
# <property name="jabref.placeholder.version" value="@version@" />
275+
# <property name="jabref.placeholder.year" value="@year@" />
276+
sub loadPreferences {
277+
open(my $buildXML, "<", BUILDXML) or die "cannot open < " . BUILDXML . ": $!";
278+
my @buildxml = <$buildXML>;
279+
close($buildXML);
280+
foreach my $line (@buildxml) {
281+
#check for one-line property declaration name / value
282+
if ($line =~ /property name="([^"]*)" value="([^"]*)"/) {
283+
#copy value from value to local variable
284+
#a non-hardcoded version using "eval" would also be possible
285+
#the SLOC count would be equal to the count of the following (easier) given/when construct.
286+
given($1) {
287+
when ("jabref.version") {
288+
$jabref_version = $2;
289+
}
290+
when ("jabref.year") {
291+
$jabref_year = $2;
292+
}
293+
when ("jabref.placeholder.version") {
294+
$jabref_placeholder_version = $2;
295+
}
296+
when ("jabref.placeholder.year") {
297+
$jabref_placeholder_year = $2;
298+
}
299+
}
300+
}
301+
}
302+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#!/usr/bin/perl
2+
3+
#validate-htdocs-syntax.pl
4+
#(c) 2012 Oliver Kopp
5+
6+
#This scripts validates the syntax of all files in the htdocs directory
7+
#using tidy
8+
9+
#This script requires "tidy".
10+
#It was tested using cygwin's perl and cygwin's tidy.
11+
12+
#Start it from the root directory of your git repository.
13+
# Windows: perl validate-htdocs-syntax.pl
14+
15+
#There are NO command line parameters
16+
17+
#configuration: should there be a prompt after each error?
18+
use constant WAITAFTEREACHERROR => 1;
19+
20+
21+
#configuration: directory to check
22+
23+
#online web site
24+
use constant STARTDIR => "../../htdocs";
25+
26+
#single help
27+
#use constant STARTDIR => "../../htdocs/help/ja";
28+
29+
#JabRef help
30+
# never validates as no HTML head is used and no DOCTYPE is declared.
31+
#use constant STARTDIR => "../src/main/resources/help/";
32+
33+
34+
use File::Find;
35+
use strict;
36+
37+
sub wait_for_keypress {
38+
return unless WAITAFTEREACHERROR;
39+
print "Press 'Return' to continue. (Enter \"exit\" to exit the whole process)\n";
40+
my $input = <STDIN>;
41+
exit 0 if $input =~ /exit/;
42+
}
43+
44+
sub verifyFile {
45+
return unless -f;
46+
#my $fullfilename = $File::Find::name;
47+
my $filename = $_;
48+
return unless ($filename =~ /(\.php)|(\.html)$/);
49+
50+
#Debug output
51+
#print "Checking $File::Find::name\n";
52+
53+
system("tidy", "-eq", "-utf8", "$filename");
54+
55+
if ($? == -1) {
56+
print ("Failed to execute tidy.");
57+
} elsif ($? & 127) {
58+
printf "child died with signal %d, %s coredump\n",
59+
($? & 127), ($? & 128) ? 'with' : 'without';
60+
} elsif ($? != 0) {
61+
#some error occured
62+
63+
# html/php line offset is 11. I.e., if tidy outputs "276", the line in the .html is "265"
64+
print "Above file was $File::Find::name and has errors\n\n";
65+
wait_for_keypress;
66+
}
67+
}
68+
69+
#Debug call
70+
#find(\&verifyFile, ("htdocs/contact.php"));
71+
72+
find(\&verifyFile, (STARTDIR));

0 commit comments

Comments
 (0)