Cytowanie prywatnych wiadomości na blipie
09 kwietnia, 2009
Banalny userJS mojego autorstwa, który ma za zadanie odblokować cytowanie prywatnych wiadomości na blip.pl
dziudek@jabber.org
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:

na przyciski dodające link do treści nowego statusu - Blip easyPermalinks, może komuś się przyda i ułatwi życie ;)
Mam dziś do zaprezentowania swój kolejny UserJS, przygotowany znów z myślą o serwisie Wykop.pl.
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);
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 ;)
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:
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...