[otrs-cvs] otrs/Kernel/Modules AdminProcessManagement.pm, 1.46, 1.47

"CVS commits notifications of OTRS.org" <[email protected]>
Newsgroups gmane.comp.otrs.cvs
Message-ID <[email protected]>
Comments:
Update of /home/cvs/otrs/Kernel/Modules
In directory lancelot:/tmp/cvs-serv4054/Kernel/Modules

Modified Files:
	AdminProcessManagement.pm 
Log Message:
Added print mode for processes (first version).

Author: mab

Index: AdminProcessManagement.pm
===================================================================
RCS file: /home/cvs/otrs/Kernel/Modules/AdminProcessManagement.pm,v
retrieving revision 1.46
retrieving revision 1.47
diff -2 -u -d -r1.46 -r1.47
--- AdminProcessManagement.pm	17 Jan 2013 03:39:20 -0000	1.46
+++ AdminProcessManagement.pm	29 Jan 2013 15:59:02 -0000	1.47
@@ -14,4 +14,5 @@
 use strict;
 use warnings;
+use Data::Dumper;
 
 use Kernel::System::YAML;
@@ -465,69 +466,236 @@
         }
 
-        my %ProcessData;
+        my $ProcessData = $Self->_GetProcessData(
+            ID => $ProcessID
+        );
 
