tr.im ist tot. Es lebe mug.im
Ich habe tr.im immer gern genutzt, wenn ich meine Tweets mit einer Short URL anreichern wollte. Ich fand die Adresse toll und ebenso die Möglichkeit, die Statistiken bereits existierender Short URLs direkt auf der Startseite ablesen zu können, ohne vorher einen Account anlegen zu müssen.
Allerdings hat tr.im dicht gemacht, da die Macher nicht mehr die Mittel haben, das System weiter zu entwickeln, geschweige denn, es am Leben zu erhalten. Laut Angabe auf der tr.im-Homepage, war es auch nicht möglich, einen Käufer zu finden, was in Anbetracht der Sättigung des Short-URL-Service-Marktes nicht weiter verwunderlich ist. Dort tummeln sich mittlerweile wirklich eine Menge Akteure.
Nun gut, tr.im ist also tot. Welche Alternative nimmt man nun?
Ich persönlich wechsele zu mug.im. Das ist ein Service, den mein Freund Rocu ins Leben gerufen hat. Dieser arbeitet für YiGG.de, und YiGG selbst nutzt auch nur noch mug.im. Scheinbar wollten sie so die Abhängigkeit von externen Anbietern verringern, was keine schlechte Idee ist, wie das Beispiel tr.im zeigt.
Umgekehrt bedeutet das, dass der Service von mug.im wohl sicher ist, solange es YiGG gibt. Außerdem kann ich an dieser Stelle gleich noch die Integration einer BackUp-Lösung anregen. Vielleicht verknüpft mit dem YiGG-Account??!
Ansonsten noch ein paar Eckdaten zu mug.im:
- Macht URLs kurz
- Bietet eine API mit Statistik-Funktion
Nicht mehr, und nicht weniger.
Ist das Internet ein rechtsfreier Raum?
www.istdasinterneteinrechtsfreierraum.de
Ich habe mir einen lange gehegten Traum erfüllt und eine Single-Page-Website mit grotesk langer Adresse und einem knackigen Statement aufgemacht. Es geht um das unsägliche Mantra, das Internet dürfe kein rechtsfreier Raum sein. Allerdings liegt es nicht in meinem Interesse zu sagen, die Behauptung stimmt nicht, Ende der Diskussion.
Das Thema ist etwas komplexer und weder die Dramatisierung noch die Verharmlosung in dieser Sache zielführend. Vielmehr ist eine differenzierte Herangehensweise wünschenswert und die Würdigung der Tatsache, dass manche Rechte im Netz viel besser durchsetzbar sind, als in der Realität, manche genauso gut, und manche schlechter. Ebenfalls – man beachte die Parallelen zur Realität – braucht es im Netz nicht immer gleich neue Gesetze, sondern oftmals lediglich die konsequente Durchsetzung der bestehenden.
Und aufgrund dieser Komplexität und – ein Stück weit auch – Sensibilität dieses Themas, habe ich mich entschlossen ein paar erläuternde Artikel zu verlinken. Natürlich von mir ausgesucht, so dass die Auswahl massiv subjektiv gefärbt ist. Dieser Umstand wiederum hat mich dazu verleitet, eine Kommentar-Funktion zu integrieren, auf dass wir die "inhaltliche Färbung" der Auswahl gemeinsam ein Stück in Richtung Inter-Subjektivität drücken können.
Schlussendlich habe ich noch ein Impressum eingebaut, da das Internet wie oben angedeutet kein rechtsfreier Raum ist. Soviel zum Thema "Single-Page-Website mit grotesk langer Adresse und knackigem Statement". Naja, vielleicht klappts ja beim nächsten mal.
Der "perfekte" WordPress-Suchschlitz

Heute zeige ich, wie man mit etwas JavaScript und PHP einen benutzerfreundlichen Suchschlitz in WordPress baut. Das "perfekt" steht deshalb in Anführungszeichen, weil ich mir nicht anmaßen möchte, den wirklich perfekten Suchschlitz zu präsentieren. Möglicherweise würde es "advanced" eher treffen, aber wie klingt das denn bitte?!
Also los: Wir wollen einen Suchschlitz, in dem "Suchen…" steht, was wiederum verschwinden soll, wenn der Nutzer auf das Eingabefeld klickt und wieder erscheinen soll, wenn der Nutzer außerhalb des Eingabefeldes klickt. Des weiteren soll auf der Suchergebnis-Seite im Suchschlitz der Suchbegriff stehen, welcher ebenfalls verschwinden und erscheinen soll, je nachdem, wohin der Nutzer klickt.
Das klingt extrem kompliziert, ich weiß, aber bei Verständnisproblemen einfach die Demo anschauen. Ansonsten lege ich mal los. Und zwar brauchen wir folgenden HTML-Teil in der WordPress-Theme-Datei "searchform.php":
HTML/PHP
<form method="get" id="search" action="<?php bloginfo('url'); ?>/">
<fieldset>
<input type="text" value="<?php echo $search_text; ?>" id="s" name="s" />
<div>
<input type="submit" name="submit" value="Absenden" />
</div>
</fieldset>
</form>
Falls ihr in eurem WordPress-Theme keine "searchform.php" habt, legt sie einfach an, ihr könnt sie mit folgendem Code-Schnippel in eure Templates einbinden:
PHP
<?php include (TEMPLATEPATH . "/searchform.php"); ?>
Ansonsten handelt es sich um ein simples Formular mit einem Eingabefeld und einem Submit-Button, welchen ich in ein div-Element eingebettet habe. Warum, könnt ihr in meinem Beitrag zum "Barrierefreien Button mit Text Replacement" nachlesen.
Als nächstes kommt der JavaScript-Teil, der dafür sorgt, dass das Eingabefeld beim Draufklicken geleert wird und zusätzlich dem Submit-Button die Klasse submit_active anhängt, wodurch der Farbwechsel im Schein um den Suchschlitz realisiert wird.
JavaScript
window.onload = function() {
var input = document.getElementById('s');
var value = document.getElementById('s').value;
var submit = document.getElementsByName('submit')[0];
mFocus = function() {
if ( this.value == value ) {
this.value = '';
}
submit.className = 'submit_active';
}
mBlur = function() {
if ( this.value == '' ) {
this.value = value;
}
submit.className = '';
}
with ( input ) {
onfocus = mFocus;
onblur = mBlur;
}
}
Als erstes werden die Selektoren für das Eingabefeld, für dessen Value und den Submit-Button in Variablen gespeichert. Danach die Funktionen definiert, die den Value wechseln und die Klasse submit_active anhängen bzw. entfernen. Zum Schluss werden diese den Events onfocus und onblur zugewiesen.
Als nächstes brauchen wir ein wenig PHP, um auf der Suchergebnis-Seite den spezifischen Suchbegriff im Suchschlitz erscheinen zu lassen:
PHP
<?php
if (!is_search()) {
$search_text = "Suche…";
} else {
$search_text = "$s";
}
?>
Über if (!is_search()) fragen wir ab, ob es sich nicht um die Suchergebnis-Seite handelt (man beachte das Ausrufezeichen, welches die Bedingung negiert). Ist dem so, speichert die Variable $search_text den Wert "Suche…". Andernfalls, wenn der Besucher sich auf der Suchergebnis-Seite befindet, speichert die Variable den spezifischen Suchbegriff. Wenn wir nochmal hoch zum HTML-Teil gucken, können wir sehen, dass die Beschriftung des Suchschlitzeingabefeldes mit genau dieser Variable $search_text realisiert wird, indem das Attribut value den Wert <?php echo $search_text; ?> bekommt.
Zum Schluss muss der ganze Spaß nur noch gestylet werden:
CSS
#search {
width: 301px;
height: 52px;
clear: left;
}
#s,
#search div input,
#search div input.submit_active {
background-image: url('images/sprite.jpg');
background-repeat: no-repeat;
}
#s {
width: 231px;
height: 22px;
padding: 17px 12px 13px 17px;
float: left;
border: none;
line-height: 22px;
font-size: 16px;
color: #666;
background-position: 0 0;
}
#search div {
width: 41px;
height: 52px;
float: left;
overflow: hidden;
}
#search div input {
width: 41px;
padding-top: 52px;
border: none;
background-position: -260px 0;
cursor: pointer;
}
#s:focus {
background-position: 0 -52px;
color: #369;
}
#search div input.submit_active {
background-position: -260px -52px;
}
#search div input:hover {
background-position: -301px -0;
}
#search div input.submit_active:hover {
background-position: -301px -52px;
}
Ich denke, die Style-Angaben sind relativ selbsterklärend. Die Input-Elemente werden formatiert und die jeweiligen Zustände mit der entsprechenden Hintergrundgrafik versehen, wobei ich hier auf ein sog. CSS-Sprite zurückgreife, wodurch sich die Grafik-Datei nicht ändert, sondern nur deren Position. Außerdem nutze ich immer ein sog. CSS-Reset, wodurch u.a. das Element fieldset direkt am Anfang die Style-Angabe border: 0 zugewiesen bekommt, weshalb das hier im CSS-Teil nicht auftaucht. Bedenkt das, wenn ihr die Sachen hier direkt aus dem Beitrag rauskopiert. Im Zweifelsfalle geht ihr auf Nummer sicher, wenn ihr die Beispiel-Dateien runterladet.
Außerdem dürften der IE6 und der IE7 Probleme mit der Darstellung haben, da sie nicht mit den Pseudo-Klassen :hover und :focus um können, bzw. erstere nur bei Links anwenden können. Um diesen Makel zu beheben, guckt nochmal in meinen Beitrag zum Thema Internet Explorer 6.
Ansonsten ist der "perfekte" Suchschlitz fertig. Ich habe noch die .psd-Datei für das CSS-Sprite in den Download-Ordner gepackt, damit ihr die Farben bei Bedarf anpassen könnt. Alternativ könnt ihr natürlich auch ein ganz eigenes Design machen.
In diesem Sinne viel Spaß damit und bei Fragen immer ran an die Kommentar-Funktion.
Nachtrag:
Ich habe im JavaScript-Teil zwei Ergänzungen bei der mFocus- und der mBlur-Funktion vorgenommen. Bevor der Inhalt des Eingabefeldes automatisch gelöscht oder mit dem Wert "Suche…" aufgefüllt wird, findet eine Abfrage statt. So wird verhindert, dass das vom Nutzer eingegebene Suchwort nach dem Klicken außerhalb des Eingabefeldes verschwindet.
Guttenberg behindert Zulassung des ZugErschwG
Ich weiß nicht, was Guttenberg bzw. das Wirtschaftsministerium sich hierbei denkt, aber nachdem auf Biegen und Brechen, sowie der konsequenten Ignorierung tausender Proteste versuchte wurde, das ZugErschwG durch die Instanzen Richtung Zulassung zu prügeln, wird es einfach…
wegen europarechtlicher Vorgaben "zur Notifizierung" an die EU-Kommission weitergeleitet […].
Damit dürfte es unmöglich werden, den Gesetzesentwurf rechtzeitig vor Ablaufen der Legislaturperiode dem Bundespräsidenten zur Unterzeichnung vorzulegen, womit es gemäß Artikel 39 des Grundgesetzes verfällt.
Klingt erstmal toll, wäre aber, wenn es soweit käme, alles andere als ein Erfolg für die Gegner der sog. Internetsperren. Anstatt das Vorhaben in der Mauschelei verschwinden zu lassen, wäre es besser, wenn es auf offiziellem Wege vom Bundesverfassungsgericht gestoppt würde.
Auf jeden Fall bleibt abzuwarten, wie die Stellungnahmen diesbezüglich aussehen. Und bis es soweit ist, kräusele ich weiter die Stirn und frage mich, was das zu bedeuten hat. Eine vernünftige Antwort fällt mir nämlich nicht ein.
Nachtrag:
Laut Thomas Stadler ist das alles heiße Luft. Nicht unwahrscheinlich.
Netzwahlkampf — Wunsch und Wirklichkeit
Wenn man sieht, mit wieviel Inkompetenz und Selbstherrlichkeit die Politik an das Thema Internet rangeht, kann einem Angst und Bange werden.
Andererseits ist es ziemlich amüsant zu sehen, wie sie mit der gleichen Imkompetenz und Selbstherrlichkeit an das Thema Netzwahlkampf rangeht. Natürlich bietet das Internet ganz neue Möglichkeiten und man kann sagen, dass es ein sehr schnelles Medium ist, was die Informationsverbreitung angeht. Allerdings wird dabei der Umstand etwas vernachlässigt, dass das Internet gleichermaßen ein entschleunigtes, bi-direktionales Dialog-Medium ist.
So kann in Zeiten des Wahlkampfs jede/r halbwegs rethorisch begabte/r Volksvertreter/in auf dem Marktplatz auf einen einreden, bis man mit einem Jute-Beutel voll Info-Material nach hause geht, und sich womöglich noch das Versprechen hat abringen lassen, sie/ihn zu wählen. Im Internet freilich sieht das anders aus. Da kommt man nicht nur zu Wort — sei es nun in Blog-Kommentaren oder in Diskussionen in irgendwelchen Social Communities —, sondern hat auch noch die Zeit seine Worte sorgfältig zu wählen (auch wenn das nicht immer jedem "Troll" gelingt).
Des weiteren ist im Internet theoretisch jeder eingeladen, sich an der Diskussion zu beteiligen. Entweder explizit, oder aber indirekt aufgrund des Umstandes, dass man nicht ausgeschlossen werden kann. Der Dialog findet also auf einer ganz anderen Ebene statt bzw. es findet überhaupt ein Dialog statt. Man kann als Politiker/in also nicht einfach drauf los parlieren, sondern muss sich auch — möglichweise unangenehmen — Fragen stellen und hin und wieder offen rechtfertigen, was überlegt geschehen sollte, da das inhaltslose, unreflektierte Parlieren wiederum zu neuen — möglichweise unangenehmen — Fragen führt.
Das sind sicherlich keine neuen Erkenntnisse, aber wozu mache ich mir die Mühe, einen Blog zu betreiben, wenn ich nicht hin und wieder meine zwei Cent Häme loswerden kann.
Vielen Dank für eure Aufmerksamkeit.
Weiterführende Links:
Navigation mit JavaScript

