2. fejezet - OTRS belsőségek - hogyan működik

Tartalom

Beállítási mechanizmus
Defaults.pm: az OTRS alapértelmezett beállításai
Automatikusan előállított beállítófájlok
XML beállítófájlok
A Value elemek szerkezete
Értéktípusok
DefaultItem az Array és Hash elemekben
Hozzáférés a beállítási lehetőségekhez futási időben
Adatbázis mechanizmus
Hogyan működik
SQL
XML
Adatbázis-meghajtók
Támogatott adatbázisok
Naplózó mechanizmus
Rendszernapló
Kommunikáció napló
Dátum és idő
Bevezetés
Egy DateTime objektum létrehozása
Időzónák
Metódus összefoglaló
Objektumlétrehozási metódusok
Lekérő metódus
Beállító metódus
Időzóna metódusok
Összehasonlító operátorok és metódusok
Elavult Kernel::System::Time csomag
Felszínek
Felszín alapok
Hogyan töltődnek be a felszínek
Új felszín létrehozása
A CSS és JavaScript „betöltő”
Hogyan működik
Alapvető működés
A betöltő beállítása: JavaScript
Közös JavaScript
Modulspecifikus JavaScript
A betöltő beállítása: CSS
Közös CSS
Sablonozó mechanizmus
Sablonparancsok
Dinamikus adatok beszúrása
Honosítási parancsok
Sablonfeldolgozó parancsok
[% WRAPPER JSOnDocumentComplete %]...[% END %]
Egy sablonfájl használata
Saját témák létrehozása
Honosítási és fordítási mechanizmus
Lefordítható szövegek megjelölése a forrásfájlokban
Lefordítható szövegek összegyűjtése a fordítási adatbázisba
Alapértelmezett keretrendszer fordítási fájl
Egyéni fordítási fájl
Maga a fordítási folyamat
A kódból lefordított adatok használata

Beállítási mechanizmus

Az OTRS dedikált mechanizmussal érkezik a konfigurációs beállítások kezeléséhez egy grafikus felületen (rendszerbeállításokon) keresztül. Ez a szakasz azt írja le, hogy hogyan működik belsőleg, és hogyan adhat meg új konfigurációs beállításokat, vagy hogyan változtathatja meg a meglévő alapértelmezett értékeket.

Defaults.pm: az OTRS alapértelmezett beállításai

Az OTRS alapértelmezett beállítófájlja a Kernel/Config/Defaults.pm. Ez a fájl szükséges az üzembe állított XML-beállítások nélküli, frissen telepített rendszerek működéséhez, és a fájlt érintetlenül kell hagyni, mivel automatikusan frissítésre kerül a keretrendszer frissítéseikor.

Automatikusan előállított beállítófájlok

A Kernel/Config/Files mappában néhány automatikusan előállított beállítófájl található:

ZZZAAuto.pm

Az XML beállítások aktuális értékeinek Perl gyorsítótára (alapértelmezett vagy a felhasználó által módosított)

ZZZACL.pm

Az adatbázisból származó ACL beállítások Perl gyorsítótára

ZZZACL.pm

Az adatbázisból származó folyamatmenedzsment beállítások Perl gyorsítótára

Ezek a fájlok az aktuális rendszerbeállítások Perl változatai. Sosem szabad kézzel megváltoztatni, mivel az OTRS felülírja azokat.

XML beállítófájlok

Az OTRS-ben azok a beállítási lehetőségek, amelyeket az adminisztrátor a rendszerbeállításokon keresztül be tud állítani, különleges formátumban lévő XML-fájlokon keresztül biztosítottak. A régi XML-ek átalakításához használhatja a otrs.Console.pl Dev::Tools::Migrate::ConfigXMLStructure parancsot. A Kernel/Config/Files/ZZZAAuto.pm fájl az XML gyorsítótárazott Perl verziója, amely tartalmazza az összes beállítás azok aktuális értékeivel. Újra előállíthatók a bin/otrs.Console.pl Maint::Config::Rebuild paranccsal.

