Do you Poken? Die Brücke zwischen dem echten Leben und dem Web 2.0.

[Trigami-Anzeige]
POKEN Auch im Zeitalter von Web 2.0 kann es passieren, dass man Maus und Tastatur verlässt um höchstselbst an einer Veranstaltung mit realen, oftmals menschlichen Personen teilzunehmen. Man unterhält sich per akustischem Netzwerk, versteht sich gut, möchte weiter in Kontakt bleiben und dann geht es los: Handynummer? Hm, „<schrei>4 9 2 oder 3? Hä?</schrei>“, ein Stift ist nie zur Hand und Kajal auf Handrücken ist auch sehr unzuverlässig und darum nicht zu empfehlen. Bist Du auf Facebook? Nein aber auf Xing? Welcher Namen? MySpace? Da bin ich nicht…
Und so zieht es sich hin… Pokens sind eine gute und einfache Lösung des Problems, ohne heiser zu werden oder am Austausch eines Links zu verzweifeln.

Vier Pokens versammelt

Vier Pokens versammelt

Die Idee

Gute Ideen sind einfach, so auch diese: Man legt auf www.doyoupoken.com eine oder mehrere Identitäten an, in denen man sowohl Daten aus dem echten Leben (Name, Adresse, Telefonnummern, Mailadressen, Blog-URL, …) als auch Links zu den Profilen in verschiedenen Social Networks (von Xing, LinkedIn über Flicker, Facebook, MySpace, Twitter bis hin zu usgang.ch, etc) angeben kann. Wenn nun das Gegenüber auch ein Poken dabei hat, dann hält man die Pfötchen kurz aneinander und schon ist die ID ausgetauscht. An einem beliebigen Compie mit Internetanschluss und USB können die ID’s vom Poken abgerufen werden und man sieht die entsprechenden Profile auf www.doyoupoken.com:

Die Identität, die mit Pokens ausgetauscht werden kann.

Die Identität, die mit Pokens ausgetauscht werden kann.

Die hochgeladenen Freundesprofile können verschieden sortiert, abgelegt und gesucht werden. Die Ganze Sache ist also sehr effizient und benutzerfreundlich…

Am Schluss dieses Beitrages könnt Ihr lesen, wie Ihr zwei Pokens gewinnen könnt!

Weiterlesen

Zattooparty: Fundrising auf neuem Niveau

Ok, wir befinden uns auf der Zattooparty, nachdem wir der absolut genialen Beschilderung – bestehend aus verwirrten Leuten mit Google-Maps Ausdrucken in der Hand – gefolgt sind, haben wir sie gefunden: Die Zattooparty.
Zattooparty

Nunja. alle warten… Auf was wohl? Wahrscheinlich die versprochenen Würste. Die Ressourcen (die Location) ist leicht unterdimensioniert. Wenn jeder 10te Schweizer hier auftaucht wird es noch enger.

Es handelt sich wohl um ein verstecktes Fundraising, denn das Bier kostet echt 5 Schtütz! Da bekommt der Ausdruck „Blondes Gold“ echt eine neue Bedeutung.
Blondes Gold
Naja, mal sehen…

Update 19:25: Die Würste sind da und erst noch gratis. Es gebe jemandem dem Pfarrer Sieber Bescheid. Der Senf ist gut aber karg (Meinung von Fabrice de la Croix).

Emma habe ich leider noch nicht gesehen.

Update 19:53: Eine Band spielt. Sehr laut. Wie wäre es mit einer Zattooversion „Ak-hkk sllll-mm thk zn rsss …“? Frage von Fabrice de la Croix: Sendet Zattoo auf klingonisch?

Alle sitzen da, der Senf macht brutal aggressiv und Case fühlt sich trotz iiiiiih-foun 1.0… Er möchte auch bloggen, kann aber nicht, weil er nicht publishen kann mit Safari. Haha, mehr Air denn Fone….

Update 20:46: Die Party nähert sich dem Höhepunkt. Das vierte Bier. Wir haben leider noch kein Abziehbildchen, aber Fabrice de la Croix hat schon mal die Toilette getaggt. Hier ein Foto mit da Maaan der uns ebendieses vierte Bier gebracht hat:
Da Maaan

Update 21:08: Bei Case zuhause ist der elektronische Supergau eingetreten und Fabrice de la Croix braucht drei Zellen um sich zu lokalisieren. Was machen Einzeller in dieser Situation?

Fabrice de la Croix kann mit seinem 1-phone (ja, das i ist eigentlich eine 1) Sound aufnehmen. Hier der Beweis: Die Band die hier performt.

Vielleicht wären die Zattooler lieber auf folgendes Angebot eingegangen (kurz danach am Bahnhof Brugg gefunden):
Nebenjop….. 1000-2000 Fr. in einer woche verdienen  in serjöse art, natel 076xxxxxxx

UWA Widgets coden

Web 2.0, Just Do It…

Je besser man etwas kennt, desto besser kann man darüber lästern… Ich habe beschlossen, mich ganz praktisch durch das Tal der Tränen zu kämpfen und mich auf dieser Wanderung mit den technischen Teilen von Web 2.0 herumzuschlagen. Wie fühlt sich Ajax an? Wieviel Schatten spendet der DOM-Tree? XML oder JSON, JavaScript und APIs sollten die Dämonen auf meinem Weg sein.

Das Resultat

Das Resultat kann im Ecosystem angesehen und installiert werden. Es ist ein Widget, das Adressen über tel.search.ch sucht.
Tel.search.ch bietet ein geniales, gut dokumentiertes REST API an.

Ein paar Screenies?
So siehts in Netvibes aus:
Das tel.search.ch Widget in Netvibes

So in iGoogle:
Das tel.search.ch Widget in iGoogle

Und so in der Sidebar von Windows Vista:
tel.search.ch UWA Widget in Windows Vista Sidebar

Weiterlesen

Voting Extrem: Netvoting.com

Dies ist ein von trigami vermittelter bezahlter Eintrag Hinweis: Dies ist ein von trigami vermittelter bezahlter Eintrag.

Ergänzung Juni 2009: Netvoting ist vom Netz… Ohne kommentar und nic…

Die Kampagne

Netvoting Diese Kampagne hat sehr geheimnisvoll begonnen. Es wurden Betatester für eine Web 2.0 Plattform gesucht, ohne genauere Auskünfte. Mit etwas Verspätung haben wir akzeptierten Tester einen Login erhalten und der Schleier um http://www.netvoting.com/ (Netvoting) wurde gelüftet. Während der ganzen Testdauer wurden stetig Dinge verbessert, dieser Bericht wird also eine Art Momentaufnahme darstellen.

Was ist Netvoting?

Netvoting ermöglicht es sogenannte Votings als Multiplechoicefragen zu erfassen und einer Kategorie (Lifestyle und Trends, Luxus, Musik, Erotik, …) zuzuordnen. Neben dem Erstellen eigener Votings können die Abstimmungen der anderen Members angesehen werden und selbstverständlich kann man auch daran teilnehmen. Es ist unglaublich auf was für Abstimmungsideen die User schon jetzt im Betabetrieb so kommen: Da wird gefragt, ob Burschenschaften rechts und ob Comics Kunst sind, ob der Po das schönste Körperteil einer Frau ist und ob man sich auf Weihnachten freut.

Was noch nicht funzt ist das Deaktivieren und Editieren von Votings. Vor allem für Falsschreibkönige die ständig die Wechselstaben verbuchseln wie ich einer bin ist das eher peinlich…

Technisches

Erstellen des Votings

Das Erstellen eines Votings geht erfreulich einfach von der Hand: Frage und Antworten eingeben, Einstellungen machen, taggen und kategorisieren und fertig (Betatesterkommenar: Es hat auf dieser Seite mindestens einen Schreibfehler: „eröffentlichen“ (ok, ich bin nicht so richtig qualifiziert um an Schreibfehlern herumzumäkeln 🙂 )).

Votings erstellen

Von diesem Zeitpunkt an ist das Voting auf Netvoting publiziert…

Publizieren auf der eigenen Seite

Mit einem Klick kann das Voting auf Plattformen wie iGoogle, Pageflakes, blogger.de, etc veröffentlicht werden. Vor dem Veröffentlichen kann optional ein Style ausgewählt oder mittels CSS selber definiert werden. Das ist eine gute Idee, leider funktioniert das noch nicht… Zum konkreten Einbetten gibt es 3 Möglichkeiten:

JavaScript (ja wo issn mein Style?):
Flash:

Oder ein Permalink: http://www.netvoting.com/de/welche-themen-interessieren-euch-am-meisten-in-einem-blog-2007

Ebenfalls kann/könnte man Widgets einbinden. Widgets beinhalten entweder konkret ausgewählte Votings oder wählen an Hand von verschiedenen Kriterien dynamisch aus. Leider sieht man an Hand dessen, dass man hier nichts sieht, dass es noch nicht funktioniert. Auch können hier keine Styles ausgewählt werden..(?)


Oberhalb sollte das Widget erscheinen…

Was auch noch nicht so richtig klappt ist die Erkennung von Mehrfachvotern, zumindest nicht bei Cookies. Hier kann man also fröhlich Schummeln…

Resultate

Die Resultate werden zusammengefasst dargestellt und einzeln aufgeteilt nach Registrierung, Geschlecht, Region und Altersstruktur. Leider können diese nicht kommasepariert exportiert werden und man ist für weitere Auswertungen aufs Abschreiben angewiesen. Eine geniale Idee ist der Resultate-RSS-Feed. Damit ist man sehr zeitnah über Fortgang des Votings informiert.

Netvoting Resultate

Community

Um die Votings herum wurde eine Community aufgebaut. Das ist gar nicht so abstrus wie es auf den ersten Blick klingt. Das Ganze beginnt mit dem sehr ausführlichen Profil. Darin werden Freunde verwaltet, Besucher des Profils angezeigt und das Eingeben von ziemlich vielen persönlichen Daten ist möglich. Ein Gästebuch gibts noch dazu. In Gruppen können sich Gleichgesinnte zusammenfinden für die dann eine Art Gruppenblog zur Verfügung steht.

Zusätzlich gibt es ein Ranking mit Awards. Dabei werden Votings, Kommentare, etc berücksichtigt.

Beim Anschauen anderer Profile liegen Licht und Schatten sehr nahe beieinander: Man sieht die Anzahl übereinstimmender Votings mit der Person. Hier wäre eine Art „Nachbarschaftsfunktion“ schön, welche die Mitglieder mit den meisten Übereinstimmungen auflistet. Weniger schön ist es, dass man hier genauen Einblick erhält was die Person abgestimmt hat! Ja gehts denn noch? Und ich merk das erst nachdem ich die Erotikkategorie durchgestimmt habe? Upps, *blush*.

Fazit

Eine schöne Sache! Ich mag Tools die sich auf etwas konzentrieren und dies richtig tun. Vielleicht werde ich in Zukunft hier öfters kleine Votings platzieren, aber erst wenn alles funktioniert.

Akuma! oder: freie Musik für freie Bürger

Dies ist ein von trigami vermittelter bezahlter Eintrag Hinweis: Dies ist ein von trigami vermittelter bezahlter Eintrag.

Digitale Musikakuma – Online Musikdienst ist ein Onlineshop, der Musik von vielen Indie-Gruppen im mp3-Format ohne aufgezwungenes Rechtemanagement verkauft. Die Website besitzt verschiedene Features um Musik und Künstler zu finden sowie viele Communityfunktionen und läuft wunderbar auch auf einem Firefox unter Linux.

Internet und e-Commerce

