$Texi2HTML::Config::SPLIT_INDEX = 0;
$Texi2HTML::Config::SEPARATED_FOOTNOTES = 0; # Print footnotes on same page, not separated
+my $bigpage = 0;
+my $have_index_entries = 0;
if ($Texi2HTML::Config::SPLIT eq 'section' or
$Texi2HTML::Config::SPLIT eq 'node') {
$Texi2HTML::Config::element_file_name = \&lilypond_element_file_name;
+ $bigpage = 0;
+} else {
+ $bigpage = 1;
}
$Texi2HTML::Config::anchor = \&lilypond_anchor;
$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";
+
+ # The ie-fixes stylesheet is needed for the docs, but not the website.
+ if (not ($web_manual)) {
+ $Texi2HTML::THISDOC{'CSS_LINES'} .=
+ "<!--[if lte IE 7]>\n<link href=\"lilypond-ie-fixes.css\" rel=\"stylesheet\" type=\"text/css\">\n<![endif]-->\n";
+ }
+
+ if ($ENV{'AJAX_SEARCH'} == 1) {
+ # Add the JavaScript file only if we have an index.
+ # Unfortunately, init_out is called after css_lines, so as a workaround
+ # here we have to check again for the existence of an index...
+ my $ix = main::get_index ("cp");
+ $have_index_entries = (scalar $ix > 0);
+ my $reldir = "";
+ $reldir = "../" unless $bigpage;
+ if ($have_index_entries) {
+ $Texi2HTML::THISDOC{'CSS_LINES'} .= "<script language=\"JavaScript\" src=\"${reldir}lily_search.js\"></script>\n";
+ }
+ }
}
push (@toc_entries, generate_ly_toc_entries($_, \%parentelements, $page_toc_depth, 0, $element));
}
# search box
- local $/=undef;
- my $name = "search-box";
- $lang = $Texi2HTML::THISDOC{current_lang};
- open FILE, "$ENV{TOP_SRC_DIR}/Documentation/$lang/$name.ihtml" or
+ # I'm assuming that we wouldn't keep the google search box? -gp
+ if (!($ENV{AJAX_SEARCH} == 1)) {
+ 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 = decode ('UTF-8', <FILE>);
- $search_string = "<li>\n" . $search_string . "</li>\n";
- push (@toc_entries, $search_string);
- close FILE;
+ my $search_string = decode ('UTF-8', <FILE>);
+ $search_string = "<li>\n" . $search_string . "</li>\n";
+ push (@toc_entries, $search_string);
+ close FILE;
+ }
push (@toc_entries, "</ul>\n");
if ($web_manual) {
$lang = "";
}
my $reldir = $ENV{DEPTH};
- my $uplink = $reldir."/Documentation/web/manuals.${lang}html";
+ # strip one depth level for translations
+ if ($lang and $lang ne "en" and substr ($reldir, 0, 3) eq '../') {
+ $reldir = substr ($reldir, 3);
+ }
+ # add a / at the end if there isn't one.
+ if (substr ($reldir, -1) ne '/') {
+ $reldir .= '/';
+ }
+ my $uplink = $reldir."Documentation/web/manuals.${lang}html";
if (not $web_manual) {
print $fh "<p class=\"toc_uplink\"><a href=\"$uplink\"
&ly_get_string ('Back to Documentation Index') .
"</a></p>\n";
+ # AJAX search box, written in JavaScript
+ if ($ENV{'AJAX_SEARCH'} == 1) {
+ if ($have_index_entries) {
+ my ($docu_dir, $docu_name) = split_texi_filename ($Texi2HTML::THISDOC{'input_file_name'});
+ print $fh '<script language="JavaScript">print_search_field ("' .
+ $Texi2HTML::THISDOC{current_lang} . '", "' .
+ $docu_name . "\", " . $bigpage . ")</script>\n";
+ }
+ }
+
print $fh '<h4 class="toc_header"> ' . &$anchor('',
$Texi2HTML::HREF{'Top'},
$topname,
}
+#############################################################################
+### WRITING OUT THE INDEX FOR THE AJAX SEARCH FIELD
+#############################################################################
+
+$Texi2HTML::Config::IDX_SUMMARY = 1;
+$Texi2HTML::Config::init_out = \&lilypond_init_out;
+$Texi2HTML::Config::finish_out = \&lilypond_finish_out;
+$Texi2HTML::Config::index_summary_file_entry = \&lilypond_index_summary_file_entry;
+
+my @index_entries;
+
+sub lilypond_init_out ()
+{
+ t2h_default_init_out ();
+ # Check whether we have an index at all! If not -> don't print out a search box!
+ my $ix = main::get_index ("cp");
+ $have_index_entries = (scalar $ix > 0);
+}
+
+sub lilypond_index_summary_file_entry ($$$$$$$$$)
+{
+ my $index_name = shift;
+ my $entry_text = shift;
+ my $entry_reference = shift;
+ my $formatted_entry = shift;
+ my $texi_entry = shift;
+ my $entry_element_reference = shift;
+ my $entry_element_header = shift;
+ my $is_printed = shift;
+ my $manual_name = shift;
+
+ if ($ENV{'AJAX_SEARCH'}==1) {
+ if ($index_name eq "cp")
+ {
+ # The entries in the index file have the form:
+ # SearchText \t FormattedText \t EntryURL \t SectionText \t SectionURL
+ push @index_entries, "$entry_text\t$formatted_entry\t$entry_reference\t$entry_element_header\t$entry_element_reference\n";
+ }
+ }
+}
+
+sub lilypond_finish_out ()
+{
+ if ($ENV{'AJAX_SEARCH'}==1) {
+ if (((scalar @index_entries) > 0) and $have_index_entries) {
+ my $lang = $Texi2HTML::THISDOC{current_lang};
+ my $big = "";
+ $big = "-big-page" if $bigpage;
+ my ($docu_dir, $docu_name) = split_texi_filename ($Texi2HTML::THISDOC{'input_file_name'});
+ my $idx_file = "$docu_dir/$docu_name$big.$lang.idx";
+ open IDXOUTFILE, ">:utf8", $idx_file;
+ print IDXOUTFILE @index_entries;
+ close IDXOUTFILE;
+ }
+ }
+}
+
+
+
#############################################################################
### OTHER SETTINGS
#############################################################################