- OTRS Admin Manual
- OTRS::ITSM Manual
- OTRS Developer Manual
- OTRS API Reference
TartalomToggle
Article navigation Toggle
Ebben a fejezetben egy új OTRS modul írása van szemléltetve egy egyszerű kis program alapján. A szükséges előkövetelmény egy olyan OTRS fejlesztői környezet, amely a hasonló nevű fejezetben van megadva.
Szeretnénk írni egy olyan kis OTRS modult, amely a „Hello World” szöveget
jeleníti meg, amikor előhívják. Mindenek előtt fel kell építenünk a
/Hello World
könyvtárat a modulhoz a fejlesztői
könyvtárban. Ebben a könyvtárban létrehozható az OTRS-ben meglévő összes
könyvtár. Minden modulnak legalább a következő könyvtárakat kell
tartalmaznia:
Kernel Kernel/System Kernel/Modules Kernel/Output/HTML/Templates/Standard Kernel/Config Kernel/Config/Files Kernel/Config/Files/XML/ Kernel/Language
Egy modulregisztráció létrehozása megkönnyíti az új modul megjelenítését az
OTRS-ben. Ezért létrehozunk egy
/Kernel/Config/Files/XML/HelloWorld.xml
fájlt. Ebben a
fájlban létrehozunk egy új beállítási elemet. A különféle beállítások hatása
a „Beállítási mechanizmus” fejezetben van leírva.
<?xml version="1.0" encoding="UTF-8" ?>
<otrs_config version="2.0" init="Application">
<Setting Name="Frontend::Module###AgentHelloWorld" Required="1" Valid="1">
<Description Translatable="1">FrontendModuleRegistration for HelloWorld module.</Description>
<Navigation>Frontend::Agent::ModuleRegistration</Navigation>
<Value>
<Item ValueType="FrontendRegistration">
<Hash>
<Item Key="Group">
<Array>
<Item>users</Item>
</Array>
</Item>
<Item Key="GroupRo">
<Array>
</Array>
</Item>
<Item Key="Description" Translatable="1">HelloWorld.</Item>
<Item Key="Title" Translatable="1">HelloWorld</Item>
<Item Key="NavBarName">HelloWorld</Item>
</Hash>
</Item>
</Value>
</Setting>
<Setting Name="Loader::Module::AgentHelloWorld###002-Filename" Required="0" Valid="1">
<Description Translatable="1">Loader module registration for the agent interface.</Description>
<Navigation>Frontend::Agent::ModuleRegistration::Loader</Navigation>
<Value>
<Hash>
<Item Key="CSS">
<Array>
</Array>
</Item>
<Item Key="JavaScript">
<Array>
</Array>
</Item>
</Hash>
</Value>
</Setting>
<Setting Name="Frontend::Navigation###AgentHelloWorld###002-Filename" Required="0" Valid="1">
<Description Translatable="1">Main menu item registration.</Description>
<Navigation>Frontend::Agent::ModuleRegistration::MainMenu</Navigation>
<Value>
<Array>
<DefaultItem ValueType="FrontendNavigation">
<Hash>
</Hash>
</DefaultItem>
<Item>
<Hash>
<Item Key="Group">
<Array>
<Item>users</Item>
</Array>
</Item>
<Item Key="GroupRo">
<Array>
</Array>
</Item>
<Item Key="Description" Translatable="1">HelloWorld.</Item>
<Item Key="Name" Translatable="1">HelloWorld</Item>
<Item Key="Link">Action=AgentHelloWorld</Item>
<Item Key="LinkOption"></Item>
<Item Key="NavBar">HelloWorld</Item>
<Item Key="Type">Menu</Item>
<Item Key="Block"></Item>
<Item Key="AccessKey"></Item>
<Item Key="Prio">8400</Item>
</Hash>
</Item>
</Array>
</Value>
</Setting>
</otrs_config>
A hivatkozások létrehozása és a rendszerbeállítások végrehajtása után megjelenik egy új modul „HelloWorld” néven. Előhívásakor egy hibaüzenet jelenik meg, mivel az OTRS még nem találja a hozzá tartozó előtétprogram modult. Ez a következő dolog, amit létre kell hozni. Ehhez hozzuk létre az alábbi fájlt:
# --
# Kernel/Modules/AgentHelloWorld.pm - frontend module
# Copyright (C) (year) (name of author) (email of author)
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
package Kernel::Modules::AgentHelloWorld;
use strict;
use warnings;
# Frontend modules are not handled by the ObjectManager.
our $ObjectManagerDisabled = 1;
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {%Param};
bless ($Self, $Type);
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
my %Data = ();
my $HelloWorldObject = $Kernel::OM->Get('Kernel::System::HelloWorld');
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
$Data{HelloWorldText} = $HelloWorldObject->GetHelloWorldText();
# build output
my $Output = $LayoutObject->Header(Title => "HelloWorld");
$Output .= $LayoutObject->NavigationBar();
$Output .= $LayoutObject->Output(
Data => \%Data,
TemplateFile => 'AgentHelloWorld',
);
$Output .= $LayoutObject->Footer();
return $Output;
}
1;
Ezután hozzunk létre egy fájlt a
/HelloWorld/Kernel/System/HelloWorld.pm
alapmodulhoz az
alábbi tartalommal:
# --
# Kernel/System/HelloWorld.pm - core module
# Copyright (C) (year) (name of author) (email of author)
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
package Kernel::System::HelloWorld;
use strict;
use warnings;
# list your object dependencies (e.g. Kernel::System::DB) here
our @ObjectDependencies = (
# 'Kernel::System::DB',
);
=head1 NAME
HelloWorld - Little "Hello World" module
=head1 DESCRIPTION
Little OTRS module that displays the text 'Hello World' when called up.
=head2 new()
Create an object. Do not use it directly, instead use:
my $HelloWorldObject = $Kernel::OM->Get('Kernel::System::HelloWorld');
=cut
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless ($Self, $Type);
return $Self;
}
=head2 GetHelloWorldText()
Return the "Hello World" text.
my $HelloWorldText = $HelloWorldObject->GetHelloWorldText();
=cut
sub GetHelloWorldText {
my ( $Self, %Param ) = @_;
# Get the DBObject from the central object manager
# my $DBObject = $Kernel::OM->Get('Kernel::System::DB');
my $HelloWorld = $Self->_FormatHelloWorldText(
String => 'Hello World',
);
return $HelloWorld;
}
=begin Internal:
=cut
=head2 _FormatHelloWorldText()
Format "Hello World" text to uppercase
my $HelloWorld = $Self->_FormatHelloWorldText(
String => 'Hello World',
);
sub _FormatHelloWorldText{
my ( $Self, %Param ) = @_;
my $HelloWorld = uc $Param{String};
return $HelloWorld;
}
=end Internal:
1;
Az utolsó hiányzó dolog, mielőtt az új modul futtatható lenne, a hozzá tartozó HTML sablon. Ezért hozzuk létre az alábbi fájlt:
# --
# Kernel/Output/HTML/Templates/Standard/AgentHelloWorld.tt - overview
# Copyright (C) (year) (name of author) (email of author)
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
<h1>[% Translate("Overview") | html %]: [% Translate("HelloWorld") %]</h1>
<p>
[% Data.HelloWorldText | Translate() | html %]
</p>
A modul most már működik, és a meghívásakor megjeleníti a „Hello World” szöveget.
Ha a „Hello World!” szöveget le kell fordítani például magyarra, akkor
létrehozhat egy fordítási fájlt ehhez a nyelvhez a
HelloWorld/Kernel/Language/hu_AgentHelloWorld.pm
helyre. Példa:
package Kernel::Language::hu_AgentHelloWorld;
use strict;
use warnings;
sub Data {
my $Self = shift;
$Self->{Translation}->{'Hello World!'} = 'Helló, Világ!';
return 1;
}
1;
A fent megadott példa azt mutatja be, hogy nem túl bonyolult egy új modult írni az OTRS-hez. Fontos azonban meggyőződni arról, hogy a modul és a fájlnév egyedi legyen, és ennélfogva ne ütközzenek a keretrendszerrel vagy egyéb kiterjesztő modulokkal. Amikor egy modul elkészült, akkor egy OPM csomagot kell előállítani belőle (lásd a csomagkészítés fejezetet).