Das Internet als Shoppingparadies ist eine praktische Sache: Geburtstag, Weihnachten und Selbsttröstungen kann man zu normalen Informatikerzeiten (abends um 8 bis morgens um 3 😉 ) bequem vom Bürostuhl aus besorgen. Noch besser wird es, wenn man das erworbene Gut durch die Leitungen drücken und ohne Lieferzeiten direkt geniessen kann.
Gerade Musik würde sich dafür wunderbar anbieten. Den Soundtrack zur aktuellen Tätigkeit auswählen, bezahlen, downloaden und sich freuen.
Leider wollten bis jetzt viele Anbieter meine Kohle nicht; sie versuchten mir mittels DRM vorzuschreiben wann ich was wie zu hören habe, sie wollten mir bestimmte Geräte aufzwingen oder mir sogar mein geliebtes Linux madig machen. Wenn dann mal einiges gepasst hat gabs neben Spearguilera, UmpfpengzaggazaggaYoYo! und Schunkelschenkelklopfer nicht vieles käuflich zu erwerben.
Grundsätzlich gab und geb mein Geld nicht gerne Leuten die es nicht wollen, und so habe ich mir die Musik halt auf anderen Wegen (legal!) besorgt. Eine Website die mein Geld möchte muss also in Komfort, Auswahl, Einfachheit und Freiheit konkurrieren können.
Die Anfrage, über akuma.de zu schreiben kam daher wie gerufen. Ich will die Künstler ja bezahlen und bin auch gerne bereit etwas auszugeben, wenn ich dafür effizient zu meiner Musik komme.

Funktion und Angebot

Songs und Alben

AkumaLaut Selbstinformation hat es auf akuma eine Auswahl aus 600’000 Songs (und einigen Hörbüchern), Tendenz steigend. Ich kann bestätigen, dass man vieles findet, sowohl alte Klassiker wie auch neuere Bands. Die Preise beginnen bei 0,89 € (etwa 1,45 CHF) Song und bei 4,49 € (7,35 sFr.) für ein Album.
Alle Songs sind ohne DRM (wunderbar!) und im MP3 Format mit mindestens 192 kBit/s codiert (häufig mehr), was eine maximale Kompatibilität über die Betriebssystemgrenzen hinaus und eine gute Qualität garantiert.
Beim Kauf eines Albums kann man sich mit Hilfe eines Covergenerators ein CD-Inlay im PDF-Format zusammenklicken, inklusive original-Coverbild und Trackliste.

Ein Bisschen irritiert hat mich der Hinweis (inzwischen weg vom Netz), dass einige der mp3 Dateien mit einem digitalen Wasserzeichen versehen sind. Hm, ok, wahrscheinlich macht das Sinn in Deutschland, aber hier im der Schweiz dürfen die Dateien (eingeschränkt) weitergegeben werden und somit ist der Aufwand dieses Unterfangens bei den Eidgenossen sicher vergebens.

Man kann in alle Songs reinhören und ein Player im Browser spielt die ersten paar Sekunden. Das reicht normalerweise echt für entzücktes Quitschen oder unmütiges aber bestimmtes Klicken auf den Stop-Button.
Gefällt der Song, so kann er einer Merkliste hinzugefügt werden und man kann sich das Liedchen später nochmals zu Gemüte führen. Gefällt der Song sehr, so kann er direkt käuflich erworben werden (später dazu mehr).

Redownload

Gibt es einen Festplattencrash, möchte man die Musik trotzdem weiter hören können, schliesslich hat man sie ja bezahlt. Bei akuma gibt es zwei Lösungen dafür:

  • Die Lieder können ohne Einschränkung gebrannt und somit weggesichert werden.
  • Die gekauften Lieder können bei akuma neu gedownloaded werden.

Community

akuma ist auch mit Communityfunktionen ausgerüstet. Immerhin wurde gerade der 10’000ste, angemeldete Benutzer gefeiert! Sogenannte „Ticks“ identifizieren einem als Fan einer Gruppe oder eines Albums. Musik kann weiterempfohlen und bewertet werden, „Freunde“ wollen gemacht und eingeladen werden, es gibt ein Mailsystem und jeder besitzt ein Gästebuch. An diesen Funktionen wird auch noch gearbeitet.

Bedienung

Auf den Ersten Blick hat es sehr viel Text und Bildchen auf der Homepage und man ist auch als Technophiler fast etwas erschlagen. Das hält aber nicht lange an, denn die Bedienung ist erste Sahne. Etwas schräg in der Ergonomiewelt stehen die benutzten Piktogrämmchen. Sie sind nicht sprechend und bei mir zeigen sich auch keine Toolips. Hm, dann muss ich halt raten was ein Pinsel bedeutet: Löschen, Cover machen, mein Büro abstauben?
Bei der Darstellung ist mein Firefox 2.0.0.5 unter Linux sicher nicht die einfachste Zielplattform. Ich habe aber keinen einzigen Bug oder auch nur schon eine Unschönheit erkennen können.

Die akuma Page

Für Suche und und einige weitere Funktionen werden Ajax Features (dynamische Elemente ohne dass die Seite neu geladen wird) eingesetzt, die richtig funktionieren und auch Zeit sparen. So macht Web 2.0 Spass und es ist eine Freude den Suchergebnissen zuzusehen wie sie nacheinander aufpoppen.

Einkaufserlebnis

Grundsätzlich sehe ich zwei verschiedene Einkaufsszenarien (wobei Zweiteres sich auch in Ersteres wandeln kann während des Websitebesuchs 😉 ):

Ladenbummel

Beim „Ladenbummel“ hat man Zeit und Lust, neues kennen zu lernen. Alle 600’000 Songs kann man nicht anhören, also ist man auf Hilfsmittel angewiesen.
Es gibt eine Menüordnung nach Genre (Gothic ist wie bei vielen realen Musikläden auch nicht dabei) oder auch verschiedene „Charts“, welche die meistverkauften Musikstücke eines Genres auflisten.
Tags erlauben den Websitebesuchern ein Song oder Album mit irgendwelchen Worten zu versehen (gibts auch für dieses Blog, siehe Tagwolke in der Sidebar). Nundenn, entweder ist dieses Feature schwierig zu verstehen oder die Anwender haben etwas Mühe, denn Xavier Naidoo ist als Goth getaggt (autsch) und es existieren die Tags „goth“ und „gothic“. Sinnvoll wäre es, wenn man Tags kombinieren könnte, im Sinne von Alle Stücke mit den Tags ‚gothic, female voice, fast, electronic‘ aber ohne ‚industrial‘ und ohne ‚heulsuse‘. Nur ein Tag anzuklicken gibt bei Goth eine Liste von einer Zillion Alben die man beim besten Willen nicht durchhören kann. Deli.cio.us hat dabei ein einfaches Interface geprägt.Das System scheint die Tags von last.fm zu importieren. Das wiederum ist clever gemacht!
Akuma benutzt ebenfalls den Audioscrobbler von last.fm um verwandte Künstler anzuzeigen. Das heisst, es gibt interessante Empfehlungen und eine Musikgruppe die Gefällt kann als Ausgangspunkt dienen um neues kennenzulernen ohne sich ganz zu verrennen.

Gezieltes Suchen nach einem Song/Album

Sucht man ein ganz bestimmtes Lied, so gibt es eine Suchmaschine die direkt zum Ziel führt. Kurz und schmerzlos. Von jedem Album kann jeder einzelne Song gekauft werden. Das gibt die komische Situation, dass das eher kürzeres Intro gleichviel kostet wie die Ballade epischer Länge in der Mitte. Amputiert man aber das Intro um Geld zu sparen, geht unter Umständen viel Ambiente verloren…

Bezahlung und Download

Akonto

Wenn es dann ans Kohle abdrücken geht stellt akuma folgende Optionen zur Verfügung:

  • Click and Buy (Zahlen per Telefonrechnung/Kreditkarte)
  • PayPal (Kreditkarte)
  • Onlineüberweisung (aus der Schweiz nicht möglich)
  • Lastschrift (aus der Schweiz nicht möglich)

Das ganze funktioniert nach dem Aufladesystem: Man überweist Geld und kauft dann davon die Musik. Wenn man unter 20 € auflädt dann muss man die Gebühren (~ 0,50 €) selbst übernehmen.

Preise

Kaufen kann man einzelne Songs oder ganze Alben. Die Preise sind wirklich mehr als ok! Bei ein paar stichprobenartigen Vergleichen mit CD-Onlineversender schnitt akuma durchs Band besser ab. Etwas fremd fand ich, dass teilweise alle Songs eines Albums im Einzelkauf günstiger waren als das gesamte Album.

Download und Abspielen

Der Download geht zügig vonstatten und die mp3s sind wunderbar mit allen ID3-Metainformationen versehen.

Fazit

Negatives

Das Tagging ist noch nicht optimal: Die fehlenden Kombiniermöglichkeiten schränken den Nutzen etwas ein. Die falsch getaggten Stücke sind natürlich den Benutzern zuzuschreiben (böseböse 😉 ).

Positives

Akuma ist ein schöner Shop der sehr sympathisch rüberkommt. Die Communityfunktionen sind viel versprechend und an der Site wird noch gearbeitet. Die Auswahl und das Einkaufsvergnügen sind gegeben und darum werde ich die Website noch oft besuchen.

Zum Schluss

Musik online bestellen macht Spass und funktioniert..!

Nachtrag Juni 2009: Leider hat Akuma den Downloadbetrieb eingestellt 🙁 …

Friendwatch: Web 2.0 und lokalisierte Dienste

Die Macher von Friendwatch haben schon sehr erfolgreich mehrere Communities aufgebaut (bspw. Gothic-Singles, Gothic-Vote, …). Die Idee ist so was von Web 2.0-mässig: Man trägt verschiedene Orte ein, die im Leben eine Rolle spielen: Wohnort, Arbeitsstätte, … und kann auf einer Karte sehen wer sich ab und zu in der Nähe aufhält. Das Design ist schön, die Karten schnell, alles ist voller XHTTP-Requests und es funzt schon ziemlich gut, obwohl es noch den Betastatus hat. Die Idee, das globale Netz mit den lokalen, tatsächlichen Gegebenheiten zu verbinden ist gut, denn richtige Treffen sind durch rein virtuelle Communities halt immernoch nicht zu ersetzen (vielleicht meine ich das auch nur, weil ich so alt bin 🙂 )…

Nun beginnt das Huhn-Ei Problem: Es braucht viele Eintragungen bis es läuft und erst wenn es läuft gibt es viele Eintragungen…

Ein Ajax Baum der sich sein Zustand merkt

Man gönnt sich ja sonst nichts… Ich wollte für eine mit dem Symfony Framework erstellte Webanwendung eine Baumansicht. Da leichtes implemenieren langweilig ist, musste es schon ein Ajaxbaum mit Kontextmenü und allem Schnickschnack sein. Nach längerem Suchen fiel die Wahl auf Dojo, einem Toolkit mit vielen Widgets und sonstigen Spassmachern. Der Baum besitz viele Nodes, darum sollten diese dynamisch nachgeladen werden (ok, etwas Masochismus war auch dabei). Die Anwendung besteht eigentlich aus herkömmlichen Seitenwechseln, und so musste der Baum auch seinen Zustand halten können. Nundenn, nach laaaaaanger Probierephase (die Dokumentation ist nicht gerade erschlagend) und der Hilfe vom Web wurde es dennoch Realität *freu*.

Hilfreiche Websites:

Tipps generell:

  • var djConfig = {isDebug: true }; aktiviert die Debugeingaben, dojo.debug(‚Blah‘); kann für Debugausgaben benutzt werden.
  • saveExpandedIndices und restoreExpandedIndices sind methoden des erweiterten tree-Controllers! Er muss also require’d und gemixint werden (siehe unten)
  • Der Baumzustand wird in einem Cookie gespeichert, damit hat man in der Applikation nichts mehr damit zu tun.

Wie das Ganze in Symfony integriert wurde kann gerne nachgefragt werden.

Nundenn, gimme Code:

