my $LY_LANGUAGES = {};
$LY_LANGUAGES->{'fr'} = {
'Back to Documentation Index' => 'Retour à l\'accueil de la documentation',
+ '<p>Thanks to ${webdev_link} for hosting ${lily_site}.' => '<p>Remerciements à ${webdev_link} pour l\'hébergement de ${lily_site}.',
};
+
$LY_LANGUAGES->{'es'} = {
'Back to Documentation Index' => 'Volver al índice de la documentación',
+ '<p>Thanks to ${webdev_link} for hosting ${lily_site}.' => '<p>Agradecemos a ${webdev_link} el alojamiento de ${lily_site}.',
};
+
$LY_LANGUAGES->{'de'} = {
'Back to Documentation Index' => 'Zur Dokumentationsübersicht',
+ '<p>Thanks to ${webdev_link} for hosting ${lily_site}.' => '',
};
+
$LY_LANGUAGES->{'ja'} = {
'Back to Documentation Index' => 'ドキュメント インデックスに戻る',
+ '<p>Thanks to ${webdev_link} for hosting ${lily_site}.' => '',
};
$LY_LANGUAGES->{'hu'} = {
'Back to Documentation Index' => 'Vissza a dokumentációk jegyzékéhez',
+ '<p>Thanks to ${webdev_link} for hosting ${lily_site}.' => 'Köszönet a ${webdev_link} részére a ${lily_site} tárhelyért.',
};
$LY_LANGUAGES->{'it'} = {
'Back to Documentation Index' => 'Torna all\'indice della documentazione',
+ '<p>Thanks to ${webdev_link} for hosting ${lily_site}.' => '',
};
# FIXME: request the translations below then send them to texi2html/texinfo devs
'{title_ref}' => '{title_ref}'
};
+
sub ly_get_string () {
my $lang = $Texi2HTML::THISDOC{current_lang};
my $string = shift;
);
sub web_settings() {
- print STDERR "Initializing settings for web site\n";
- $Texi2HTML::Config::BODYTEXT = "";
- @Texi2HTML::Config::CSS_REFS = (
+ print STDERR "Initializing settings for web site\n";
+ $Texi2HTML::Config::BODYTEXT = "";
+ @Texi2HTML::Config::CSS_REFS = (
{FILENAME => "lilypond-web.css", TITLE => "Patrick McCarty's design"}
- );
- @Texi2HTML::Config::ALT_CSS_REFS = (
+ );
+ @Texi2HTML::Config::ALT_CSS_REFS = (
{FILENAME => "lilypond-web-alt1.css", TITLE => "Alternate style 1"},
{FILENAME => "lilypond-web-alt2.css", TITLE => "Alternate style 2"},
- );
+ );
}
-# web_settings() if (exists($main::value{'web_manual'}));
-
$Texi2HTML::Config::USE_ACCESSKEY = 1;
$Texi2HTML::Config::USE_LINKS = 1;
$Texi2HTML::Config::USE_REL_REV = 1;
# Returns a ref to a hash "Node title" => ["FilenameWithoutExt", "Anchor"]
sub load_map_file ($)
{
- my $mapfile = shift;
- my $node_map = ();
-
- # For some unknown reason, Perl on my system (5.10.0 on Fedora 12)
- # refuses to open map files of translated documents with
- # '<:encoding(utf8)', but decoding from UTF-8 line by line works. -jm
- if (open(XREFFILE,'<', $mapfile)) {
- my $line;
- # print STDERR "*** PRINTING MAP FILE LINES ***\n";
- while ( $line = decode ('UTF-8', <XREFFILE>) ) {
- # parse the tab-separated entries and insert them into the map:
- chomp($line);
- my @entries = split(/\t/, $line);
- if (scalar (@entries) == 3) {
- $node_map->{$entries[0]} = [$entries[1], $entries[2]];
- $, = " ";
- # print STDERR @entries;
- # print STDERR "\n";
- } else {
- print STDERR "Invalid entry in the node file $mapfile: $line\n";
- }
- }
- close (XREFFILE);
- } else {
- print STDERR "WARNING: Unable to load the map file $mapfile\n";
+ my $mapfile = shift;
+ my $node_map = ();
+
+ # For some unknown reason, Perl on my system (5.10.0 on Fedora 12)
+ # refuses to open map files of translated documents with
+ # '<:encoding(utf8)', but decoding from UTF-8 line by line works. -jm
+ if (open(XREFFILE,'<', $mapfile)) {
+ my $line;
+ # print STDERR "*** PRINTING MAP FILE LINES ***\n";
+ while ( $line = decode ('UTF-8', <XREFFILE>) ) {
+ # parse the tab-separated entries and insert them into the map:
+ chomp($line);
+ my @entries = split(/\t/, $line);
+ if (scalar (@entries) == 3) {
+ $node_map->{$entries[0]} = [$entries[1], $entries[2]];
+ $, = " ";
+ # print STDERR @entries;
+ # print STDERR "\n";
+ } else {
+ print STDERR "Invalid entry in the node file $mapfile: $line\n";
+ }
}
- return $node_map;
+ close (XREFFILE);
+ } else {
+ print STDERR "WARNING: Unable to load the map file $mapfile\n";
+ }
+ return $node_map;
}
# For IE, conditionally include the lilypond-ie-fixes.css style sheet
sub lilypond_css_lines ($$)
{
- my $import_lines = shift;
- my $rule_lines = shift;
- return if (defined($Texi2HTML::THISDOC{'CSS_LINES'}));
- if (@$rule_lines or @$import_lines)
- {
- $Texi2HTML::THISDOC{'CSS_LINES'} = "<style type=\"text/css\">\n<!--\n";
- $Texi2HTML::THISDOC{'CSS_LINES'} .= join('',@$import_lines) . "\n" if (@$import_lines);
- $Texi2HTML::THISDOC{'CSS_LINES'} .= join('',@$rule_lines) . "\n" if (@$rule_lines);
- $Texi2HTML::THISDOC{'CSS_LINES'} .= "-->\n</style>\n";
- }
- foreach my $ref (@CSS_REFS)
- {
- $Texi2HTML::THISDOC{'CSS_LINES'} .= "<link rel=\"stylesheet\" type=\"text/css\" title=\"$ref->{TITLE}\" href=\"$ref->{FILENAME}\">\n";
- }
- foreach my $ref (@Texi2HTML::Config::ALT_CSS_REFS)
- {
- $Texi2HTML::THISDOC{'CSS_LINES'} .= "<link rel=\"alternate stylesheet\" type=\"text/css\" href=\"$ref->{FILENAME}\" title=\"$ref->{TITLE}\">\n";
- }
- # FIXME: the website doesn't use ie7-specific fixes; do the
- # docs still need this? -gp
- $Texi2HTML::THISDOC{'CSS_LINES'} .= "<!--[if lte IE 7]>\n<link href=\"lilypond-ie-fixes.css\" rel=\"stylesheet\" type=\"text/css\">\n<![endif]-->\n";
+ my $import_lines = shift;
+ my $rule_lines = shift;
+ return if (defined($Texi2HTML::THISDOC{'CSS_LINES'}));
+ if (@$rule_lines or @$import_lines)
+ {
+ $Texi2HTML::THISDOC{'CSS_LINES'} = "<style type=\"text/css\">\n<!--\n";
+ $Texi2HTML::THISDOC{'CSS_LINES'} .= join('',@$import_lines) . "\n" if (@$import_lines);
+ $Texi2HTML::THISDOC{'CSS_LINES'} .= join('',@$rule_lines) . "\n" if (@$rule_lines);
+ $Texi2HTML::THISDOC{'CSS_LINES'} .= "-->\n</style>\n";
+ }
+ foreach my $ref (@CSS_REFS)
+ {
+ $Texi2HTML::THISDOC{'CSS_LINES'} .=
+ "<link rel=\"stylesheet\" type=\"text/css\" title=\"$ref->{TITLE}\" href=\"$ref->{FILENAME}\">\n";
+ }
+ foreach my $ref (@Texi2HTML::Config::ALT_CSS_REFS)
+ {
+ $Texi2HTML::THISDOC{'CSS_LINES'} .=
+ "<link rel=\"alternate stylesheet\" type=\"text/css\" href=\"$ref->{FILENAME}\" title=\"$ref->{TITLE}\">\n";
+ }
+ # FIXME: the website doesn't use ie7-specific fixes; do the
+ # docs still need this? -gp
+ $Texi2HTML::THISDOC{'CSS_LINES'} .=
+ "<!--[if lte IE 7]>\n<link href=\"lilypond-ie-fixes.css\" rel=\"stylesheet\" type=\"text/css\">\n<![endif]-->\n";
}
print STDERR "Output file name: $filename\n";
return $filename;
- } elsif ($type eq "top" or $type eq "toc" or $type eq "doc" or $type eq "stoc" or $type eq "foot" or $type eq "about") {
+ } elsif ($type eq "top" or $type eq "toc" or $type eq "doc" or
+ $type eq "stoc" or $type eq "foot" or $type eq "about") {
return;
} else {
print STDERR "WARNING: Node '$node_name' was NOT found in the map\n"
# -) the parent is a numbered element at top-level toplevel (i.e. show numbered
# and unnumbered 2nd-level children of numbered nodes)
# -) the child element is a numbered node below level maxlevel
-sub generate_ly_toc_entries($$$)
+sub generate_ly_toc_entries($$$$)
{
my $element = shift;
my $element_path = shift;
+ my $maxlevel = shift;
if ($web_manual) {
- my $maxlevel = 1;
- } else {
- my $maxlevel = shift;
+ $maxlevel = 1;
}
+ my $child_count = shift;
# Skip undefined sections, plus all sections generated by index splitting
return() if (not defined($element) or exists($element->{'index_page'}));
my @result = ();
my $level = $element->{'toc_level'};
my $is_parent_of_current = $element->{'id'} && $element_path->{$element->{'id'}};
my $ind = ' ' x $level;
- my $this_css_class;
+ my $this_css_class = " class=\"";
+ # color indices for the second navigation bar on the website
if ($web_manual) {
- $this_css_class = " class=\"";
- } else {
- $this_css_class = "";
- }
- $this_css_class .= $is_parent_of_current ? " toc_current" : "";
-# HORRIBLE HACK
- my @color_1 = (
- "Learning", "Glossary", "Essay",
- "Contact", "Tiny examples", "Bug reports"
- );
- my @color_2 = (
- "Features", "Examples", "Freedom", "Background",
- "Unix", "MacOS X", "Windows",
- "Notation", "Usage", "Snippets",
- "Help us", "Development", "Authors"
- );
- my @color_3 = (
- "Productions", "Testimonials",
- "Source", "Old downloads",
- "Web", "FAQ", "Changes", "Extend", "Internals",
- "Publications", "Old news"
- );
- my @color_4 = (
- "Text input", "Easier editing",
- "GPL",
- "Translated", "All", "FDL"
- );
-
- my $addColor = " colorDefault";
- foreach $color (@color_1) {
- if ($element->{'text'} eq $color) {
- $addColor = " color1";
- }
- }
- foreach $color (@color_2) {
- if ($element->{'text'} eq $color) {
- $addColor = " color2";
- }
- }
- foreach $color (@color_3) {
- if ($element->{'text'} eq $color) {
- $addColor = " color3";
- }
- }
- foreach $color (@color_4) {
- if ($element->{'text'} eq $color) {
- $addColor = " color4";
- }
+ my %color_maps = (
+ 'introduction' => [2, 2, 2, 2, 3, 3, 4, 4],
+ 'download' => [2, 2, 2, 3, 3, 4],
+ 'manuals' => [1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4],
+ 'community' => [1, 1, 1, 2, 2, 2, 3, 3],
+ );
+ my $addColor = "colorDefault";
+ while (($top_section, $color_indices) = each %color_maps) {
+ if (index ($element->{'sectionup'}->{'file'}, $top_section) >= 0) {
+ $addColor = "color" . $color_indices->[$child_count];
+ }
+ }
+ $this_css_class .= $addColor;
}
-
- $this_css_class .= $addColor . "\"";
-
-
- my $entry = "$ind<li$this_css_class>" . &$anchor ($element->{'tocid'}, "$element->{'file'}#$element->{'target'}",$element->{'text'});
+ $this_css_class .= $is_parent_of_current ? ' toc_current"' : '"';
+ my $entry = "$ind<li$this_css_class>" .
+ &$anchor ($element->{'tocid'},
+ "$element->{'file'}#$element->{'target'}",
+ $element->{'text'});
push (@result, $entry);
my $children = $element->{'section_childs'};
if (defined($children) and (ref($children) eq "ARRAY")) {
my $force_children = $is_parent_of_current or ($level == 1 and $element->{'number'});
my @child_result = ();
+ my $sub_child_count = 0;
foreach my $c (@$children) {
my $is_numbered_child = defined ($c->{'number'});
my $below_maxlevel = $c->{'toc_level'} le $maxlevel;
if ($force_children or ($is_numbered_child and $below_maxlevel)) {
- my @child_res = generate_ly_toc_entries($c, $element_path, $maxlevel);
+ my @child_res =
+ generate_ly_toc_entries($c, $element_path, $maxlevel, $sub_child_count);
push (@child_result, @child_res);
+ $sub_child_count += 1;
}
}
# if no child nodes were generated, e.g. for the index, where expanded pages
if (@child_result) {
push (@result, "\n$ind<ul$NO_BULLET_LIST_ATTRIBUTE>\n");
if ($web_manual) {
- push (@result, "$ind<li$this_css_class>" . &$anchor ($element->{'tocid'}, "$element->{'file'}#$element->{'target'}","(main)"));
+ push (@result, "$ind<li class=\"colorDefault toc_current\">" .
+ &$anchor ($element->{'tocid'},
+ "$element->{'file'}#$element->{'target'}",
+ $element->{'text'}) . "</li>\n");
}
push (@result, @child_result);
push (@result, "$ind</ul>\n");
# it's not the top element
push (@toc_entries, "<li><a href=\"index.html\">Main</a></li>\n");
} else {
- push (@toc_entries, "<li class=\"toc_current\"><a href=\"index.html\">Main</a></li>\n");
+ push (@toc_entries,
+ "<li class=\"toc_current\"><a href=\"index.html\">Main</a></li>\n");
}
} else {
push (@toc_entries, "<div class=\"contents\">\n");
}
my $children = $current_element->{'section_childs'};
foreach ( @$children ) {
- push (@toc_entries, generate_ly_toc_entries($_, \%parentelements, $page_toc_depth));
+ push (@toc_entries, generate_ly_toc_entries($_, \%parentelements, $page_toc_depth, 0));
}
# search box
- if ($sergsmoeivjriohuemf) {
- # WTF, perl needs 6 lines of magic to do: ' ' + open ('file-name').read ()?
- local $/=undef;
- my $name = "search-box.html";
- open FILE, "$ENV{SRC_DIR}/$name" or open FILE, "$ENV{SRC_DIR}/../$name" or die "no such file: $name: $!";
-
- my $string = <FILE>;
- $string = "<li>\n" . $string . "</li>\n";
- push (@toc_entries, $string);
- close FILE;
- }
+ local $/=undef;
+ my $name = "search-box";
+ $lang = $Texi2HTML::THISDOC{current_lang};
+ open FILE, "$ENV{TOP_SRC_DIR}/Documentation/$lang/$name.ihtml" or
+ open FILE, "$ENV{TOP_SRC_DIR}/Documentation/$name.ihtml" or
+ die "no such file: $name.ihtml: $!";
+ my $search_string = <FILE>;
+ $search_string = "<li>\n" . $search_string . "</li>\n";
+ push (@toc_entries, $search_string);
+ close FILE;
+
push (@toc_entries, "</ul>\n");
if ($web_manual) {
push (@toc_entries, "\n");
# print $fh "<p><font size='-1'>$program_string</font><br>$PRE_BODY_CLOSE</p>\n";
print $fh "<!-- FOOTER -->\n\n";
print $fh "<!-- end div#main here -->\n</div>\n\n";
-
if ($web_manual) {
# FIXME: This div and p#languages need to be in div#footer.
# Should we move this div to postprocess_html.py ?
print $fh "<div id=\"verifier_texinfo\">\n";
print $fh "<h3>Validation</h3>\n";
- print $fh "<p>Thanks to <a href=\"http://www.webdev.nl/\">webdev.nl</a>";
- print $fh " for hosting <code>lilypond.org</code>.\n";
+ # FIXME: inlined text substitution, move to ly_get_string as soon as another case is needed
+ my $webdev_link = "<a href=\"http://www.webdev.nl/\">webdev.nl</a>";
+ my $lily_site = "<code>lilypond.org</code>";
+ my $hosting_thanks = &ly_get_string ('<p>Thanks to ${webdev_link} for hosting ${lily_site}.');
+ # this does the variable substitution ("quoting" in Perlish) after the localization
+ $hosting_thanks =~ s/(\$\{\w+\})/$1/eeg;
+ print $fh $hosting_thanks . "\n";
print $fh "<a href=\"http://validator.w3.org/check?uri=referer\">\n";
print $fh "<img src=\"http://www.w3.org/Icons/valid-html401\"\n";
print $fh " alt=\"Valid HTML 4.01 Transitional\"\n";
if ($Texi2HTML::HREF{$button_href})
{
my $anchor_attributes = '';
- if ($USE_ACCESSKEY and (defined($BUTTONS_ACCESSKEY{$button_href})) and ($BUTTONS_ACCESSKEY{$button_href} ne ''))
+ if ($USE_ACCESSKEY and (defined($BUTTONS_ACCESSKEY{$button_href})) and
+ ($BUTTONS_ACCESSKEY{$button_href} ne ''))
{
$anchor_attributes = "accesskey=\"$BUTTONS_ACCESSKEY{$button_href}\"";
}
- if ($USE_REL_REV and (defined($BUTTONS_REL{$button_href})) and ($BUTTONS_REL{$button_href} ne ''))
+ if ($USE_REL_REV and (defined($BUTTONS_REL{$button_href})) and
+ ($BUTTONS_REL{$button_href} ne ''))
{
$anchor_attributes .= " rel=\"$BUTTONS_REL{$button_href}\"";
}
{ # button is active
my $btitle = $BUTTONS_GOTO{$button} ?
'title="' . $BUTTONS_GOTO{$button} . '"' : '';
- if ($USE_ACCESSKEY and (defined($BUTTONS_ACCESSKEY{$button})) and ($BUTTONS_ACCESSKEY{$button} ne ''))
+ if ($USE_ACCESSKEY and (defined($BUTTONS_ACCESSKEY{$button})) and
+ ($BUTTONS_ACCESSKEY{$button} ne ''))
{
$btitle .= " accesskey=\"$BUTTONS_ACCESSKEY{$button}\"";
}
- if ($USE_REL_REV and (defined($BUTTONS_REL{$button})) and ($BUTTONS_REL{$button} ne ''))
+ if ($USE_REL_REV and (defined($BUTTONS_REL{$button})) and
+ ($BUTTONS_REL{$button} ne ''))
{
$btitle .= " rel=\"$BUTTONS_REL{$button}\"";
}
);
# buttons for misc stuff
-@Texi2HTML::Config::MISC_BUTTONS = ('center-aligned-cell-3', 'Top', 'Contents', 'Index', 'About');
+@Texi2HTML::Config::MISC_BUTTONS = ('center-aligned-cell-3',
+ 'Top', 'Contents', 'Index', 'About');
# buttons for chapter file footers
# (and headers but only if SECTION_NAVIGATION is false)
$from_file = $footnote_file = '';
}
- my $foot_anchor = "<sup>" . &$anchor($docid, "$footnote_file#$footid", $relative_num) . "</sup>";
- $foot_anchor = &$anchor($docid, "$footnote_file#$footid", "($relative_num)") if ($state->{'preformatted'});
+ my $foot_anchor = "<sup>" .
+ &$anchor($docid, "$footnote_file#$footid", $relative_num) . "</sup>";
+ $foot_anchor = &$anchor($docid,
+ "$footnote_file#$footid",
+ "($relative_num)") if ($state->{'preformatted'});
# unshift @$lines, "<li>";
# push @$lines, "</li>\n";