Tartalom
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/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/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="1.0" init="Application"> <ConfigItem Name="Frontend::Module###AgentHelloWorld" Required="1" Valid="1"> <Description Translatable="1">FrontendModuleRegistration for HelloWorld module.</Description> <Group>HelloWorld</Group> <SubGroup>Frontend::Agent::ModuleRegistration</SubGroup> <Setting> <FrontendModuleReg> <Title>HelloWorld</Title> <Group>users</Group> <Description>HelloWorld</Description> <NavBarName>HelloWorld</NavBarName> <NavBar> <Description>HelloWorld</Description> <Name>HelloWorld</Name> <Link>Action=AgentHelloWorld</Link> <NavBar>HelloWorld</NavBar> <Type>Menu</Type> <Prio>8400</Prio> <Block>ItemArea</Block> </NavBar> </FrontendModuleReg> </Setting> </ConfigItem> </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', ); sub new { my ( $Type, %Param ) = @_; # allocate new hash for object my $Self = {}; bless ($Self, $Type); return $Self; } sub GetHelloWorldText { my ( $Self, %Param ) = @_; # Get the DBObject from the central object manager # my $DBObject = $Kernel::OM->Get('Kernel::System::DB'); return 'Hello World!'; } 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).