<script type="text/javascript" src="/js/dojo.js"></script>
<script type="text/javascript">
var djConfig = {isDebug: true }; // Comment if debugguing
dojo.require("dojo.widget.Tree");
dojo.require("dojo.widget.TreeSelector");
dojo.require("dojo.widget.TreeNode");
dojo.require("dojo.widget.TreeContextMenu");
dojo.require("dojo.widget.TreeLoadingController");
dojo.require("dojo.widget.TreeControllerExtension");
// Do something if a node is clicked
function modulTreeSelectFired() {
    var treeSelector = dojo.widget.manager.getWidgetById('modulTreeSelector');
    var treeNode = treeSelector.selectedNode;

    < !get a reference to the songDisplay div –>
    //var hostDiv = document.getElementById("songDisplay");

    var isFolder = treeNode['isFolder'];
    if ( !isFolder) {
       //var song = treeNode['title']
       //hostDiv.innerHTML = "You clicked on "+song;
    } else {
       //hostDiv.innerHTHML = "";
    }
    //hostDiv.style.display = "";
}

// Set up Dojo and the tree
function init() {
    var treeSelector = dojo.widget.manager.getWidgetById('modulTreeSelector');
    dojo.event.connect(treeSelector,'select','modulTreeSelectFired');

    var modulTree = dojo.widget.manager.getWidgetById('modulTree');
    dojo.event.topic.subscribe(modulTree.eventNames.collapse, "saveExpandedIndices");
    dojo.event.topic.subscribe(modulTree.eventNames.expand, "saveExpandedIndices");

    // add extensions to controller
    dojo.lang.mixin(dojo.widget.byId('modulTreeController'), dojo.widget.TreeControllerExtension.prototype);

    // Restore old state
    restoreExpandedIndices();
 }

// Save the tree state
function saveExpandedIndices() {
        // You can save this object as tree persistent state
        indices = dojo.widget.byId('modulTreeController').saveExpandedIndices(
            dojo.widget.byId('modulTree')
        );
        var flatIndices = dojo.json.serialize(indices);
        //dojo.debug(flatIndices);
        dojo.io.cookie.setCookie('modulTree/saveindices',flatIndices, 365, null, null, null);
    }

// Restore the tree state
function restoreExpandedIndices() {
        flatIndices = dojo.io.cookie.getCookie('modulTree/saveindices');
        indices = dojo.json.evalJson(flatIndices);
        //dojo.debug(flatIndices)
        if(indices) {
            dojo.widget.byId('modulTreeController').restoreExpandedIndices(dojo.widget.byId('modulTree'), indices
            );
        }
    }

// Initialize
dojo.addOnLoad(init);</script>

Der HTML-Code sollte eigentlich klar sein: Controller, Kontextmenü und Tree aufbauen (nur die erste Hierarchiestufe) und der PHP-Teil ist nach Vorgabe. Sind mehr Details gewünscht, liefere ich diese gerne nach.

Stichworte: persistent tree state, remembering tree state

Ergänzung, Juli 2008: Oky, Ihr habt recht: Gimme Code! Schwatzen kann jeder!

Hier mal den Quellcode (eher das Gerüst, bzw proof-of-concept 🙂 ) des Moduls und den Inhalt des web/js Verzeichnisses. Hilft das was? Braucht es mehr, damit es sinnvoll ist?

Geschrieben wurde es mit Symfony 1.0 und Dojo 0.4 Rev: 6258.

In der Zwischenzeit bin ich aber von dem Dojo-Ajax Zeux wieder etwas weggekommen. Ich progge für Intra- und Extranetapplikationen, und da sind zu viele Browser mit zu vielen Konfigurationen im Einsatz. Für „öffentliche“ Websites ist es sicher schön, auch wenn es (wie bei Symfony üblich) nicht voll Ajax ist, sondern halt nur Komponentenweise, was ich nicht als schön empfinde…

Ich bin zurück zum guten alten PHP-Layersmenü (Beitrag dazu folgt noch). Das fallbackt sehr schön ohne Java Script.