RT-Extension-LifecycleUI
view release on metacpan or search on metacpan
lib/RT/Extension/LifecycleUI.pm view on Meta::CPAN
package RT::Extension::LifecycleUI;
use strict;
use warnings;
use Storable;
our $VERSION = '0.02';
RT->AddJavaScript("d3.min.js");
RT->AddJavaScript("handlebars-4.0.6.min.js");
RT->AddJavaScript("combobox.js");
RT->AddJavaScript("lifecycleui-model.js");
RT->AddJavaScript("lifecycleui-viewer.js");
RT->AddJavaScript("lifecycleui-viewer-interactive.js");
RT->AddJavaScript("lifecycleui-editor.js");
RT->AddStyleSheets("lifecycleui.css");
RT->AddStyleSheets("lifecycleui-viewer.css");
RT->AddStyleSheets("lifecycleui-viewer-interactive.css");
RT->AddStyleSheets("lifecycleui-editor.css");
$RT::Config::META{Lifecycles}{EditLink} = RT->Config->Get('WebURL') . 'Admin/Lifecycles/';
$RT::Config::META{Lifecycles}{EditLinkLabel} = "lifecycles administration";
sub _CloneLifecycleMaps {
my $class = shift;
my $maps = shift;
my $name = shift;
my $clone = shift;
for my $key (keys %$maps) {
my $map = $maps->{$key};
next unless $key =~ s/^ \Q$clone\E \s+ -> \s+/$name -> /x
|| $key =~ s/\s+ -> \s+ \Q$clone\E $/ -> $name/x;
$maps->{$key} = Storable::dclone($map);
}
my $CloneObj = RT::Lifecycle->new;
$CloneObj->Load($clone);
my %map = map { $_ => $_ } $CloneObj->Valid;
$maps->{"$name -> $clone"} = { %map };
$maps->{"$clone -> $name"} = { %map };
}
sub _SaveLifecycles {
my $class = shift;
my $lifecycles = shift;
my $CurrentUser = shift;
my $setting = RT::DatabaseSetting->new($CurrentUser);
$setting->Load('Lifecycles');
if ($setting->Id) {
if ($setting->Disabled) {
my ($ok, $msg) = $setting->SetDisabled(0);
return ($ok, $msg) if !$ok;
}
my ($ok, $msg) = $setting->SetContent($lifecycles);
return ($ok, $msg) if !$ok;
}
else {
my ($ok, $msg) = $setting->Create(
Name => 'Lifecycles',
Content => $lifecycles,
);
return ($ok, $msg) if !$ok;
}
( run in 2.715 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )