Úvod

Kategorie








Odkazy

Kontakt
Galerie
MHD
Fotoalba
Momentky
Videotéka
Poslouchám...

Kalendář akcí

«Prosinec 2008»
PoÚtStČtSoNe
1234567
891011121314
15161718192021
22232425262728
293031    

Poslední komentáře

nicmoc (dnes)
  µ:…
carnero (včera)
  µ:…
Nikkky (včera)
  µ: "Když jsem…
Mike (včera)
  µ:…
nicmoc (včera)
  µ: Mimochodem,…
carnero (včera)
  µ: Mimochodem,…

Odjinud

Mozilla Labs představila Snowl
Dovolená Bibione 2008
Nová verze emailu Centrum.cz
Otevřený telefon je tady

Poslední jízdy

DPP DPP #9156
  Škoda 14T (1×)
DPP DPP #8433
  T3R.P (2×)
DPP DPP #7234
  T3SUCS (4×)
DPP DPP #3454
  81-71BARS (1×)
DPP DPP #9120
  Škoda 14T (2×)
Vše čím jsem jel...

Doporučuji

  Hosting BlueBoard.cz

Rychlé přihlášení

vloženo 15.7.2007, 12:00 do kategorie Xchat
 

Protože jsme doma na jednom notebooku dva na Xchatu a protože má drahá polovička měla poměrně složitou přezdívku, rozhodl jsem se napsal skript do GreaseMonkey, který by u nepřihlášeného uživatele zobrazil malý dialog, s možností zvolit přezdívku.

Rychlé přihlášení

Každý GreaseMonkey skript začíná definicí, kde má být aktivní:

// ==UserScript==
// @name          Rychlé přihlášení
// @description   rychlé přihlášení pro více uživatelů na Xchat.cz
// @include       http://*xchat.centrum.cz/*
// @include       http://fotoalba.centrum.cz/*
// @exclude       http://*xchat.centrum.cz/~$*
// @exclude       http://fotoalba.centrum.cz/~$*
// @include       http://*xchat.centrum.cz/~guest~/*
// @include       http://fotoalba.centrum.cz/~guest~/*
// ==/UserScript==

Skript bude tedy aktivní na každé stránce v doméně xchat.centrum.cz a fotoalba.centrum­.cz, kde není hash, nebo je ~guest~ .

Dále skript obsahuje konfigurační pole

// ---=== Konfigurace ===---
// Nicky, ktere se zobrazi v listu
var Nicky = new Array ('Georgo 5 mn_c', 'Nikkky 1 wn_c');
// Nicky zobrazene po rozkliku 'více ...'
var NickyMore = new Array ('Georgo10', '01ogroeG', 'Olomouc', 'l33t0r', 'L-o-v-e-l-yC-a-t', 'LovelyCatNaDovolene', 'L-o-v-e-l-y-C-a-t');

První z nich obsahuje nicky, zobrazené ihned, druhé ty, které se zobrazí po kliku na odkaz více…. Struktura záznamu v poli není příliš složitá. Může obsahovat jeden nebo tři parametry, oddělené mezerou. Nejprve je potřeba vepsat přezdívku, a pokud chcete, lze doplnit i ID hvězdy (1 – modrá, 2 – zelená, 3 – žlutá, 4 – červená, 5 – černá) a pohlaví (mn – muž, wn – žena, mn_c – certifikovaný muž, wn_c – certifikovaná žena). Dva doplňkové parametry doporučuji vyplnit u pole Nicky, u NickyMore mi přijdou zbytečné :-).

Pokračujeme částí, kde již není potřeba nic upravovat, ale vysvětlím, k čemu slouží:

