Skin.pm 1.59 KB
Newer Older
1 2 3
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
#
5 6
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25


package Bugzilla::User::Setting::Skin;

use strict;

use base qw(Bugzilla::User::Setting);

use Bugzilla::Constants;
use File::Spec::Functions;
use File::Basename;

use constant BUILTIN_SKIN_NAMES => ['standard'];

sub legal_values {
    my ($self) = @_;

    return $self->{'legal_values'} if defined $self->{'legal_values'};

26
    my $dirbase = bz_locations()->{'skinsdir'} . '/contrib';
27 28 29 30 31 32
    # Avoid modification of the list BUILTIN_SKIN_NAMES points to by copying the
    # list over instead of simply writing $legal_values = BUILTIN_SKIN_NAMES.
    my @legal_values = @{(BUILTIN_SKIN_NAMES)};

    foreach my $direntry (glob(catdir($dirbase, '*'))) {
        if (-d $direntry) {
33
            next if basename($direntry) =~ /^cvs$/i;
34
            # Stylesheet set found
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
            push(@legal_values, basename($direntry));
        }
    }

    return $self->{'legal_values'} = \@legal_values;
}

1;

__END__

=head1 NAME

Bugzilla::User::Setting::Skin - Object for a user preference setting for skins

=head1 DESCRIPTION

Skin.pm extends Bugzilla::User::Setting and implements a class specialized for
skins settings.

=head1 METHODS

=over

=item C<legal_values()>

Description: Returns all legal skins
Params:      none
Returns:     A reference to an array containing the names of all legal skins

=back