Megjegyzés: Az $OTRS_HOME/Kernel/Config/Files/ZZZAuto.pm fájl többé nem létezik, be lett olvasztva az $OTRS_HOME/Kernel/Config/Files/ZZZAAuto.pm fájlba.

Az egyes XML beállítófájloknak a következő elrendezésük van:

<?xml version="1.0" encoding="utf-8" ?>
<otrs_config version="2.0" init="Changes">

    <!-- itt lesznek a beállítások -->

</otrs_config>
            

Az otrs_config elem attribútumai

init

A globális init attribútum azt írja le, hogy honnan kell a beállítási lehetőségeket betölteni. Különböző szintek érhetők el, és a következő sorrendben lesznek betöltve/felülírva: Framework (a keretrendszer beállításaihoz, például munkamenet beállítás), Application (az alkalmazás beállításaihoz, például jegybeállítások), Config (kiterjesztésekhez a meglévő alkalmazásoknál, például ITSM beállítások) és Changes (egyéni fejlesztésekhez, például keretrendszer vagy jegybeállítások felülírásához).

A beállítási elemek Setting elemekként vannak írva egy Description leírással, egy Navigation csoporttal (a fa alapú navigációhoz a grafikus felhasználói felületen) és a Value értékkel, amely azt képviseli. Álljon itt egy példa:

<Setting Name="Ticket::Hook" Required="1" Valid="1">
    <Description Translatable="1">The identifier for a ticket, e.g. Ticket#, Call#, MyTicket#. The default is Ticket#.</Description>
    <Navigation>Core::Ticket</Navigation>
    <Value>
        <Item ValueType="String" ValueRegex="">Ticket#</Item>
    </Value>
</Setting>
            

A Setting elem attribútumai

Required

Ha ez 1 értékre van állítva, akkor a konfigurációs beállítást nem lehet letiltani.

Valid

Meghatározza, hogy a konfigurációs beállítás alapértelmezetten be van kapcsolva (1) vagy ki van kapcsolva (0).

ConfigLevel

Ha az opcionális ConfigLevel attribútum be van állítva, akkor a beállítási változót esetleg nem szerkesztheti az adminisztrátor a saját beállítási szintjétől függően. A ConfigLevel beállítási változó állítja be az adminisztrátor szakmai tapasztalatának szintjét. Lehet 100 (Szakértő), 200 (Speciális) vagy 300 (Kezdő). Iránymutatásként, hogy mely beállítási szintet kell egy lehetőséghez megadni, az az ajánlott, hogy az összes olyan lehetőségnek, amelyet külső interakció beállításával kell megtenni (mint például Sendmail, LDAP, SOAP és egyebek), legalább 200 (Speciális) beállítási szintet kell kapnia.

Invisible

Ha 1 értékre van állítva, akkor a konfigurációs beállítás nem jelenik meg a grafikus felhasználói felületen.

Readonly

Ha 1 értékre van állítva, akkor a konfigurációs beállítást nem lehet megváltoztatni a grafikus felhasználói felületen.

UserModificationPossible

Ha a UserModificationPossible 1 értékre van állítva, akkor az adminisztrátorok engedélyezhetik a beállítás felhasználói módosításait (a felhasználói beállításokban). Ne feledje, hogy ez a funkció az OTRS Business Solution™ meglétét igényli.

UserModificationActive

Ha a UserModificationActive 1 értékre van állítva, akkor a beállítás felhasználói módosításai engedélyezve vannak (a felhasználói beállításokban). Ezt az attribútumot a UserModificationPossible attribútummal együtt kell használnia.

UserPreferencesGroup

Használja a UserPreferencesGroup attribútumot annak meghatározásához, hogy mely csoport alá tartozik a konfigurációs érték (a felhasználói beállítások képernyőn). Ezt az attribútumot a UserModificationPossible attribútummal együtt kell használnia.

Iránymutatások a beállítások megfelelő Navigation csomópontokba való elhelyezéséhez

  • Csak akkor hozzon létre új csomópontot, ha szükséges. Kerülje a csak nagyon kevés beállítással rendelkező csomópontokat, ha lehetséges.

  • A fa első szintjén nem szabad új csomópontokat hozzáadni.

  • Ne tegyen új beállításokat a Core csomópontba közvetlenül. Ez néhány fontos globális beállításnak van fenntartva.

  • A Core::* kaphat új csoportokat, amelyek hasonló témát lefedő beállításokat tartalmaznak (például Core::Email) vagy ugyanahhoz az entitáshoz kapcsolódnak (például Core::Queue).

  • Az összes eseménykezelő regisztráció a Core::Event csoportba kerüljön.

  • Ne adjon hozzá új közvetlen gyermekcsomópontokat a Frontend csomóponton belül. A globális előtétprogram beállítások a Frontend::Base csoportba kerüljenek, a csak a rendszer egy részét érintő beállítások a megfelelő Admin, Agent, Customer vagy Public alcsoportokba kerüljenek.

  • Azok az előtétprogram beállítások, amelyek csak egy képernyőt érintenek, a kapcsolódó képernyő (View) csomópontjába (hozzon létre egyet, ha szükséges) kerüljenek. Például az AgentTicketZoom képernyőhöz kapcsolódó beállítások a Frontend::Agent::View::TicketZoom csoportba kerüljenek. Ha kapcsolódó beállítások csoportjaival rendelkező modulrétegek vannak egy képernyőn belül, akkor azok is kerülhetnek ide egy alcsoportba (például Frontend::Agent::View::TicketZoom::MenuModule az összes jegynagyítás menü modulregisztrációjához).

  • Az összes globális betöltő beállítások a Frontend::Base::Loader csoportba, a képernyőre jellemző betöltő beállítások a Frontend::*::ModuleRegistration::Loader csoportba kerüljenek.

A Value elemek szerkezete

A Value elemek tartalmazzák a tényleges beállítási adatok hasznos terhét. Tartalmazhatnak önálló értékeket, kivonatokat vagy tömböket.

Item

Egy Item elem egyetlen adatot tartalmaz. Az elhagyható ValueType attribútum határozza meg, hogy milyen típusú adat, és hogyan kell megjeleníteni a felhasználónak a grafikus felületen. Ha nincs ValueType megadva, akkor alapértelmezetten String lesz.

Nézze meg a lent a különböző értéktípusok meghatározását.

<Setting Name="Ticket::Hook" Required="1" Valid="1">
    <Description Translatable="1">The identifier for a ticket, e.g. Ticket#, Call#, MyTicket#. The default is Ticket#.</Description>
    <Navigation>Core::Ticket</Navigation>
    <Value>
        <Item ValueType="String" ValueRegex="">Ticket#</Item>
    </Value>
</Setting>
                    

Array

Ezzel a beállítási elemmel tömbök jeleníthetők meg.

<Setting Name="SettingName">
    ...
    <Value>
        <Array>
            <Item Translatable="1">1. érték</Item>
            <Item Translatable="1">2. érték</Item>
            ...
        </Array>
    </Value>
</Setting>
                    

Hash

Ezzel a beállítási elemmel kivonatok jeleníthetők meg.

<Setting Name="SettingName">
    ...
    <Value>
        <Hash>
            <Item Key="Egy" Translatable="1">Első</Item>
            <Item Key="Ketto" Translatable="1">Második</Item>
            ...
        </Hash>
    </Value>
</Setting>
                    

Lehetőség van egymásba ágyazott tömb vagy kivonat elemek meglétére is (mint például tömbök kivonata, kivonatok tömbje, tömbök kivonatainak tömbje, stb.). Lent van egy példa a kivonatok tömbjére.

<Setting Name="ExampleAoH">
    ...
    <Value>
        <Array>
            <DefaultItem>
                <Hash>
                    <Item></Item>
                </Hash>
            </DefaultItem>
            <Item>
                <Hash>
                    <Item Key="Egy">1</Item>
                    <Item Key="Ketto">2</Item>
                </Hash>
            </Item>
            <Item>
                <Hash>
                    <Item Key="Harom">3</Item>
                    <Item Key="Negy">4</Item>
                </Hash>
            </Item>
        </Array>
    </Value>
