Die neue interne Kommunikation und Kultur dank Social Media

Heute darf ich bei der HSLU über Social Media und die Auswirkung auf interne Kommunikation und Kultur in Unternehmen aus meiner persönlichen Erfahrung reden. Frau Dr. Jacqueline Holzer, Institut für Kommunikation und Marketing, stellt im Dialog auch kritische Fragen, die in der Praxis auftauchen.

Die Zahlen, die ich von Sabine Dufaux hab, spiegeln, dass Social Media in unserem Alltag einfach stattfindet offline und online / intern und extern / privat und geschäftlich. Dazu hab ich mir ein paar Thesen überlegt (Danke an meinen Sparringpartner Jürg für die Idee) So konnte ich der eher klassischen Agenda ‘soziales Leben’ einhauchen.

1. Menschen kommunizieren, generieren Inhalte
2. Realität ist auch online
3. Privat und Geschäft verschmelzen
4. Intern wird extern und umgekehrt
5. Mauern und Hierarchien fallen

2336-mauern abbauen-thumb-500x250-2335.jpg

Bildquelle: dpa und taz

Aus der Praxis gibts Jans Geburtstagskuchen (der Teil der Kultur ist und zum Kommunikationsinhalt wird) und eine interne Frage von Samuel Peyer, die auf Twitter (extern) beantwortet wird. Wie aus einem Mitarbeiterprojekt wiederum externe Kommunikation wird, erzähl ich am I like Beispiel. Danke Mihi Risch für die 100 Aufkleber, die ich verschenken darf.

2343-intern_extern_twitter-thumb-500x197-2342.jpg

Mein Fazit ist: Kommunikationsleute werden künftig noch weniger trennen zwischen interner und externer Kommunikation und die Unternehmenskultur wird mehr vom Dialog geprägt. Persönliche Meinungen bereichern die bisherigen Botschaften oder ersetzen sie gar. Ich denke, die Herausforderungen für Firmen liegen beim Verstehen und Respektieren der neuen Kommunikation, der Sozialkompetenz (die zur Medienkompetenz gehört), Vertrauen und Transparenz. Aber all meine Gedanken dazu kann ich hier nicht wiedergeben. Wer spontan noch dabei sein möchte, ist herzlich eingeladen (heute, 18.30 Uhr), ein Kommentar hier und ein Zugticket nach Luzern reichen. Sonst ist

die Präsi hier

.

Wenn Ihr noch Ideen habt, nehme ich die gerne bis 17.30 Uhr in die Präsi auf.

Wenn am Montag schon Freitag ist

Dann hat das leider nichts mit neuen Feiertagen zu tun.
Obwohl, eigentlich gibt es schon etwas zu feiern:

Der Kult-Taschen-Hersteller Freitag bringt eine neue Kollektion mit dem schönen Namen “Reference Line” heraus. (persoenlich.com berichtet). Die neue Linie besticht durch Eleganz, wobei sich die Marke ihrer Grundsubstanz treu bleibt und weiterhin auf LKW-Planen setzt.

2334-Freitag_Ref_Line_Namics-thumb-500x339-2331-thumb-500x339-2332.png

Eine schöne Micosite macht Lust auf die neuen Taschen (man muss nur ein wenig Geduld mitbringen, dann “entblättert” sich der Text). Umgesetzt wurde die Microsite übrigens von Namics ;-)

Emex – gut investierte Zeit?

Nein, nicht die Emex war für mich gut investierte Zeit. Eine Messe mit Werbeartikeln, Verpackungsfirmen und ein paar „geschulte Verkäufer-Sprüche”. Die erinnerten mich leicht an die E-Mail-, Facebook- und XING-Wucht der Veranstalter. Es dürfte gerne etwas weniger davon in meinen Inboxen landen. Aber die Online Ecke war für mich den Besuch wert.

Nicht nur, weil ich gerade so die Präsi von Thomas Lang sehen durfte, gespickt mit fetzigen Beispielen, wie zugara. Dort kann ich dank Augmented Reality tatsächlich Kleidungsstücke virtuell probieren und dann gings noch um Online Wine Handel. Da war ich vom Flickrn und Twittern abgelenkt.

Die Blogwerker Olivia Menzi, Moritz Adler treffen und Andreas von Gunten herzlich die Hand schütteln und natürlich auch den emexblogger Karsten Fuellhaas bei der Arbeit sehen und mit Bernadette Bisculm Kaffee trinken – sind wert, gelegentlich doch eine Messe zu besuchen (ich konnte übrigens die Highheels nicht sein lassen – und jetzt tun mir die Füsse weh).

2319-felix_marcel-thumb-500x168-2318.jpg

Dann kamen Marcel Albertin und Felix Kaiser mit ihrer Prezi. Hab ich die eigentlich das erstemal live gesehen? Präsi und Prezi haben mich beeindruckt und Wandersocken für 39.90 CHF (!) auch. Im Dialog zeigten die Jungs Visionäres und den Praxis-Check für E-Commerce. Jetzt versteh ich, warum ich Multichannel und PIM (Product Information Management) bei uns oft in einem Atemzug mit E-Commerce höre.

2321-multichannel-thumb-500x214-2315.jpg

Die beiden Referenten (die ich spontan Namics Pirates taufte) waren zu bescheiden, einen Vortrag ein zweites Mal zu posten. Drum mach ich das jetzt.

Prezi: Potenzial und Stolpersteine. E-Commerce zwischen Vision und Realität

Flexible & erweiterbare jQuery Plugins

jQuery ist ein mächtiges Framework welches das Arbeiten mit JavaScript stark erleichtert. Mittlerweile ist jQuery mit Abstand das verbreitetste JavaScript Framework der Welt. Ganze UI-Elemente wie Tabs, oder Funktionsblöcke wie etwa eine Bildergalerie sucht man jedoch – bei jQuery selber – vergeblich. jQuery stellt lediglich zahlreiche mehr oder minder kleine Helfer zur Verfügung, welche es ermöglichen, solche Dinge mit geringem Aufwand zu erstellen.

Nun ist es natürlich nicht praktisch komplexe Funktionen wieder und wieder – und für jedes Projekt neu – zu schreiben. Hier kommen die “jQuery Plugins” ins Spiel. Ein jQuery Plugin ist in der Regel eine Erweiterung von jQuery und kann beliebig komplexe Funktionen – von History Handling über UI-Elemente bis zu Lightboxen – bereitstellen.

Aufbau eines Plugins

Die jQuery Plugin API dient dazu, jQuery um neue Funktionen zu erweitern:

// jQuery um Tab Funktion erweitern:
$.fn.tabsPlugin = function(userOptions) {
   // Plugin Code...
}

Plugins sind meist sehr ähnlich aufgebaut. Sie werden in der Regel auf ein Set von HTML Elementen angewendet und man kann das Verhalten des Plugins mit Optionen etwas beeinflussen. In etwa so:

var options = {
     activeTab: 2
};
$('div.tabs').tabsPlugin(options);

Damit würde man etwas HTML Code…
2307-html Code.png

…in ein Modul verwandeln das etwa wie folgt aussieht:
2306-Tabs-thumb-500x83-2305.png

Das Plugin hat dabei meist eigene Optionen, sogenannte Defaults. Diese werden durch die Optionen, welche der Benutzer dem Plugin beim Aufruf mitgegeben hat ergänzt:

var options = $.extend({}, $.fn.tabsPlugin.defaults, userOptions);

Innerhalb des Plugins, wird danach die entsprechende Plugin-Funktion auf jedem einzelnen der übergebenen Elemente ausgeführt. Dabei muss darauf geachtet werden, dass die Funktion nur auf das jeweilige Element Einfluss hat, damit mehrere Elemente auf der Seite die gleiche Funktionalität haben können.

var $tabSets = $(this);
$tabSets.each(function(){
     // Auf jedem Element die gewünschte Funktion ausführen
     var $tabSet = $(this); // Aktuelles Tab-Set
     ...
});

Nun soll’s ein bisschen anders sein…

Ein Problem vieler Plugins ist, dass sie zwar meist ihre Aufgabe gut erledigen, nicht selten auch viele Optionen mitbringen, aber nicht flexibel oder erweiterbar sind. Nehmen wir ein Plugin, das aus einem Set an HTML Elementen ein Tab-UI generieren soll. Dieses Plugin übernimmt das Sammeln der Tabs und zugehörigen Panels, sowie das Ein- und Ausblenden der Panels beim Klick auf ein Tab. Ausserdem bringt es noch einige Optionen mit, womit der Benutzer festlegen kann, welche Klassen die ausgewählten Tabs haben sollen und welches Tab zu Beginn aktiviert werden soll. Ist doch Perfekt, nicht?

Was nun, wenn der Inhalt des Panels beim Aufruf der Seite noch nicht vorhanden ist sondern erst nachgeladen werden soll, wenn man das entsprechende Tab aktiviert? Herkömmliche Plugins versagen hier oft und gewünschte Funktionalität muss direkt im Plugin eingefügt werden. Dabei geht die Update-Fähigkeit verloren und es leidet die Wiederverwendbarkeit und Sicherheit des Projekts. Im Wissen, dass der Benutzer vielleicht mit dem Plugin noch weiter Anwendungsfälle hat neigt der Autor des Plugins dazu, möglichst viele Funktionen in sein Plugin zu stecken, da er es ja flexibel halten möchte. Damit wird es gross, schwerfällig und unübersichtlich und verfügt über eine Menge Funktionen, welche viele unter Umständen gar nicht brauchen. Der Autor des besagten Tab-Plugins muss dabei an Tastatur-Bedienbarkeit, Ajax- und History-Fähigkeit sowie vieles mehr denken.

Evented jQuery Plugins = flexibel & erweiterbar

Eine Lösung für dieses Problem lautet Custom Events oder kürzer – Evented. Dabei muss sich der Plugin Autor überlegen, welche grundlegende Funktionen das Plugin benötigt und stellt diese in einer möglichst schlichten Form zur Verfügung.

Ein Tab-UI-Element hat im Grossen und Ganzen eine Funktion: Beim Klick auf ein Tab, soll das zugehörige Panel aktiviert und alle anderen deaktiviert werden. Wir brauchen also eine “activate” Funktion. Ausserdem müssen zu Beginn alle Tabs gesucht, und die zugehörigen Panels gespeichert werden. Dazu benötigen wir eine “setupTabs” Funktion. Des weiteren sollten die Panels wissen, zu welchem Tab sie gehören: “setupPanels“. Beim Aufruf der Seite sollen diese beiden Funktionen ausgeführt werden und das erste Tab aktiviert werden, dazu brauchen wir noch eine letzte Funktion, die “initialize” Funktion.

Diese Funktionen sind “Events”. Jedes übergebene Set an HTML Elementen wird mit diesen Events versehen. Da der Event damit immer zu einem Tab-Element gehört, kann damit auch das Problem von allfälligen Konflikten mit anderen Tab-Elementen einfach gelöst werden. Wenn auf einer Seite zwei Tab-Elemente vorhanden sind, beeinfluss Tab-Verbund eins den zweiten Tab-Verbund nicht, wenn darauf der activate Event ausgeführt wird:

...
$tabSets.bind("activate",
        function(e, selected) {
            // selektiertes Tab aktivieren
        }
);
...

Events nach Aussen verfügbar machen

