Deutsches Datum bei Facebook

Kurz ein kleines Greasemonkey Script um deutsche Datumsanzeigen bei Facebook zu erzeugen.

Mit Datumsanzeigen mein ich den title-Tag der Angaben bei „Vor X Minuten“ usw.

datum

// ==UserScript==
// @name           FacebookDate
// @namespace      bla
// @include        http://www.facebook.com/*
// ==/UserScript==

function xpath(src,query) {
	var res = document.evaluate(query, src, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
	res.length = res.snapshotLength;
	res.item = res.snapshotItem;
	return (res.snapshotLength > 0) ? res : false;
}

var res = xpath(document,"//abbr[@class='timestamp']");
if(res){
	for(var i=0; i < res.length; i++){
		var d = new Date(Date.parse(res.item(i).title));
		res.item(i).title = d.getDate() + "." + ((d.getMonth() + 1) % 12) + "." + d.getFullYear() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
	}
}

Hier das Script zum Download facebookdate.user.

In PHP prüfen ob ein Array assoziativ ist

Ich wollte gerade prüfen ob ein Array assoziativ ist oder nicht. Hier ein paar Funktionen, die ich dazu gefunden habe.

function isAssoc($arr){
   return count( array_diff( array_keys($arr), array_keys( array_keys( $arr )) ));
}
function isAssoc($arr){
    return array_keys($arr) !== range(0, count($arr) - 1);
}
function isAssoc($arr){
    return array_values($arr) !== $arr;
}

TextboxList jQuery mit Prototype

Hi,

ich habe mich heute mit der genialen Bibliothek TextboxList von Guillermo Rauch beschäftigt.

Er bietet neben der ursprünglichen MooTools Version auch eine jQuery Portierung an.
Zum Glück. Denn das ermöglicht mir als Prototype-Jünger dieses brilliante Stück Code ebenfalls zu verwenden.

Es gibt zwar eine Prototype-Portierung, allerdings ist die schon bisschen eingestaubt.
Die Jungs von TheWebFellas haben vor ein paar Monaten mal alle in diversen Blogs rumfliegenden Patches gesammelt und eine aktualisierte Variante in ihrem github zur Verfügung gestellt. Aber wie sie selbst sagen, haben sie es nicht ausgiebig getestet.

Dank der sehr nützlichen noConflict() Methode von jQuery lassen sich aber Prototype und jQuery gleichzeitig nutzen, solange man ein paar Kleinigkeiten beachtet.

Hier also mein Weg, wie ich TextboxList zum Laufen gebracht habe.

Da ich jQuery sonst nicht verwende habe ich

jQuery.noConflict();

direkt ans Ende der jQuery.js Datei gepackt. Damit steht die $-Funktion von jQuery nicht mehr zur Verfügung. TextboxList ist für diesen Fall schon vorbereitet.

Allerdings muss die Datei GrowingInput.js noch ein wenig angepasst werden. Hierzu ein (sehr) kleiner Patch von mir.

Im kompletten sieht das dann in etwa so aus:

<script src="prototype.js" type="text/javascript" charset="utf-8"></script>
<script src="jQuery.js" type="text/javascript" charset="utf-8"></script>
<script src="GrowingInput.js" type="text/javascript" charset="utf-8"></script>			
<script src="TextboxList.js" type="text/javascript" charset="utf-8"></script>

<!-- 
Folgender Block wird nur benötigt, wenn man noConflict() nicht direkt wie ich
in die jQuery.js packt.
-->
<script type="text/javascript" charset="utf-8">		
    jQuery.noConflict();

    jQuery(function(){
        var t = new TextboxList('#form_tags_input');
        t.add('Tag 1').add('Tag 2').add('Tag 3');
    });
</script>

Das Endergebnis sieht dann in etwa so aus.
textboxlist

Bis jetzt läuft alles soweit. Aber evtl. melde ich mich ja wieder mit weiteren Workarounds ;)