</Setting>
                    

Értéktípusok

Az XML konfigurációs beállítások különféle típusú beállítási változókat támogatnak.

String

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="String" ValueRegex=""></Item>
    </Value>
</Setting>
                    

Egy beállítási elem számokhoz és egysoros karakterláncokhoz. Ellenőrizhető az érvényesség egy reguláris kifejezéssel, ha lehetséges (elhagyható). Ez az alapértelmezett ValueType.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="String" ValueRegex="" Translatable="1">Érték</Item>
    </Value>
</Setting>
                    

Az opcionális Translatable attribútum jelöli meg ezt a beállítást fordíthatóként, amely azt fogja eredményezni, hogy fel lesz véve az OTRS fordítási fájljaiba. Ezt az attribútumot bármely címkére el lehet helyezni (lásd lent is).

Password

Egy beállítási elem jelszavakhoz. Továbbra is egyszerű szövegként van tárolva az XML-ben, de el van fedve a grafikus felhasználói felületen.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="Password">Titok</Item>
    </Value>
</Setting>
                    

PerlModule

Egy beállítási elem Perl-modulhoz. Rendelkezik egy ValueFilter attribútummal, amely szűri a lehetséges értékeket a kiválasztásnál. A lenti példában a felhasználó a Kernel::System::Log::SysLog vagy a Kernel::System::Log::File Perl-modult választhatja.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="PerlModule" ValueFilter="Kernel/System/Log/*.pm">Kernel::System::Log::SysLog</Item>
    </Value>
</Setting>
                    

Textarea

Egy beállítási elem többsoros szöveghez.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="Textarea"></Item>
    </Value>
</Setting>
                    

Select

Ez a beállítási elem előre beállított értékeket nyújt egy legördülő menüként. A SelectedID vagy a SelectedValue attribútumok előre kiválaszthatnak egy alapértelmezett értéket.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="Select" SelectedID="Queue">
            <Item ValueType="Option" Value="Queue" Translatable="1">Várólista</Item>
            <Item ValueType="Option" Value="SystemAddress" Translatable="1">Rendszercím</Item>
        </Item>
    </Value>
</Setting>
                    

Checkbox

Ennek a jelölőnégyzet beállítási elemnek két állapota van: 0 vagy 1.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="Checkbox">0</Item>
    </Value>
</Setting>
                    

Date

Ez a beállítási elem egy dátumértéket tartalmaz.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="Date">2016-02-02</Item>
    </Value>
</Setting>
                    

DateTime

Ez a beállítási elem egy dátumot és egy időértéket tartalmaz.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="DateTime">2016-12-08 01:02:03</Item>
    </Value>
</Setting>
                    

Könyvtár

Ez a beállítási elem egy könyvtárat tartalmaz.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="Directory">/etc</Item>
    </Value>
</Setting>
                    

File

Ez a beállítási elem egy fájlútvonalat tartalmaz.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="File">/etc/hosts</Item>
    </Value>
</Setting>
                    

Entity

Ez a beállítási elem egy bizonyos entitás értékét tartalmazza. A ValueEntityType attribútum határozza meg az entitás típusát. Támogatott entitások: DynamicField, Queue, Priority, State és Type. A következetesség-ellenőrzések fogják biztosítani, hogy csak érvényes entitások legyenek beállíthatók, és hogy azok az entitások, amelyeket a beállításokban használnak, ne legyenek érvénytelenre állíthatók. Amikor egy entitást átneveznek, akkor az összes hivatkozó konfigurációs beállítás frissítve lesz.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="Entity" ValueEntityType="Queue">Szemét</Item>
    </Value>
</Setting>
                    

TimeZone

Ez a beállítási elem egy időzóna értéket tartalmaz.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="TimeZone">UTC</Item>
    </Value>
</Setting>
                    

VacationDays

