lib/TWiki/Configure/Pluggable.pm
author Colas Nahaboo <colas@nahaboo.net>
Sat, 26 Jan 2008 15:50:53 +0100
changeset 0 414e01d06fd5
permissions -rw-r--r--
RELEASE 4.2.0 freetown
colas@0
     1
#
colas@0
     2
# TWiki Enterprise Collaboration Platform, http://TWiki.org/
colas@0
     3
#
colas@0
     4
# Copyright (C) 2000-2006 TWiki Contributors.
colas@0
     5
#
colas@0
     6
# This program is free software; you can redistribute it and/or
colas@0
     7
# modify it under the terms of the GNU General Public License
colas@0
     8
# as published by the Free Software Foundation; either version 2
colas@0
     9
# of the License, or (at your option) any later version. For
colas@0
    10
# more details read LICENSE in the root of this distribution.
colas@0
    11
#
colas@0
    12
# This program is distributed in the hope that it will be useful,
colas@0
    13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
colas@0
    14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
colas@0
    15
#
colas@0
    16
# As per the GPL, removal of this notice is prohibited.
colas@0
    17
#
colas@0
    18
# A placeholder in a configuration representing a pluggable UI block.
colas@0
    19
# A pluggable block has special semantics, may have a special UI which
colas@0
    20
# may override the behaviors of a standard item. Normally pluggables
colas@0
    21
# are sections, containing values and other sections. If this isn't
colas@0
    22
# appropriate, you will have to implement a new visit() function for
colas@0
    23
# saving configuration data.
colas@0
    24
package TWiki::Configure::Pluggable;
colas@0
    25
colas@0
    26
use strict;
colas@0
    27
colas@0
    28
use TWiki::Configure::Section;
colas@0
    29
colas@0
    30
use base 'TWiki::Configure::Section';
colas@0
    31
colas@0
    32
sub load {
colas@0
    33
    my ($name) = @_;
colas@0
    34
colas@0
    35
    my $modelName = 'TWiki::Configure::'.$name;
colas@0
    36
    eval "use $modelName";
colas@0
    37
    Carp::confess $@ if $@;
colas@0
    38
colas@0
    39
    no strict 'refs';
colas@0
    40
    my $model = $modelName->new();
colas@0
    41
    use strict 'refs';
colas@0
    42
colas@0
    43
    return $model;
colas@0
    44
}
colas@0
    45
colas@0
    46
1;