summaryrefslogtreecommitdiffstats
path: root/docs/lib/Pod/Simple/HTML/Bugzilla.pm
blob: f82ab92663fea9ad1d839082e841cc4da318b8de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Everything Solved.
# Portions created by Everything Solved are Copyright (C) 2006
# Everything Solved. All Rights Reserved.
#
# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>

package Pod::Simple::HTML::Bugzilla;

use strict;
use base qw(Pod::Simple::HTML);

# Without this constant, HTMLBatch will throw undef warnings.
use constant VERSION    => $Pod::Simple::HTML::VERSION;
use constant CODE_CLASS => ' class="code"';
use constant META_CT  => '<meta http-equiv="Content-Type" content="text/html;'
                         . ' charset=UTF-8">';
use constant DOCTYPE  => '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01'
    . ' Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">';

sub new {
    my $self    = shift->SUPER::new(@_);

    my $doctype      = $self->DOCTYPE;
    my $content_type = $self->META_CT;

    my $html_pre_title = <<END_HTML;
$doctype
<html>
  <head>
    <title>
END_HTML

    my $html_post_title = <<END_HTML;
</title>
    $content_type
  </head>
  <body id="pod">
END_HTML

    $self->html_header_before_title($html_pre_title);
    $self->html_header_after_title($html_post_title);

    # Fix some tags to have classes so that we can adjust them.
    my $code = CODE_CLASS;
    $self->{'Tagmap'}->{'Verbatim'} = "\n<pre $code>";
    $self->{'Tagmap'}->{'VerbatimFormatted'} = "\n<pre $code>";
    $self->{'Tagmap'}->{'F'} = "<em $code>";
    $self->{'Tagmap'}->{'C'} = "<code $code>";

    # Don't put head4 tags into the Table of Contents. We have this
    delete $Pod::Simple::HTML::ToIndex{'head4'};

    return $self;
}

# Override do_beginning to put the name of the module at the top
sub do_beginning {
    my $self = shift;
    $self->SUPER::do_beginning(@_);
    print {$self->{'output_fh'}} "<h1>" . $self->get_short_title . "</h1>";
    return 1;
}

1;