404 zaginione dzieci

Posted on March 6, 2010, under Inne.

Scott Hanselman napisał na swoim blogu kolejnego wspaniałego posta. Ten jednak był na tyle wyjątkowy, że zainspirował mnie do działania. Ale do rzeczy.

Chodzi o bardzo prostą ideę wykorzystania stron z błędem 404. Codziennie są wyświetlane tysiące takich stron w polskim internecie, ale nikt jakoś nie wpadł na pomysł, żeby wykorzystać je (powiedzmy to dobitnie) dla dobra ludzkości. Scott zasugerował, żeby pod stronę z błędem 404 (żądana strona nie istnieje) podpiąć prostą stronę wyświetlającą zdjęcia i dane zaginionych dzieci. W jego poście można dokładnie dowiedzieć się, jak zastosować to w warunkach amerykańskich i brytyjskich. W komentarzach pojawił się link do wersji holenderskiej.

404 missing kids
Wzorując się na obu tych notkach stworzyłam wersję polską. Do sprawdzenia np. tu: http://www.programistka.eu/whatever.

Jak to działa? Bardzo prosto – opiera się na policyjnym kanale RSS dotyczącym zaginionych dzieci. Można wykorzystać też kanały osób zaginionych ogólnie lub osób poszukiwanych.

Aby zastosować to w silnikach blogowych opartych na WordPressie należy podmienić stronę 404.php w obecnie używanym szablonie.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3c.org/1999/xhtml" xml:lang="pl" lang="pl">
  <head>
    <title>404 - Strona nie istnieje</title>
    <meta http-equiv="content-type" content="text/html; charset=windows-1250" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
	<script type="text/javascript">
(function($){$.extend({jGFeed:function(url,fnk,num,key){if(url==null){return false;}var gurl="http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q="+url;if(num!=null){gurl+="&num="+num;}if(key!=null){gurl+="&key="+key;}$.getJSON(gurl,function(data){if(typeof fnk=="function"){fnk.call(this,data.responseData.feed);}else{return false;}});}});})(jQuery);
	</script>
	<style>
		.name {
			clear:both;
			font-weight:bold;
			padding-top:5px;
		}
		#feedPlaceholder {
			margin-left: 50px;
		}
	</style>
  </head>

  <body>
	<p><b>Nie znaleziono strony</b>, ale Ty szukaj <b>zaginionych dzieci</b>.</p>
	<p><i>Informacje ze strony <a href="http://zaginieni.policja.pl">http://zaginieni.policja.pl</a></i></p>

	<div id="feedPlaceholder">

	</div>

    <script type="text/javascript">
		var feedUrl = 'http://zaginieni.policja.pl/rss/6';
		var Items = 6;

        $(document).ready(function() {
			$.jGFeed(
				feedUrl,
				function(feed) {
					if (!feed) return;
					for (var i = 0; i < feed.entries.length; i++) {
						var entry = feed.entries[i];
						var link = entry.link.split(".pl/");
						link = link[1];
						var content = entry.content.split("/");
						content = '<img src="http://zaginieni.policja.pl/g2/zdjecia/' + content[content.length - 1];
						content = content.replace(".htm", ".jpg");

						$('#feedPlaceholder').append(
							'<span class="name">' + content + '<a href="http://zaginieni.policja.pl/' + link + '">' + entry.title 							+ '</a></span><br />'
						);
					}
				},
				Items
			);
        });
    </script>
  </body>
</html>

Całe skomplikowanie problemu w polskiej wersji polegało na odpowiednim przetworzeniu danych z RSSa. W szczególności w oryginalnym policyjnym RSSie jest błąd w linku do szczegółów danej poszukiwanej osoby – prowadzi na nieistniejącą stronę, prawdopodobnie poprzedni adres serwisu. Zgłosiłam to webmasterowi serwisu, ale póki co błąd nadal istnieje. Poprawiam to ręcznie w powyższym JS’ie.

Pojawiają się głosy, że takie coś jest kompletnie bez sensu, że są dużo bardziej skuteczne organizacje zajmujące się takimi problemami, ale osobiście uważam, że jeśli mogę pomóc w taki sposób, to dlaczego nie? To nic nie kosztuje.