Mich traf die Aufgabe, in einer Bibliothek die Ordnersymbole anders zu gestalten, je nachdem ob sich Dateien innerhalb dieses Ordners befinden oder eben nicht.
Die Lösung ist relativ simpel und mit ein bisschen Javascript und dem Client Object Model des SharePoint Servers relativ schnell gelöst gewesen.

Ziel war es, in Dokumentenmappen die Ordner (welche dort eh nicht supported sind) ein anderes Symbol zu geben. Da die Dokumentenmappen allesamt dieselbe Seite nutzen (docsethomepage.aspx), habe ich eine Javascript Datei geschrieben, welche auch direkt in der Seite über ein Inhaltseditor Webpart geladen wird. Natürlich wäre auch ein Link in der Masterpage möglich gewesen, aber dieser Weg schien am einfachsten.

Ok was wird benötigt.. zuerst mal habe ich aus dem Ordner “14\Template\Images” das Bild für den Ordner (Folder.gif) kopiert und nach meinen Wünschen angepasst. Diese Datei wurde dann im selben Verzeichnis unter dem Namen “FolderFiles.gif” gespeichert.

Im Anschluss daran habe ich mir die unter der MIT Lizenz stehende Javascript Datei “getelementsbyclassname” heruntergeladen und im Ordner “14\Template\Layouts\scripts” gespeichert.

Nun konnte ich mit der eigentlichen Entwicklung beginnen. Zuerst habe ich mir eine neue Javascript Datei im gleichen Ordner erstellt und dann ging’s los…

ExecuteOrDelayUntilScriptLoaded(initialize, "sp.js");

Das wichtigste zuerst! Diese Funktion wartet, bis das Client Object Model (die Datei “sp.js”) vollständig geladen ist und ruft anschließend die Funktion “initialize” auf.

 

function initialize() {
    //Alle Ordner anhand der Klasse "ms-vb-icon" finden
    var folders = getElementsByClassName("ms-vb-icon");
    if (folders.length > 0) {
 
        var rf = "RootFolder=";
 
        for (var i = 0; i > folders.length; i++) {
            //Startposition ermitteln
            var startPos = folders[i].firstChild.search.indexOf(rf) + rf.length;
            //Endeposition ermitteln
            var endPos = folders[i].firstChild.search.indexOf("&", folders[i].firstChild.search.indexOf(rf) + rf.length + 1);
            //URL Teilstring auslesen
            var listUrl = folders[i].firstChild.search.substr(startPos, endPos - startPos);
            //Dekodieren der Sonderzeichen in der URL
            listUrl = decodeURIComponent(listUrl);
 
            //Image Objekt des Ordners
            var img = folders[i].firstChild.firstChild;
            //Funktion aufrufen, welche die Anzahl der Dateien ermittelt
            GetItemCount(listUrl, img);
        }
    }
}

Diese Funktion sollte sich anhand der Kommentare selbst erklären, also gehen wir über zur zweiten Funktion…

 

function GetItemCount(folder, img) {
    var folderUrl = folder;
 
    var ctx = new SP.ClientContext.get_current();
    var web = ctx.get_web();
    ctx.load(web);
    var folder = web.getFolderByServerRelativeUrl(folderUrl);
    ctx.load(folder);
    ctx.executeQueryAsync(
      function (s, a) {
          if (folder.get_itemCount() > 0) {
              img.src = "/_layouts/images/FolderFiles.gif";
          }
      });
}

Die Funktion GetItemCount ruft über den aktuellen Kontext die Ordner ab und ermittelt anschließend die Anzahl an Dateien. Anschließend wird das Ordnersymbol getauscht, wenn mindestens eine Datei im Ordner enthalten ist.

Das war's... einfach aber sicherlich ganz komfortabel, da nicht in jedem Ordner hineingeschaut werden muss.

Und so sieht dann das Endergebnis aus:

FolderFiles

 

Da ich das Thema Hausautomation und intelligentes Wohnen mag, möchte ich hier einmal ein wenig über meine Geräte schreiben, wie sie im Zusammenspiel arbeiten und was sie für Vorteile bieten.

Hier ein Überblick über die Geräte, die mir das Leben erleichtern:

  • Heizungssteuerung (3 4 Räume)
  • Lichtsteuerung (Flur)
  • Samsung TV (UE46B8090)
  • Homeserver, PC’s
  • Squeezbox Boom, Squeezebox Duet (Schlafzimmer, Wohnzimmer)
  • Harmony One
  • Handy (WP7)
  • IPad