Der Trick besteht nun darin, dass diese Funktionen nicht einfach fest in das Plugin integriert sind, sondern das jede einzelne Funktion in ein Array gepackt wird, welches über ein Objekt customEvents von aussen Zugänglich ist. Die Funktions-Array können dadurch ergänzt, oder gar ganz überschrieben werden, bevor das Plugin auf ein Set von HTML Elementen angewendet wird.

var customEvents = {
    initialize: [function(options) {
        this.bind("initialize." + options.namespace,
        function(e) {
            // Tabs und Panels vorbereiten
            //und erstes Tab Aktivieren
        });
    }],

    setupPanels: [function(options) {
        this.bind("setupPanels." + options.namespace,
        function(e) {
            // Panels mit zugehörigem Tab verbinden
        });
    }],

    setupTabs: [function(options) {
        this.bind("setupTabs." + options.namespace,
        function(e) {
            // Tabs suchen und activate Funktion bei klick ausführen
        });
    }],

    activate: [function(options) {
        this.bind("activate." + options.namespace,
        function(e, selected) {
            // Alle Tabs deaktivieren und selektiertes
            // Tab und Panel aktivieren
        });
    }]
};

Events ergänzen

Im unserem Beispiel wollten wir, dass der Inhalt des Panels erst vom Server geladen wird, wenn das Tab aktiviert wird. Die Vorgehensweise ist nun denkbar einfach, man fügt einfach vor der Plugin-Standard-Funktion eine neue Funktion hinzu, welche den Inhalt des Panels via Ajax vom Server lädt. Dabei muss man zu keiner Zeit das Plugin selber verändern. Wenn der Plugin Autor ein Bug-Fix veröffentlich, kann das Plugin einfach aktualisiert werden – die Grundfunktionen werden die gleichen bleiben und die Erweiterung wird nicht tangiert da sie sich ausserhalb des Plugins befindet.

// Neue Funktion vor die bestehende
// activate Funktion schieben:
customEvents.activate.unshift( function(options) {
    // Die Erweiterung auf das Grund-Element
    // (nicht die einzelnen Tabs) binden:
    this.bind("activate." + options.namespace,
        function(e, selectedTab) {
            // Den Inhalt des Tabs hier
            // per Ajax in das Panel laden:
            var url= selectedTab.href;
            $(selected).data('$panel').load(url);
   });
});

Der Kern des Plugins ist dabei lediglich dafür verantwortlich, dass die Default Einstellungen mit den Benutzer-Optionen ergänzt werden und dass danach alle Tab-Elemente die Custom Events erhalten.

Hello World!

Nachdem man dieses erweiterbare und flexible Tabs-Plugin geschrieben hat, ist es natürlich schön, wenn sich der Rest der Welt auch daran erfreuen kann. In meinem nächsten Post werde ich zeigen, wo und wie man ein eigenes Plugin veröffentlichen kann und was dabei zu beachten ist.

Sika: Der (noch) unbekannte Riese

Gestern bei ECO im TV: Eine schöne, ausführliche Reportage über Sika und was das Unternehmen so macht. Obwohl weltweit aktiv und in mehreren Feldern der Spezialchemie Weltmarktführer scheint Sika nicht so bekannt zu sein, es sein müsste.

Was vor 100 Jahren mit dem ersten Gothard-Tunnel begann, geht heute mit dem neuesten Gotthard-Projekt (dem längsten Tunnel der Welt!) in eine erfolgreiche Zukunft.

ECO vom 23.08.2010

Mehr zu Jörg Schlumpf und seinem Gotthard-Projekt kann man übrigens in seinem blog erfahren.

Leider lässt die Reportage ein wenig die weiteren Wirkungsfelder vermissen. Ein paar interessante Insights aus der Sicht von Studenten, Berufsanfängern und Sika-Mitarbeitern gibt es im Experience-blog.

Dort gibt es auch mehr Infos zur Geschichte der Sika.

Wer sich für das ganze Sika 100 Jahre Projekt interessiert. Hier gehts zum Projekt, das wir mit viel Spass und Freude mit der Sika umsetzen durften.