ngcp-panel/lib/NGCP/Panel/Form.pm

52 lines
1.3 KiB

package NGCP::Panel::Form;
use warnings;
use strict;
use Module::Load::Conditional qw/can_load/;
use NGCP::Panel::Utils::I18N qw//;
my %forms = ();
our $dont_use_cache = 0;
sub dont_use_cache {
if (scalar @_){
$dont_use_cache = $_[0];
}
return $dont_use_cache;
}
sub get {
my ($name, $c, $create_new) = @_;
my $form;
$c->log->debug("Form requested: $name; dont_use_cache: $dont_use_cache; create_new: "
.( $create_new // "undefined" ).";");
if( !$dont_use_cache
&& !$create_new
&& exists $forms{$name}
) {
$c->log->debug("form is taken from cache");
$form = $forms{$name};
$form->clear();
$form->ctx($c);
$form->setup_form();
} else {
my $use_list = { $name => undef };
unless(can_load(modules => $use_list, nocache => 0, autoload => 0)) {
$c->log->error("Failed to load module $name: ".$Module::Load::Conditional::ERROR."\n");
return;
}
$form = $forms{$name} = $name->new(ctx => $c);
# translate form here to prevent multiple translations which leads to errors and doesn't work since the
# source IDs (english) are no longer present
NGCP::Panel::Utils::I18N->translate_form($c, $form);
}
return $form;
}
sub clear_form_cache {
%forms = ();
}
1;