Last.fm i lepsze wiadomości prywatne
Tagi:  •  

Wiele jest serwisów, które są pomysłowe, nowatorskie i teoretycznie ciekawe, nie każdy serwis jednak może się poszczycić równie pomysłową, nowatorską i ciekawą implementacją. Nawet jeśli istnieje serwis, który posiada te trzy cechy, okazuje się szybko, że i tak brakuje kilku funkcji które w naszych oczach byłyby dość przydatne. Post ten jest przykładem jak zaimplementować dodatkową funkcjonalność podglądu wiadomości prywatnej w serwisie last.fm za pomocą rozszerzeń UserJS Opery, lub Greasemonkey w Firefoxie.

Przy wysyłaniu wiadomości prywatnej w last.fm programiści nie uraczyli nas bardzo przydatną funkcją podglądu wiadomości, która zostaje wysyłana, tak więc użytkownik ma właściwie dwie drogi aby mieć pewność, że wysyła prawidłowo sformatowaną wiadomość... pierwsza to nie używać w ogóle ich znaczników formatowania treści (podobnych do tych z phpbb), inny sposób to wysyłanie tej samej wiadomości najpierw do siebie, aby sprawdzić czy wszystko wygląda jak powinno, a następnie wysłanie jej w końcu do adresata właściwego, jeśli wszystko jest w porządku. Nie można jednak powiedzieć, że to rozwiązanie jest optymalne, żeby nie wspominać o tym, że jest bardzo niewygodne. Z pomocą oczywiście przychodzą rozwiązania UserJS, kompatybilne w pewnej części, jednak jak się okazuje nie w całości, ze skryptami Firefoxowego plugina Greasemonkey.

Cała rzecz polega na dodaniu przycisku "Podgląd" do formularza pisania nowej wiadomości prywatnej. Do renderowania wiadomości skrypty te korzystają z lastfm'owej usługi do renderowania wiadomości, z której korzysta opcja podglądu nowego posta na forum. Usługa ta na szczęście wygląda na stworzoną do tego, aby można było ją używać w dość fleksybilny sposób, być może nawet całkowicie z zewnątrz, tego jednak nie miałem okazji sprawdzić. W skrócie, skrypt dodaje więc przycisk "Podgląd" oraz warstwę (div), w której będzie pojawiała się już przetłumaczona na język html wiadomość. Po kliknięciu na przycisk wysyłane zostanie zapytanie asynchroniczne (przy pomocy XMLHttpRequest) do usługi renderującej, która owy html nam zwróci. Po uzyskaniu kodu html, wrzucany jest on w podgląd (wspomniany wcześniej div) i to już koniec tej filozofii.

Skrypt zawiera też kod, który ma zadanie odnaleźć charakterystyczne punkty konstrukcyjne strony i relatywnie do nich powstawiać dodatkowe elementy, np. przycisk Podgląd lub pole podglądu. Operacje te przeprowadzane są na drzewie DOM strony, tak więc skrypt powinien działać nawet wtedy, gdy strona zostanie zmodyfikowana, ale wykorzystane punkty zostaną nienaruszone. Ale, dość pisania, oto skrypty.

Opera - Firefox (wymaga plugina Greasemonkey)

Instalacja w Operze opisana jest w innym poście o UserJS.

Dla tych, co zastanawiają się nadal o co chodzi, mały screenshot:

Podrasowany formularz wiadomości prywatnych