-        # get process data
-        my $Process = $Self->{ProcessObject}->ProcessGet(
-            ID     => $ProcessID,
-            UserID => $Self->{UserID},
+        # convert the processdata hash to string
+        my $ProcessDataYAML = $Self->{YAMLObject}->Dump( Data => $ProcessData );
+
+        # send the result to the browser
+        return $Self->{LayoutObject}->Attachment(
+            ContentType => 'text/html; charset=' . $Self->{LayoutObject}->{Charset},
+            Content     => $ProcessDataYAML,
+            Type        => 'attachment',
+            Filename    => 'Export_ProcessEntityID_' . $ProcessData->{Process}->{EntityID} . '.yml',
+            NoCache     => 1,
         );
-        if ( !$Process ) {
+    }
+
+    # ------------------------------------------------------------ #
+    # ProcessPrint
+    # ------------------------------------------------------------ #
+    elsif ( $Self->{Subaction} eq 'ProcessPrint' ) {
+
+        # check for ProcessID
+        my $ProcessID = $Self->{ParamObject}->GetParam( Param => 'ID' ) || '';
+        if ( !$ProcessID ) {
             return $Self->{LayoutObject}->ErrorScreen(
-                Message => "Unknown Process $ProcessID!",
+                Message => "Need ProcessID!",
             );
         }
-        $ProcessData{Process} = $Process;
 
-        # get all used activities
-        for my $ActivityEntityID ( @{ $Process->{Activities} } ) {
+        my $ProcessData = $Self->_GetProcessData(
+            ID => $ProcessID
+        );
 
-            my $Activity = $Self->{ActivityObject}->ActivityGet(
-                EntityID => $ActivityEntityID,
-                UserID   => $Self->{UserID},
+        my $Output = $Self->{LayoutObject}->Header(
+            Value => $Param{Title},
+            Type  => 'Small',
+        );
+
+        # print all activities
+        if ( $ProcessData->{Activities} && %{ $ProcessData->{Activities} } ) {
+
+            for my $ActivityEntityID ( sort keys %{ $ProcessData->{Activities} } ) {
+
+                $Self->{LayoutObject}->Block(
+                    Name => 'ActivityRow',
+                    Data => {
+                        %{ $ProcessData->{Activities}->{$ActivityEntityID} },
+                        DialogCount =>
+                            scalar
+                            @{ $ProcessData->{Activities}->{$ActivityEntityID}->{ActivityDialogs} },
+                    },
+                );
+
+                # list all assigned dialogs
+                my $AssignedDialogs
+                    = $ProcessData->{Activities}->{$ActivityEntityID}->{Config}->{ActivityDialog};
+                if ( $AssignedDialogs && %{$AssignedDialogs} ) {
+
+                    $Self->{LayoutObject}->Block(
+                        Name => 'AssignedDialogs',
+                    );
+
+                    for my $AssignedDialog ( sort keys %{$AssignedDialogs} ) {
+
+                        my $AssignedDialogEntityID
+                            = $ProcessData->{Activities}->{$ActivityEntityID}->{Config}
+                            ->{ActivityDialog}->{$AssignedDialog};
+
+                        $Self->{LayoutObject}->Block(
+                            Name => 'AssignedDialogsRow',
+                            Data => {
+                                Name => $ProcessData->{ActivityDialogs}->{$AssignedDialogEntityID}
+                                    ->{Name},
+                                EntityID => $AssignedDialogEntityID,
+                            },
+                        );
+                    }
+                }
+            }
+        }
+        else {
+            $Self->{LayoutObject}->Block(
+                Name => 'ActivityRowEmpty',
             );
-            $ProcessData{Activities}->{$ActivityEntityID} = $Activity;
+        }
 
-            # get all used activity dialogs
-            for my $ActivityDialogEntityID ( @{ $Activity->{ActivityDialogs} } ) {
+        # print all activity dialogs
+        if ( $ProcessData->{ActivityDialogs} && %{ $ProcessData->{ActivityDialogs} } ) {
 
-                my $ActivityDialog = $Self->{ActivityDialogObject}->ActivityDialogGet(
-                    EntityID => $ActivityDialogEntityID,
-                    UserID   => $Self->{UserID},
+            for my $ActivityDialogEntityID ( sort keys %{ $ProcessData->{ActivityDialogs} } ) {
+
+                $Self->{LayoutObject}->Block(
+                    Name => 'ActivityDialogRow',
+                    Data => {
+                        ShownIn => join(
+                            ', ',
+                            @{
+                                $ProcessData->{ActivityDialogs}->{$ActivityDialogEntityID}
+                                    ->{Config}->{Interface}
+                                }
+                        ),
+                        %{ $ProcessData->{ActivityDialogs}->{$ActivityDialogEntityID} },
+                    },
                 );
-                $ProcessData{ActivityDialogs}->{$ActivityDialogEntityID} = $ActivityDialog;
+
+                # list all assigned fields
+                my $AssignedFields
+                    = $ProcessData->{ActivityDialogs}->{$ActivityDialogEntityID}->{Config}
+                    ->{FieldOrder};
+                if ( $AssignedFields && @{$AssignedFields} ) {
+
+                    $Self->{LayoutObject}->Block(
+                        Name => 'AssignedFields',
+                    );
+
+                    for my $AssignedField ( @{$AssignedFields} ) {
+
+                        $Self->{LayoutObject}->Block(
+                            Name => 'AssignedFieldsRow',
+                            Data => {
+                                Name => $AssignedField,
+                            },
+                        );
+                    }
+                }
             }
         }
+        else {
+            $Self->{LayoutObject}->Block(
+                Name => 'ActivityDialogRowEmpty',
+            );
+        }
 
-        # get all used transitions
-        for my $TransitionEntityID ( @{ $Process->{Transitions} } ) {
+        # print all transitions
+        if ( $ProcessData->{Transitions} && %{ $ProcessData->{Transitions} } ) {
 
-            my $Transition = $Self->{TransitionObject}->TransitionGet(
-                EntityID => $TransitionEntityID,
-                UserID   => $Self->{UserID},
+            for my $TransitionEntityID ( sort keys %{ $ProcessData->{Transitions} } ) {
+
+                my $Indent = $Data::Dumper::Indent;
+                $Data::Dumper::Indent = 1;
+                my $Config = Dumper( $ProcessData->{Transitions}->{$TransitionEntityID}->{Config} );
+                $Data::Dumper::Indent = $Indent;
+
+                $Config =~ s{ \s* \$VAR1 \s* =}{}xms;
+                $Config =~ s{\s+\{}{\{}xms;
+
+                $Self->{LayoutObject}->Block(
+                    Name => 'TransitionRow',
+                    Data => {
+                        %{ $ProcessData->{Transitions}->{$TransitionEntityID} },
+                        Config => $Config,
+                    },
+                );
+            }
+        }
+        else {
+            $Self->{LayoutObject}->Block(
+                Name => 'TransitionRowEmpty',
             );
-            $ProcessData{Transitions}->{$TransitionEntityID} = $Transition;
         }
 
-        # get all used transition actions
-        for my $TransitionActionEntityID ( @{ $Process->{TransitionActions} } ) {
+        # print all transition actions
+        if ( $ProcessData->{TransitionActions} && %{ $ProcessData->{TransitionActions} } ) {
 
-            my $TransitionAction = $Self->{TransitionActionObject}->TransitionActionGet(
-                EntityID => $TransitionActionEntityID,
-                UserID   => $Self->{UserID},
+            for my $TransitionActionEntityID ( sort keys %{ $ProcessData->{TransitionActions} } ) {
+
+                $Self->{LayoutObject}->Block(
+                    Name => 'TransitionActionRow',
+                    Data => {
+                        Module => $ProcessData->{TransitionActions}->{$TransitionActionEntityID}
+                            ->{Config}->{Module},
+                        %{ $ProcessData->{TransitionActions}->{$TransitionActionEntityID} },
+                    },
+                );
+
+                # list config
+                my $Config
+                    = $ProcessData->{TransitionActions}->{$TransitionActionEntityID}->{Config}
+                    ->{Config};
+                if ( $Config && %{$Config} ) {
+
+                    $Self->{LayoutObject}->Block(
+                        Name => 'Config',
+                    );
+
+                    for my $ConfigItem ( keys %{$Config} ) {
+
+                        $Self->{LayoutObject}->Block(
+                            Name => 'ConfigRow',
+                            Data => {
+                                Name  => $ConfigItem,
+                                Value => $Config->{$ConfigItem},
+                            },
+                        );
+                    }
+                }
+
+            }
+        }
+        else {
+            $Self->{LayoutObject}->Block(
+                Name => 'TransitionActionRowEmpty',
             );
-            $ProcessData{TransitionActions}->{$TransitionActionEntityID} = $TransitionAction;
         }
 
-        # convert the processdata hash to string
-        my $ProcessData = $Self->{YAMLObject}->Dump( Data => \%ProcessData );
+        # get logo
+        my $Logo = $Self->{ConfigObject}->Get('AgentLogo');
+        if ( $Logo && %{$Logo} ) {
+            $Self->{LayoutObject}->Block(
+                Name => 'Logo',
+                Data => {
+                    LogoURL => $Param{LogoURL}
+                        = $Self->{ConfigObject}->Get('Frontend::WebPath') . $Logo->{URL},
+                },
+            );
+        }
 
-        # send the result to the browser
-        return $Self->{LayoutObject}->Attachment(
-            ContentType => 'text/html; charset=' . $Self->{LayoutObject}->{Charset},
-            Content     => $ProcessData,
-            Type        => 'attachment',
-            Filename    => 'Export_ProcessEntityID_' . $Process->{EntityID} . '.yml',
-            NoCache     => 1,
+        $Output .= $Self->{LayoutObject}->Output(
+            TemplateFile => "AdminProcessManagementProcessPrint",
+            Data         => {
+                Name => $ProcessData->{Process}->{Name} . ' ('
+                    . $ProcessData->{Process}->{EntityID} . ')',
+                State => $ProcessData->{Process}->{State} . ' ('
+                    . $ProcessData->{Process}->{StateEntityID} . ')',
+                %Param,
+            },
         );
+
+        $Output .= $Self->{LayoutObject}->Footer();
+
+        return $Output;
     }
 
@@ -1776,3 +1944,64 @@
 }
 
+sub _GetProcessData {
+
+    my ( $Self, %Param ) = @_;
+
+    my %ProcessData;
+
+    # get process data
+    my $Process = $Self->{ProcessObject}->ProcessGet(
+        ID     => $Param{ID},
+        UserID => $Self->{UserID},
+    );
+    if ( !$Process ) {
+        return $Self->{LayoutObject}->ErrorScreen(
+            Message => "Unknown Process $Param{ID}!",
+        );
+    }
+    $ProcessData{Process} = $Process;
+
+    # get all used activities
+    for my $ActivityEntityID ( @{ $Process->{Activities} } ) {
+
+        my $Activity = $Self->{ActivityObject}->ActivityGet(
+            EntityID => $ActivityEntityID,
+            UserID   => $Self->{UserID},
+        );
+        $ProcessData{Activities}->{$ActivityEntityID} = $Activity;
+
+        # get all used activity dialogs
+        for my $ActivityDialogEntityID ( @{ $Activity->{ActivityDialogs} } ) {
+
+            my $ActivityDialog = $Self->{ActivityDialogObject}->ActivityDialogGet(
+                EntityID => $ActivityDialogEntityID,
+                UserID   => $Self->{UserID},
+            );
+            $ProcessData{ActivityDialogs}->{$ActivityDialogEntityID} = $ActivityDialog;
+        }
+    }
+
+    # get all used transitions
+    for my $TransitionEntityID ( @{ $Process->{Transitions} } ) {
+
+        my $Transition = $Self->{TransitionObject}->TransitionGet(
+            EntityID => $TransitionEntityID,
+            UserID   => $Self->{UserID},
+        );
+        $ProcessData{Transitions}->{$TransitionEntityID} = $Transition;
+    }
+
+    # get all used transition actions
+    for my $TransitionActionEntityID ( @{ $Process->{TransitionActions} } ) {
+
+        my $TransitionAction = $Self->{TransitionActionObject}->TransitionActionGet(
+            EntityID => $TransitionActionEntityID,
+            UserID   => $Self->{UserID},
+        );
+        $ProcessData{TransitionActions}->{$TransitionActionEntityID} = $TransitionAction;
+    }
+
+    return \%ProcessData;
+}
+
 1;
---------------------------------------------------------------------
OTRS mailing list: cvs-log - Webpage: http://otrs.org/
Archive: http://lists.otrs.org/pipermail/cvs-log
To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/cvs-log
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.