Banalny userJS mojego autorstwa, który ma za zadanie odblokować cytowanie prywatnych wiadomości na blip.pl

Stworzyłem mały UserJS, który zamienia wszystkie linki do statusów w kokpicie:

blip

na przyciski dodające link do treści nowego statusu - Blip easyPermalinks, może komuś się przyda i ułatwi życie ;)

Z lenistwa cz. IV

03 września, 2007

Mam dziś do zaprezentowania swój kolejny UserJS, przygotowany znów z myślą o serwisie Wykop.pl.

Image Hosted by ImageShack.us

Całkiem niedawno Wykop zyskał nową zaawansowaną wyszukiwarkę - pozwala ona sortować rezultaty wyszukiwania. Jednak żeby skorzystać z bardziej zaawansowanych opcji trzeba wpierw wpisać hasło do wyszukiwania, przejść na stronę wyników i dopiero tam można wybrać bardziej zaawansowane parametry wyszukiwania.

Nie ukrywam, że jest to według mnie nieprzemyślane. I dlatego właśnie powstał mój skrypt. Dodaje on za przyciskiem "szukaj" nowy przycisk "opcje" - po jego kliknięciu pojawią się zaawansowane opcje wyszukiwania, znane ze strony do której przenosi nas wyszukiwarka.

Ponadto skrypt pozwala od razu określić domyślne wartości checkboksów z uwzględnianymi w wyszukiwaniu właściwościami linków za pomocą linijki:

var conf = [false,true,true,true,true];

Pierwszy element tablicy (true lub false) decyduje o tym czy zaawansowane opcje mają być pokazywane od razu czy dopiero po kliknięciu przycisku "opcje". Elementy od drugiego do piątego odpowiadają za domyślne zaznaczenie checkboksów pozostałych opcji wyszukiwania.

Po instalacji tego skryptu prezentowana linijka będzie miała wpływ na wyniki wyszukiwania bez względu na to czy skorzystamy z przycisku "opcje" czy nie. U mnie na przykład wyszukiwarka domyślnie nie korzystała z pola URL, a teraz dzięki wspomnianej linijce kodu to robi domyślnie.

Skrypt można pobrać w wersji dla Firefoksa ze strony userscripts.org .

Oczywiście przygotowałem też wersję dla Opery :

// ==UserScript==
// @name                        Wykop advanced search button
// @description         This script add advanced search options to standard search
// @author                      Dziudek
// @version             0.1
// @include             http://*wykop.pl*
// ==/UserScript==

window.addEventListener("DOMContentLoaded",function(){

var d = document;
var conf = [false,true,true,true,true];
function $add(el){return d.createElement(el);}
function $(el){return d.getElementById(el);}

var f = $("search-form");
f.setAttribute("style","text-align: right;");

var b = $add("input");
b.setAttribute("type","button");
b.setAttribute("class","submit-button");
b.setAttribute("value","opcje");
b.addEventListener("click",hide,false);
function hide(){(conf[0]) ? $("adv-search").style.display = "none" : $("adv-search").style.display = "block";conf[0] = !conf[0];}

f.childNodes[1].appendChild(b);

var fs = $add("fieldset");
function checked(i){i++;if(conf[i]){return 'checked="checked"';}else{return false;}}
if(conf[0]){var dis = 'block';}else{var dis = 'none';}
fs.setAttribute("style","display:"+dis+";margin-top: -17px;");
fs.setAttribute("id","adv-search");
fs.innerHTML = '<select name="zakres" id="select-zakres" style="margin-right: 0;">' + 
                                        '<option value="1" selected="selected">wszystkie</option>' + 
                                        '<option value="2">wykopane</option>' + 
                                        '<option value="3">nie wykopane</option>' +
                                '</select>' +
                                '<input type="checkbox" class="chk-box" name="pole[tytul]" id="poletytul" ' + checked(0) + '/><label for="poletytul">Tytu\u0142</label>' +
                                '<input type="checkbox" class="chk-box" name="pole[opis]" id="poleopis" ' + checked(1) + '/><label for="poleopis">Opis</label>' +
                                '<input type="checkbox" class="chk-box" name="pole[URL]" id="poleURL" ' + checked(2) + '/><label for="poleURL">URL</label>' +       
                                '<input type="checkbox" class="chk-box" name="pole[tag]" id="poletag" ' + checked(3) + '/><label for="poletag">Tagi</label>';
f.appendChild(fs);

},false);

