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

 

Eventuell bin ich ein wenig spät dran, denn andere Blogs haben schon die ein oder anderen Dinge des neuen “Mango” – Updates veröffentlicht, aber ich denke eine kleine Zusammenfassung kann nicht schaden…

Microsoft hat am 30.06.2011 das “Mango” – Update für registrierte Entwickler zum Download freigegeben. Damals mussten noch alle Entwickler einem NDA (Non-Disclosure Agreement) zustimmen, in welchem klar geregelt wurde, keine Neuigkeiten, keine Screenshots usw. in irgendwelchen Medien der Öffentlichkeit zugänglich zu machen. Dies wurde jedoch bereits aufgehoben und jeder darf nun, natürlich ganz im Sinne von und für Microsoft, darüber berichten Smiley

Wer bekommt Mango überhaupt? Eine Frage die schnell zu beantworten ist. Alle die als Entwickler auf http://create.msdn.com registriert sind. Der Jahresbeitrag beträgt derzeit 75€ + MwSt. Schüler und Studenten können sich kostenlos registrieren (DreamSpark).

Nebenbei bemerkt: Kurz nachdem das Update für Entwickler zum Download angeboten wurde, gab es bereits eine Anleitung für “Nicht – Entwickler” auf xda-developers. Es ist also für jedermann möglich, das Update bereits vorab zu installieren. Beachtet dabei, man verliert natürlich sofort die Gewährleistung in diesem Fall. Aber ich glaube, dem musste ich auch bei der Freischaltung als Entwickler zustimmen.

Also was gibt es denn so neues… In der Presse liest man immer, das es über 500 neue Features sein sollen. Ja das mag sein, viele sicherlich unter der Haube aber einige machen sich im Frontend für den Benutzer sichtbar.

Ein Feature das sofort nach der Installation auffällt: die Jumplist im App Menü.
Endlich ist es möglich, direkt den Anfangsbuchstaben der App zu wählen! *thumbs up*
Auch eine Suche nach dem Namen ist nun möglich. Was ich persönlich schade finde: das man installierte Apps nicht umbenennen kann. Das wäre ein Feature was ich sehr begrüßen würde! Smiley

Damit es nicht in zu viel Text ausartet, hier nun eine Auflistung aller entdeckten Features:

Startseite / Apps

  • Jumplist im App Menü
  • Suche im App Menü
  • Schneller Wechsel zwischen geöffneten Apps (Task Switch) [“Zurück Button” lange halten]
  • Installationsfortschrittsanzeige direkt in der App Übersicht
  • Mehrere Live Tiles pro Anwendung (noch nicht gesehen, soll aber möglich sein)

Suche (Bing)

  • Die Suche ist nun dreigeteilt: Web, Lokal und Bilder
  • Suchabfragen können an Apps weitergegeben werden, sofern sie es unterstützen
  • Suche “Vision”: Suche mit Kamera nach "Barcodes (QR)”, “MS-Tags”, Bilder, CD Cover (entweder hatte ich im Test komische Barcodes und unbekannte Bücher oder er findet einfach nichts)
  • Suche “Musik”: Aufnahme der aktuell laufenden Musik (summen, pfeifen usw. wird nicht unterstützt, Aufnahmen klappten aber sehr gut)
  • Suche “Sprache”: man kann den Suchtext sprechen, dieser wird dann als Text umgewandelt – verbesserungswürdig…
  • Über die Einstellungen ist es möglich freizugeben, das mit der Suchtaste das Telefon entsperrt werden kann (ähnlich Fototaste, jedoch nur vom Lockscreen aus)

Internet Explorer

  • IE9 mit HTML 5 Unterstützung
  • die Adresszeile ist nun fingerfreundlich am unteren Bildschirmrand angebracht
  • Links können sofort auf Facebook freigegeben oder per E-Mail / SMS verschickt werden

Social

  • alle Neuigkeiten über den “ICH” – Tile einsehbar, Check-In bei Facebook Places
  • Chatfunktion / Nachrichten über SMS, Live Messenger und Facebook möglich (Gruppierung der Nachrichten fortlaufend – egal welches Medium)
  • Gruppierung von Kontakten verschiedener Plattformen (z.B. SMS an das gesamte Team)
  • Smileys

Einstellungen

  • eigene Klingeltöne (39 Sekunden und nicht größer als 1MB)
  • Stromsparmodus (Batteriesymbol erhält ein kleines Herz, dabei wird E-Mail Empfang deaktiviert, Anwendungen dürfen nicht mehr im Hintergrund laufen)
  • versteckte WLAN Hotspots

Hardware

  • hardwarebeschleunigte Grafik
  • Unterstützung von Dual Core Prozessoren

demnächst ist wohl noch ein Handy mit Front Kamera zu erwarten (ich sag nur Skype lässt grüßen Smiley)

Kamera

  • Fotos können automatisch optimiert werden (keinerlei Einstellungsmöglichkeiten dabei)
  • Bild Stabilisator
  • Upload von Fotos und Videos zu Facebook und SkyDrive

Kalender

ich wusste gar nicht das ich so viele Live Kalender habe…

  • Integration der Windows Live und des Facebook Kalenders

Navigation

  • Turn-By-Turn Navigation (Bing Maps) – kann auch von Entwicklern über den BingMapsDirectionsTask genutzt werden
  • Karten innerhalb von großen Gebäuden (z.B. Einkaufszentren)

Marketplace

  • Suche mit Autovervollständigung
  • Suchbutton nun als Extra Button in der Anwendung selbst (endlich verliert der Suchbutton vom Telefon sein Alleinstellungsmerkmal, da 3rd Party Apps diesen nie nutzen durften)
  • in Zukunft soll auch das Kategorisieren von IN-Beta und Private Apps möglich sein

Musik

  • Hauptsächlich Designänderungen
  • Player integriert sich auf dem Lockscreen

 

Derzeit als Beta gibt es den Lync Client, worauf ich auch schon sehr gespannt warte… Ich hoffe das Microsoft hier schnell nachzieht und ihn noch vor Skype für die Öffentlichkeit freigibt, oder nur mir –egal - Hauptsache ich habe ihn Smiley

 

Wenn ich mal rausbekommen sollte, wie man ordentliche Screenshots vom Telefon bekommt reiche ich diese hier noch nach!

 

Als ich heute eine neue Solution für ein Visual Webpart erstellt habe musste ich leider feststellen, dass Visual Studio 2010 noch einen kleinen Bug beinhaltet.

Ich habe den Namespace geändert, jedoch wurde nach dem Deployment die Fehlermeldung “Webpart ist not registered as save” angezeigt, da als SafeControl Eintrag für die web.config immer noch die Endung “…mynamespace.VisualWebpart1” verwendet wurde.

Der Grund ist die *.spdata des Usercontrols, die nicht automatisch aktualisiert wird:

image

Der Assemblyname ist hierbei mit einer Variablen hinterlegt, der Namespace ist jedoch hart kodiert und wird nicht automatisch angepasst. Nach der manuellen Anpassung muss die Solution geschlossen, neu geöffnet und kompiliert werden. Im Anschluss daran kann ein neues Deployment oder auch Debugging erfolgen, dann funktioniert alles wie gewünscht.

 

Andreas M. hat einen Entwickler Tipp online gestellt, in dem er die Kommunikation zwischen den Settings und dem eigentlichen Add-In beschreibt. Benutzt wird hierbei ein einfacher Eventhandler, der beim Commit ausgelöst wird.

The easiest way to accomplish this is by using a singleton object which provides the necessary means of communication.

Now there’s two things left to do: First we need to subscribe to the ChangeNotifier’s Changed event in our console tab and second we have to call the Notify() method (which will fire the Changed event) from our settings tab when setting changes are committed.

image

Dieser Tipp kann benutzt werden, um Änderungen an den Einstellungen zu erkennen und im Add-In sofort zu reagieren.

Wenn ich an meine ganzen Versuche zurück denke… oje… der Weg ist einfach klasse!!

 

Tim Heuer hat eine 7-teilige Serie für einen erfolgreichen Beginn mit der Silverlight Entwicklung für Einsteiger verfasst.

Teil 1: Getting started – Tools and Hello World
Teil 2: Defining the UI layout and Navigation
Teil 3: Accessing Data
Teil 4: Binding the data and storing some for later
Teil 5: Integrating other controls
Teil 6: Polish the UI with Styles and Templates
Teil 7: Out-of-browser experiences

Sehr interessante Sachen dabei!!

 

Jeder kennt sie, die altbewährte MessagBox…

image

Um nach Fehlermeldungen zu suchen, tippt man sich hier oft die Finger in der Suchmaschine seines Vertrauens wund, denn Entwickler sind manchmal sehr gesprächig ;)

Dabei ist es so einfach… STRG + C zum kopieren der gesamten Meldung, klappt mit jeder MessageBox!

Hier einige Beispiele von lustigen Meldungen:

image

Roman

image

Ah ja und was wird nun übermittelt?

image

schade…

Nun ja, es gibt eine Vielzahl an lustigen Meldungen… Sonst wäre das Leben eines Entwicklers auch langweilig ;)

 

Ennnnnnnnddddddddliiiiiicccccccccccccchhhhhhhhhhh… heute wurde auf der World Partner Conference ein erster langersehnter Einblick auf die neue Version des SharePoint Server gegeben.

Microsoft gibt einen Überblick auf den neuen SharePoint 2010 und damit auf einige der neuen Funktionen. Ich finde das Layout sehr ansprechend (Ribbons, neue Aufteilung der Elemente) aber auch die neuen Funktionen können sich sehen lassen! Sehr schön für Entwickler ist die Integration des SharePoints in Visual Studio 2010 (Server Explorer für Zugriff auf Listen, viele Projekt Templates) aber auch das Developer Dashboard, welches dem Entwickler sehr nützliche Informationen wie z.B. der Ladezeit des einzelnen Webparts liefert.

Alles in allem, finde ich, ist es ein sehr gelungenes Paket!

Wer sich selbst davon überzeugen mag, der findet hier 3 Videos:

Overview Sneak Peek
Developer Sneak Peek
IT Professional Sneak Peak

 

SharePoint bringt eine Reihe von eigenen Controls mit, die auch in den Eigenentwicklungen genutzt werden können. Die folgenden Seiten bieten einige Beispiele für die Einbindung und Benutzung dieser Controls.

René Hézser stellt eine Klasse mit diversen Webcontrols zur Verfügung, wobei das benötigte Control anhand des SPFieldType ermittelt wird

René Hézser zeigt außerdem die Verwendung von TextField bzw. RichTextField, welche “webübergreifend” agieren

Karine Bosch zeigt die einfache Verwendung von SharePoint User Controls und SharePoint Server Controls, unter anderem “InputForm Controls”, “DateTime Control”, “PeopleEditor Control”, “SPGridView Control”, “Validator Controls”…

Reza Alirezaei zeigt die Benutzung einer Standard SharePoint Toolbar in Webparts

© 2012 Daniel Buschke - Blog Suffusion theme by Sayontan Sinha