Wer sich gerne mal einen Überblick zur zentralen Steuerung machen möchte, dem sei das SmartHome Paderborn ans Herz gelegt. Hier kann man sämtliche Geräte steuern, den Status der Geräte übersichtlich ablesen und über Webcams das Haus beobachten.

Nun folgt eine detaillierte Beschreibung der einzelnen Komponenten und deren eventuelles Zusammenspiel untereinander.

Heizungssteuerung

Die Heizungssteuerung besteht aus FS 20 Komponenten

  • 1x FHZ 1000 (Zentrale)
  • 2x 4x FHT 80 BTF (Thermostat)
  • 3x 5x Stellantriebe
  • Fensterkontakte

Die Zentrale steht im Wohnzimmer und verwaltet hier natürlich als zentraler Punkt auch die anderen beiden drei Zimmer. Es wurden Zeitpläne konfiguriert, zu welchem Zeitpunkt XX°C in einem Zimmer sein sollen. Ich möchte hier jetzt nicht detailliert auf die Zeiten eingehen, aber in der Hauptzeit sind 23°C, in den Nebenzeiten 17°C. Werden Fenster geöffnet, wird das über die Fensterkontakte gemeldet und die Heizung stellt sich auf 12°C um keine Energie zu verschenken.

Ähnliches Verhalten ist dann im Schlaf-, Kinder- und Arbeitszimmer.

Geplant: ein weiteres Thermostat, Stellantrieb und Fensterkontakte für das Schlafzimmer; FHZ 1300 PC und “IP Symcon”-Software, welche dann auf dem Homeserver installiert wird um alles von außerhalb zu steuern.

Lichtsteuerung

Zur Lichtsteuerung gibt es gar nicht soviel zu sagen. Sie besteht aus 2 Lampen im Flur mit Bewegungsmelder und einer Lampe im Wohnzimmer mit Funkfernbedienung. Alle 3 Lampen sind vom Baumarkt meines Vertrauens um der Ecke. Sie sind leider nicht intelligent verkoppelt und können nicht von extern gesteuert werden, aber sie funktionieren. Verlässt man das Wohnzimmer kann per Funktaste das Licht im Wohnzimmer auf “Sleep” gestellt werden und die Lampe geht nach 5 Sekunden automatisch aus. So hat man Zeit, noch mit Beleuchtung in den Flur zu gelangen. Dort angekommen, schaltet sich das Licht dann durch die Bewegungserkennung automatisch ein und man findet problemlos den Weg ins Bettchen.

Geplant: weitere Komponenten (eventuell FS20) Steuerbar über Webinterface zur Anwesenheitssimulation; LED Stripes für die Küchenzeile am Fuß

Die Lösung in diesem Video nehme ich als Ansporn für die LED Stripes :)

Samsung TV

Mein Samsung TV im Wohnzimmer hat einen Ethernet Anschluss und bietet über Schnittstellen die Möglichkeit Nachrichten an den TV zu senden (siehe alter Beitrag). Leider gibt es von Samsung keine Updates für die Firmware des Gerätes, was ich persönlich ein bisschen schade finde. Da das Internet@TV (Yahoo Widgets) eine Ewigkeit beim laden benötigt, ist es für mich völlig unbrauchbar. Ganz selten benutzte ich das YouTube Widget, da die Suche nach jeder Eingabe eines Buchstabens versucht, Ergebnisse zu laden. Das bremst die schon so schwere Eingabe mit der Fernbedienung weiter aus, weil sie währenddessen blockiert. Also wirklich nur als Notlösung, um bei einer Feier oder ähnliches kurz ein lustiges Video zu zeigen.

Geplant: nach Kauf der “FHZ 1300PC” und “IP Symcon”-Software push von wichtigen Statusmeldungen über den MessageBoxService

Homeserver und PC’s

Der Homeserver (WHS v1) ist zur zentralen Verwaltung meiner Dateien von intern als auch von extern zuständig. Hier sind Videos, Bilder, Filme und Musik abgelegt, aber auch Dokumente die man sichern sollte.

Dies ist eine Standardfunktionalität des WHS und keine Hexerei. Alle Dateien sind über Freigaben oder der Weboberfläche leicht abrufbar.

Auch Backups werden täglich von allen Rechnern im Netzwerk gemacht. So ist ein Rücksprung zu einem früheren Datum ganz simpel, falls wirklich mal ein Virus mein Nachbar werden sollte.

Ich habe gleich zu Beginn ein Add-In für das Stromsparen des WHS begonnen, welches eigentlich auch für die Öffentlichkeit gedacht war. Leider wurde zur gleichen Zeit ein ähnliches Add-In geschrieben, welches heute das glaube ich bekannteste “Green-IT Add-In” für den WHS ist – “Lights-Out”. Allerdings läuft mein Add-In bis heute bei mir und leistet seinen Einsatz wie gedacht. Sind alle Rechner, TV und Squeezeboxen aus, schaltet sich der WHS ebenfalls ab.

Außerdem bietet der WHS die Möglichkeit, das ich mich von außerhalb per VPN in mein Netzwerk einwählen kann als wäre ich direkt zu Hause. So ist es noch einfacher mit den Dateien zu arbeiten.

Auf dem Server läuft außerdem der Squeezebox Server, über den sich die Squeezeboxen bei Partys die Musik holen.

Für die Zukunft ist noch die Software “IP-Symcon” geplant, womit dann z.B. vom IPad aus der Küche, oder aus dem Internet aus, auf die steuerbaren Geräte zugegriffen werden soll.

Squeezebox Boom und Duet

Die Squeezeboxen dienen zum Musik hören und können synchron in verschiedenen Räumen dieselbe Musik spielen. Man sucht sich beispielsweise sein Lieblingsalbum direkt am Gerät oder über das IPad vom Homeserver aus und hört dann beim Raumwechsel dieselbe Musik. Auch Onlineradio ist möglich.

Harmony One

Ganz neu in meinem Hause ist die Mutter aller Fernbedienungen, die “Harmony One”. Sie kann viele Geräte steuern und mit Makros auch mehrere Befehle gleichzeitig abschicken. Somit kann mit einem Klick der TV, der Tuner und die Skybox angeschalten werden, der TV springt auf den richtigen HDMI Eingang und der Tuner auf TV Eingang. Dafür bräuchte man normalerweise 3 Fernbedienungen mit hin und her Wirrwarr ist hier nun Schluss. Außerdem sieht sie sehr stylisch aus, liegt gut in der Hand und ist kinderleicht zu bedienen wie es mir meine Tochter beweist.

Bisher habe ich 6 Geräte die ich mit der Harmony steuere.

Handy HTC Mozart (Windows Phone 7)

Mein Telefon hat neben der normalen Funktion “das Telefonieren” noch eine weitere Aufgabe, nämlich das Anschalten des Homeservers über das Internet (z.B. von Arbeit). Dies funktioniert über die App “Wake my PC” problemlos. Außerdem kann ich mit der App “IP Camera viewer” gleich noch auf die IP-Kamera ins Kinderzimmer meiner Tochter schauen.

IPad

Das IPad wurde mit einer Wandhalterung in der Küche angebracht und dient in erster Linie für den schnellen Internetzugang, Kochrezepte und zum “E-Mails lesen”. Weitergehend ist aber auch die Steuerung der Squeezeboxen möglich, Zugriff auf den Homeserver und demnächst dann hoffentlich noch Haussteuerung der FS 20 Komponenten.

Ansonsten sind natürlich noch einige Apps wie Nachrichten, Sport und Spiele installiert. Das ganze ist nach Themen in Ordnern und Seiten gegliedert, meine Tochter findet ihre Apps in der unteren Leiste in 3 Ordnern wieder.

 

Ich habe ein neues Forum rund um das Thema Windows Phone 7 eröffnet. Dieses Forum sollen die Benutzter mit Fragen und Antworten am Leben erhalten. Dies ist mein zweites Forum (das erste war damals zum Thema Bundeswehr / Wachbataillon), ich hoffe, dass es dieses Mal besser läuft. Smiley

Da das Forum erst am 03.01.2012 eröffnet wurde ist die Zahl der registrierten Benutzer noch relativ klein, aber das kann sich ja nun ändern.

Es gibt verschiedene Themenbereiche, u.a. auch den Bereich “Windows Phone 7 Apps”, in dem Apps empfohlen werden sollen. Ich habe direkt einen Anfang gemacht und 3 Apps beschrieben die ich auch selbst täglich benutze.

wp7-forum

http://www.wp7-forum.de

© 2012 Daniel Buschke - Blog Suffusion theme by Sayontan Sinha