Úvod

Kategorie









Odkazy

Kontakt
Galerie
MHD
Zvířectvo
Geocaching
Fotoalba
Videotéka
Plus
Poslouchám...

Kalendář akcí

«Únor 2012»
PoÚtStČtSoNe
  12345
6789101112
13141516171819
20212223242526
272829    

Poslední komentáře

Sweemigreella (29.1.2012)
  µ: Battlestar…
Georgo (24.1.2012)
  WiiMote k počítači
syky02 (24.1.2012)
  WiiMote k počítači
Jainnatef (26.12.2011)
  Cesta domů SC…
samsung-vibrant (1.12.2011)
  Cesta domů SC…
Franklin Marshall Sweatshirt (22.11.2011)
  Cesta domů SC…

Odjinud

Dovolená Bibione 2008
Jak se moderují diskuze u nás a v zahraničí -…
Vanessa se asi nestačila divit. Vítejte v Praze…
Nový pražský autobus

Doporučuji

  Hosting BlueBoard.cz

Rychlé přihlášení

vloženo 15.7.2007, 12:00 do kategorie Xchat
 

Rychlé přihlášení 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.

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é *712*.

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 *22*

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í :)

Darth Mul

vloženo 7.4.2009, 18:48, reagovat

Hmmmmmm

Darth Mul

vloženo 7.4.2009, 19:01, reagovat

Hmmmmmm

Darth Mul

vloženo 7.4.2009, 19:07, reagovat

Na mobilni internet to ujde

Zanda

vloženo 2.9.2009, 0:13, reagovat

Ahoja

Nový komentář







Prosím, nevyplňujte: