Modifikace přihlášení do Group Office

Modifikace jednotlivých částí systému bez nutnosti zásahu do zdrojových kódů Group Office nemusí být žádným problémem. Pomocí modulu Vlastní CSS styly a javascripty snadno a jednoduše upravíte výchozí stav groupwaru k obrazu svému.

Jeden z členů komunitního fóra v Group Office poptával úpravu přihlašovacího formuláře, kde nechtěl zobrazovat možnost "Zapamatovat přihlašení pro tento počítač". Pro tyto jednoduché modifikace se hodí modul Vlastní CSS styly a javaskripty , který je součástí open-source verze Group Office.

Vzhledem ke struktuře dialogového okna, na kterém je vykreslen formulář pro přihášení do Group Office, není možné využít vlastních CSS. Styly se hodí většinou pro nahrazení výchozího loga vlastním či výměnu ikon v notifikační části systému.

Pro tuto modifkaci je tedy nutné sáhnout na konfuguraci třídy GO.dialog.LoginDialog, která obsahuje veškerou konfiguraci formuláře dialogu. Pro naše účely se hodí funkce Ext.override, která modifikuje stávající třídu bez nutnosti vytvářet novou. Pokud nahlédneme do zdrojového kódu třídy GO.dialog.LoginDialog, zjistíme, máme pouze dvě cesty, jak se k checkboxu, který zajišťuje uložení přihlašovacích údajů dostat.

První možností je projít prvky formuláře a najít checkbox na základě jména:

this.formPanel.ownerCt.find('name', 'remind');

Druhou možností je využití funkčnosti Ext.util.MixedCollection a smazat poslední prvek pole. Dle mého názoru bude druhá možnost vždy rychlejší. Vzhledem k tomu, že máme přímý přistup ke skriptu, který modifikuje přihlašovací dialog, v rámci administrace Group Office, považuji toto řešení za dostatečné k vyřešení problému. V případě modifikace dialogu (což se stane jen ve chvíli, kdy bude doplněna do Group Office opět funkce fullscreenu) postačí upravit index checkboxu.

Výsledný kód pak vypadá takto:

Ext.override(GO.dialog.LoginDialog, {
    listeners : {
        beforeRender : function() {
            var items = this.formPanel.items;
            var lastIndex = items.length - 1;
            this.formPanel.items.removeAt(lastIndex)
        }
    }
});