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 )