Dieses mal geht es um eine Navigation, bei der zu jedem Item eine kurze Info erscheint, wenn man mit dem Cursor rüberfährt. Dies wird regelmäßig von Usability-Experten empfohlen und kann durchaus Sinn machen. Meine Lösung baut wie gewohnt auf HTML und CSS, sowie JavaScript für den Hover-Effekt.
Beginnen wir mit dem HTML-Teil:
HTML
<ul id="nav">
<li>
<a href="index.html">Home</a>
<span>Back to frontpage</span>
</li>
<li>
<a href="#">About</a>
<span>Learn more about this site</span>
</li>
<li>
<a href="#">Contact</a>
<span>Send me an email</span>
</li>
</ul>
Eine einfache, ungeordnete Liste, bei der zusätzlich zum Link die jeweilige Info in einem <span>-Elements steht.
Als nächstes der CSS-Teil:
CSS
#nav {
width: 456px;
height: 100px;
list-style: none;
clear: left;
}
li {
width: 130px;
height: 80px;
padding: 20px 10px 0 10px;
float: left;
border-left: 2px solid #FFF;
cursor: pointer;
}
li span {
display: none;
}
.active {
background: url('images/li_bg.jpg') 0 0 no-repeat;
}
.active span {
display: block;
line-height: 15px;
color: #EEE;
}
a {
display: block;
margin-bottom: 5px;
font: bold 24px Helvetica, Arial;
color: #FFF;
line-height: 30px;
}
Die Liste weist vom Styling her keine Abnormalitäten auf, außer, dass durch die Angabe cursor: pointer; über dem ganzen li-Element der für Links typische Cursor in Form einer Hand auftaucht. Warum das so ist, wird im JavaScript-Teil ersichtlich. Ansonsten ist das <span>-Element unsichtbar, es sei denn das li-Element hat die Klasse "active".
Nun zum JavaScript-Teil:
JavaScript
window.onload = function() {
var lis = document.getElementById('nav').getElementsByTagName('li');
mOver = function() {
this.className = 'active';
}
mOut = function() {
this.className = '';
}
mClick = function() {
location.href = this.getElementsByTagName('a')[0].href;
}
for ( i=0; i<lis.length; i++ ) {
with ( lis[i] ) {
onmouseover = mOver;
onmouseout = mOut;
onclick = mClick;
}
}
}
Innerhalb einer window.onload-Funktion definieren wir als erstes den Selektor für die li-Elemente der ungeordneten Liste. Danach werden die Funktionen für die Maus-Events aufgestellt. Fährt man mit der Maus über ein li-Elemente, wird diesem die Klasse "active" angehängt. Geht man mit dem Cursor wieder vom li-Element runter, wird die Klasse wieder entfernt. Klickt man auf ein li-Element, wird man zu dem im jeweiligen Link spezifizierten URL weitergeleitet.
Dadurch erklärt sich auch die Angabe cursor: pointer; für li-Elemente im Stylesheet. Der klickbare Bereich wird einfach vergrößert, was dem Besucher der Seite die Nutzung der Navigation erleichtert.
Nachdem die Funktionen für die Maus-Events aufgestellt sind, werden sie in einer for-Schleife zugewiesen. Fertig ist die Navigation mit eingeblendeter Info. Wie immer könnt ihr euch die nötigen Dateien runterladen. Viel Spaß!
