Interne uitbreiding van het OTOBO-kernelsysteem
In dit artikel leert u hoe u OTOBO rechtstreeks in de kernel kunt aanpassen – via XML-configuratie, Perl-modules en templates. We laten u stap voor stap zien hoe u een eigen „HelloWorld“-module in het systeem integreert.
1. Mapstructuur
Alle aanpassingen bevinden zich onder uw OTOBO-clone in de Kernel/
-map:
Kernel/
├─ Config/Files/ # XML-registraties
│ └─ XML/
├─ System/ # Geschäftslogica-modules (Core)
├─ Modules/ # Frontend-controllers (Agent/Klant)
├─ Output/HTML/Standard/ # Template Toolkit (TT)-templates
└─ Language/ # Vertalingen
2. XML-configuratie
Nieuwe modules en routes worden via XML geregistreerd. Maak in Kernel/Config/Files/XML/
een bestand HelloWorld.xml
aan:
<?xml version="1.0" encoding="UTF-8"?>
<otobo_config version="2.0" init="Application">
<!-- 1. Frontend-module registreren -->
<Setting Name="Frontend::Module###AgentHelloWorld" Required="1" Valid="1">
<Navigation>Frontend::Agent::ModuleRegistration</Navigation>
<Value>
<Item ValueType="FrontendRegistration">
<Hash>
<Item Key="Group"><Array><Item>gebruikers</Item></Array></Item>
<Item Key="Description" Translatable="1">HelloWorld-module</Item>
<Item Key="Title" Translatable="1">HelloWorld</Item>
<Item Key="NavBarName">HelloWorld</Item>
</Hash>
</Item>
</Value>
</Setting>
</otobo_config>
3. Core-module (Geschäftslogica)
Maak in Kernel/System/HelloWorld.pm
uw logica aan:
package Kernel::System::HelloWorld;
use strict;
use warnings;
our @ObjectDependencies = ();
sub new {
my ($Type, %Param) = @_;
return bless {}, $Type;
}
sub GetHelloWorldText {
my ($Self, %Param) = @_;
return $Self->_FormatText(String => 'Hello World');
}
sub _FormatText {
my ($Self, %Param) = @_;
return uc $Param{String};
}
1;
4. Frontend-module (Controller)
In Kernel/Modules/AgentHelloWorld.pm
integreert u uw logica in het Agent-frontend:
package Kernel::Modules::AgentHelloWorld;
use strict;
use warnings;
sub new { bless {}, shift }
sub Run {
my ($Self, %Param) = @_;
my $HelloObj = $Kernel::OM->Get('Kernel::System::HelloWorld');
my $LayoutObj = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
my %Data;
$Data{Text} = $HelloObj->GetHelloWorldText();
return
$LayoutObj->Header(Title => 'HelloWorld')
. $LayoutObj->NavigationBar()
. $LayoutObj->Output(
TemplateFile => 'AgentHelloWorld',
Data => \%Data,
)
. $LayoutObj->Footer();
}
1;
5. Templates (TT)
Maak in Kernel/Output/HTML/Standard/AgentHelloWorld.tt
het volgende template aan:
[% Data.Text %]
<p>Dit is uw zelfgemaakte HelloWorld-module!</p>
6. Voorbeeld-workflow
Opnieuw laden:
bashbin/otobo.Console.pl Maint::Config::Rebuild
Cache legen:
bashbin/otobo.Console.pl Maint::Cache::Delete
Browser openen: Agent-interface → Menu → „HelloWorld“
7. Tips & Best Practices
- ObjectDependencies netjes declareren (bijv. DB, Layout).
- POD-documentatie in Perl-modules niet vergeten.
- Vertalingen onder
Kernel/Language/nl_*.pm
onderhouden. - Unit-tests met Mojolicious instellen (optioneel).
- Na elke wijziging Config rebuild & Cache legen.
Hiermee heeft u een solide sjabloon om verdere kernel-uitbreidingen in OTOBO te realiseren. Veel plezier bij het ontwikkelen!