Ez a beállítási elem meghatározásokat tartalmaz az olyan munkaszüneti napokhoz, amelyek minden évben ismétlődnek. A következő attribútumok kötelezőek: ValueMonth, ValueDay.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="VacationDays">
            <DefaultItem ValueType="VacationDays"></DefaultItem>
            <Item ValueMonth="1" ValueDay="1" Translatable="1">Újév</Item>
            <Item ValueMonth="5" ValueDay="1" Translatable="1">A munka ünnepe</Item>
            <Item ValueMonth="12" ValueDay="24" Translatable="1">Szenteste</Item>
        </Item>
    </Value>
</Setting>
                    

VacationDaysOneTime

Ez a beállítási elem meghatározásokat tartalmaz az olyan munkaszüneti napokhoz, amelyek csak egyszer fordulnak elő. A következő attribútumok kötelezőek: ValueMonth, ValueDay és ValueYear.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="VacationDaysOneTime">
            <Item ValueYear="2004" ValueMonth="1" ValueDay="1">Teszt</Item>
        </Item>
    </Value>
</Setting>
                    

WorkingHours

Ez a beállítási elem meghatározásokat tartalmaz a munkaidőhöz.

<Setting Name="SettingName">
    ...
    <Value>
        <Item ValueType="WorkingHours">
            <Item ValueType="Day" ValueName="Mon">
                <Item ValueType="Hour">8</Item>
                <Item ValueType="Hour">9</Item>
            </Item>
            <Item ValueType="Day" ValueName="Tue">
                <Item ValueType="Hour">8</Item>
                <Item ValueType="Hour">9</Item>
            </Item>
        </Item>
    </Value>
</Setting>
                    

Előtétprogram regisztráció

Modul regisztráció az ügyintézői felülethez:

<Setting Name="SettiFrontend::Module###AgentModuleName">
    ...
    <Value>
        <Item ValueType="FrontendRegistration">
            <Hash>
                <Item Key="Group">
                    <Array>
                    </Array>
                </Item>
                <Item Key="GroupRo">
                    <Array>
                    </Array>
                </Item>
                <Item Key="Description" Translatable="1">Telefonhívás.</Item>
                <Item Key="Title" Translatable="1">Telefonos jegy</Item>
                <Item Key="NavBarName">Ticket</Item>
            </Hash>
        </Item>
    </Value>
</Setting>
                    

DefaultItem az Array és Hash elemekben

Az új XML szerkezet lehetővé teszi számunkra az összetett szerkezetek létrehozását. Ennélfogva szükségünk van alapértelmezett DefaultItem bejegyzésekre a tömb vagy kivonat szerkezetének leírásához. Ha ez nincs megadva, akkor a rendszer úgy tekinti, hogy egyszerű tömböt vagy kivonatot szeretne skalár értékekkel. A DefaultItem használható sablonként, amikor új elemeket adunk hozzá, így tartalmazhat további attribútumokat, mint például a ValueType, és meghatározhat alapértelmezett értékeket.

Itt van néhány példa:

Tömb tömbje Select elemekkel

<Array>
    <DefaultItem>
        <Array>
            <DefaultItem ValueType="Select" SelectedID='option-2'>
                <Item ValueType="Option" Value="option-1">1. lehetőség</Item>
                <Item ValueType="Option" Value="option-2">2. lehetőség</Item>
            </DefaultItem>
        </Array>
    </DefaultItem>
    ...
</Array>
                    

Kivonat kivonata Date elemekkel

<Hash>
    <DefaultItem>
        <Hash>
            <DefaultItem ValueType="Date">2017-01-01</DefaultItem>
        </Hash>
    </DefaultItem>
    ...
</Hash>
                    

Hozzáférés a beállítási lehetőségekhez futási időben

Olvashatja és írhatja (egy kérésnél) a beállítási lehetőségeket a Kernel::Config alapmodulon keresztül.

Ha egy beállítási lehetőséget szeretne olvasni:

my $ConfigOption = $Kernel::OM->Get('Kernel::Config')->Get('Prefix::Option');
            

Ha meg szeretne változtatni egy beállítási lehetőséget futási időben, és csak ennél az egy kérésnél/folyamatnál:

$Kernel::OM->Get('Kernel::Config')->Set(
    Key => 'Prefix::Option'
    Value => 'Valami új érték',
);