Z lenistwa cz. III

02 września, 2007

W sumie po dzisiejszej nocy żałuję, że nigdy nie miałem okazji zauważyć iż Opera nie obsługuje natywnie metody forEach obiektu Array... I ta niewiedza była główną przyczyną tego, że niektóre z moich skryptów nie działały (chodzi oczywiście o UserJS).

No ale mam to już za sobą i mam dla niektórych z Was - operowców i leniwych dobre wiadomości - dla operowców - przygotowałem Wykop Spam Cleaner 0.2 oraz skrypty do szybkiego dodawania skrótów i skrótowców na Joggerze w wersji dla Opery. Informacja dla leniwych (takich jak ja :P) - dzięki swojemu pomysłowi i radach ze strony Off'a stworzyłem jeszcze lepszą wersję skryptu do dodawania skrótów i skrótowców w panelu administracyjnym - tym razem naprawdę wymaga jednego kliknięcia, bo zamiast pokazywania listy dostępnych skrótów od razu podmienia te wcześniej zdefiniowane - szybciej już się chyba nie da :P

WAŻNA UWAGA: aby dany skrót został podmieniony musi zawierać bezpośrednio przed znak $ na przykład : $IMHO dzięki temu skrypt uniknie większości problemów użytkowych. Poza tym ów znak pozostawia nam wybór - czy chcemy ubrać dany skrót w tagi czy nie ;)

Czytaj dalej...

Z lenistwa cz. II

01 września, 2007

Chciałbym zaprezentować mój kolejny UserJS - tym razem napisany z myślą o panelu administracyjnym Joggera.

Nie wiem jak innych, ale mnie doprowadza do mdłości myśl, że przy formatowaniu wpisu wypadałoby opisać wszystkie skróty i skrótowce - i z reguły tego nie robię, bo wklepywanie rozwinięcia skrótu mnie drażni ;) Ale kto powiedział, że muszę to zawsze wklepywać ? Stworzyłem więc skrypt, który w edytorze wpisu dodaje nam dwa przyciski - ABBR i ACRONYM, po ich kliknięciu rozwinie się lista określonych przez użytkownika skryptu, skrótów i skrótowców. Domyślnie umieściłem kilka takowych w skrypcie, oczywiście listę można łatwo rozbudować według prezentowanego w skrypcie schematu:

var ABBR = [
        ["mln","milion(ów)"]
];

var ACRONYM = [
        ["IMHO","In My Humble Opinion"],
        ["TIA","Thanks In Advance"],
        ["OMG","Oh My God !"]
];

Myślę, że dzięki temu skryptowi dodanie skrótowca IMHO czy stworzenie zapisu 100 mln będzie o wiele wygodniejsze :)

Trzy uwagi użytkowe:

  • osoby korzystające z rozdzielczości mniejszych niż 1024x768 (są tacy ?) powinni się zainteresować linijkami 33. i 63., a dokładniej właściwością margin-left ;)
  • aby zamknąć otwartą listę trzeba albo wybrać jedną z pozycji na niej, albo kliknąć przycisk ją rozwijający - nie kombinowałem już z mouseover, a uzyskanie efektu hover wymagałoby dodania UserCSS (albo o czymś nie wiem :P)
  • przyciski są w pierwszym rzędzie przycisków, a nie w drugim, bo zwijanie drugiego rządka powodowało niedogodności związane z dostępem do rozwijanej listy.

Skrypt można pobrać ze strony userscripts.org. Wersji dla Opery póki co nie ma bo cały czas nie wiem dlaczego wszelkie skrypty wywalają mi się przy korzystaniu z metody forEach dla tablic i obiektów...