var formular = document.forms[0];
fillUser = function (elNick) // Vyplneni username
{
        formular.elements.namedItem('pass').value = ''; // Vymazni predchoziho hesla
        tNick = elNick.innerHTML;
        arrayNick = tNick.split (' '); // Zjisteni nicku
        formular.elements.namedItem('name').value = arrayNick[arrayNick.length-1]; // Vlozeni nicku
        formular.elements.namedItem('name').focus(); // Nastaveni focusu na nick
        formular.elements.namedItem('pass').focus(); // Nastaveni focusu na pass - pripadne to vyplni heslo
        if (formular.elements.namedItem('pass').value) // Heslo je ulozeno, prihlasuji
        {
                document.getElementById('fastnicks').innerHTML = 'P&#345;ihla&#353uji ... <img src="http://img.xchat.centrum.cz/images/x4/sm/26/26.gif" alt="MMNT" />';
                formular.submit();
        }
        else // Heslo neni, nechame uzivatele zadat
        {
                hide();
        }
        return false;
}

Funkce fillUser s parametrem nicku vyplní do pole ‚name‘ přezdívku, přeskočí do pole ‚pass‘, kam se vypisuje heslo. Zjistí, jestli Firefox z uložiště hesel vyplnil heslo a podle toho se formulář buďto odešle, nebo skryje panel, aby uživatel mohl zadat heslo.

createLink = function (str) // Vytvoreni elementu
{
        var link = document.createElement ('p');
        arrayNick = str.split(" ");

        var write = '';
        if (arrayNick[1])
        {
                write += '<img src="http://img.centrum.cz/x4/star/'+arrayNick[1]+'.gif" alt="*" /> ';
        }
        if (arrayNick[2])
        {
                write += '<img src="http://img.centrum.cz/x4/rm/'+arrayNick[2]+'.gif" alt=":)" /> ';
        }
        write += arrayNick[0];
        link.innerHTML = write;

        link.addEventListener ('mouseover', function() {this.style.color='#dd0000';}, false);
        link.addEventListener ('mouseout', function() {this.style.color='';}, false);
        link.addEventListener ('click', function() { fillUser (this); }, false);

        return link;
}

Do funkce createLink se jako parametr odesílá jeden řetězec z pole, obsahující nicky. Funkce zpracuje parametry a podle nich vytvoří odkaz, kterému nastaví akce po kliknutí a přejetí myši.

hide = function() // Schovani fastnicks
{
        document.getElementById('fastnicks').style.display = 'none'; // Schovame rychle nicky
        document.getElementById('fastnicksMore').style.display = 'none'; // Schovame dalsi nicky
        document.getElementById('fastnicksMoreLink').style.display = ''; // Zobrazime vice...
}

hide() je poměrně jednoduchá funkce na skrytí boxu s nicky.

// ---=== Hlavni box ===---
if (Nicky.length || NickyMore.length)
{

Na konci zpracujeme naplnění boxu a zobrazení, pokud alespoň pole Nicky nebo NickyMore obsahuje nějaké záznamy.

var label = document.getElementsByTagName('label')[0];
label.addEventListener('click', function() { document.getElementById('fastnicks').style.display = ''; }, false);

var nickInput = formular.elements.namedItem('name');
nickInput.addEventListener('keypress', hide, false)

var divy = document.getElementsByTagName('div');
for (var z=0; z<divy.length; z++)
{
        if (divy[z].id == 'page') {
                var hlavicka = divy[z];
                break;
        }
}

var fastnicks = document.createElement ('div');
fastnicks.setAttribute ('id', 'fastnicks');
fastnicks.setAttribute ('style', 'position:absolute;padding:5px;top:20px;left:700px;opacity:0.7;background: #eaebec url(http://img.centrum.cz/x4/rm/8/room-bg.gif) no-repeat right top;font-weight:bold;border:1px dashed #888; text-align:left;font-size:1.2em;color:#111;cursor:default;');

Nejpve prvku ‚label‘ s indexem 0 (nápisu přezdívka) přidělím akci po kliknutí, aby se zobrazil box (pro případ, že si jej omylem zavřu). Poté inputu pro psaní hesla navážu akci, aby se po psaní skryl box, aby nepřekážel. Dále je potřeba detekovat div, který použijeme na zobrazení boxu. Toto není zrovna ideální řešení, ale kupodivu funguje. Bohužel se někdy může stát, že box bude za flashovou reklamou, zobrazovanou na úplném vrchu úvodní stránky Xchatu.

var fastnicks = document.createElement ('div');
fastnicks.setAttribute ('id', 'fastnicks');
fastnicks.setAttribute ('style', 'position:absolute;padding:5px;top:20px;left:700px;opacity:0.7;background: #eaebec url(http://img.centrum.cz/x4/rm/8/room-bg.gif) no-repeat right top;font-weight:bold;border:1px dashed #888; text-align:left;font-size:1.2em;color:#111;cursor:default;');

Vytvoření DIVu s boxem, nastavení ID a stylu.

// ---=== Zavreni boxu ===---
var closebox = document.createElement ('div');
closebox.setAttribute ('style', 'position:absolute;top:2px;right:2px;color:#999999;font-size:0.8em');
closebox.innerHTML = '[X]';
closebox.addEventListener ('click', function() {
        hide();
        document.forms[0].elements.namedItem('name').focus(); // Nastaveni focusu na nick
}, false);
closebox.addEventListener ('mouseover', function() {this.style.color='#dd0000';}, false);
closebox.addEventListener ('mouseout', function() {this.style.color='#999999';}, false);
fastnicks.appendChild (closebox);

V pravém horním boxu se zobrazuje křížek pro zavření boxu.

// ---=== Hlavni nicky ===---
if (Nicky.length)
{
        Nicky.sort(); // Serazeni nicku
        for (z=0; z<Nicky.length; z++)
        {
                fastnicks.appendChild (createLink (Nicky[z]));
        }
}

Vygenerování hlavních nicků, které se zobrazí v boxu přímo.

// ---=== Vedlejsi nicky ===---
if (NickyMore.length)
{
        var link = document.createElement ('div');
        link.setAttribute ('id', 'fastnicksMoreLink');
        link.setAttribute ('style', 'text-align:right;font-size:0.8em;color:#666666;');
        link.innerHTML = 'více...';
        link.addEventListener ('click', function() {
                document.getElementById('fastnicksMore').style.display = '';
                document.getElementById('fastnicksMoreLink').style.display = 'none';
        }, false);
        link.addEventListener ('mouseover', function() {this.style.color='#dd0000';}, false);
        link.addEventListener ('mouseout', function() {this.style.color='#666666';}, false);
        fastnicks.appendChild (link);

        var fastnicksMore = document.createElement ('div');
        fastnicksMore.setAttribute ('id', 'fastnicksMore');
        fastnicksMore.setAttribute ('style', 'font-size:0.8em;color:#333;display:none');

        NickyMore.sort(); // Serazeni nicku
        for (z=0; z<NickyMore.length; z++)
        {
                fastnicksMore.appendChild (createLink (NickyMore[z]));
        }
        fastnicks.appendChild (fastnicksMore);
}

Vedlejší nicky mají proceduru delší. Především proto, že je potřeba navíc zobrazit odkaz „více…“ a také zpracovat zobrazování a skrývání těchto nicků.

hlavicka.appendChild (fastnicks);
}

Nakonec do hlavičky přidáme element fastnicks a uzavřeme výše otevřenou podmínku.

A to je vše přátelé. Nakonec si můžete ještě skript nainstalovat a podívat se na videoukázku:

Komentáře

Pzb

http://hmotak.rm-v.net
vloženo 15.7.2007, 13:07, reagovat

Hodne dobry :-))

hugo_

vloženo 15.7.2007, 20:08, reagovat

Spíš hodně „šikovný“ :-) Něco pro lenochy, skvěle, díky Tome :-)

Svido

vloženo 27.7.2007, 10:56, reagovat

No spise pekna kravina.

red

http://red.hnojice.cz
vloženo 18.11.2007, 20:41, reagovat

užitečné, chytré ;)

w4s

http://xchatpraha.er.cz
vloženo 12.5.2008, 10:56, reagovat

perfektní :)

Nový komentář







Prosím, nevyplňujte: