TypeScript 1.0 veröffentlicht

Für alle, die es noch nicht mitbekommen haben: Microsoft hat Version 1.0 seiner JavaScript Alternative TypeScript veröffentlicht. https://www.typescriptlang.org/

TypeScript ist, im Gegensatz zu Dart oder CoffeeScript, ECMAScript 6 kompatibel, kann also auch bis auf wenige Ausnahmen direkt in Browsern mit ECMA Script 6 Unterstützung ausgeführt werden. Es gibt aber auch einen Compiler, der TypeScript in JavaScript (ECMA Script 3 oder 5) kompiliert.

Ein weiterer Vorteil von TypeScript gegenüber Dart und CoffeScript ist, dass es eine Obermenge von JavaScript ist. Somit ist jeder JavaScript Code auch gültiger TypeScript Code, was die Migration in bestehenden Projekten bedeutend einfacher macht, da man nicht sämtlilchen Code auf einmal migrieren muss.

TypeScript bietet gegenüber JavaScript ein statisches Typsystem, Klassen, Schnittstellen, Vererbung für Klassen und Schnittstellen, Module und Lambda-Ausdrücke.

Auf Channel9 gibt es einen einstündigen Vortrag, den Anders Hejlsberg, der Schöpfer von TypeScript (und auch C#) auf der aktuellen /BUILD/ gehalten hat. https://channel9.msdn.com/?wt.mc_id=build_hp

Styles in SharePoint RichText Feld einschalten

Wer schon einmal eine eigene SharePoint List Definition mit RichText Feld in Visual Studio angelegt hat, und sich gefragt hat, wie man für das RichText Feld auch die Ribbon Actions „Styles“ und Markup-Styles einschalten kann, dem sei hier geholfen.

Im Normalfall sind die beiden Ribbon Actions nur bei Wiki-Seiten, Content-Editor WebParts und Publishing Pages aktiv. Um sie auch für RichText Felder zu aktivieren, muss man das Feld in der List Definition als „echtes“ HTML Feld definieren:

<Field ID="{BF6BD5D0-F25A-34FC-99D7-A92A1465DFBF}"
 Name="RichtextMenuEnabled"
 DisplayName="RichtextMenuEnabled"
 Type="HTML"
  RichText="TRUE"
  RichTextMode="ThemeHtml" />

Vorher:

Ribbon Actions disabled

Nachher:

Ribbon Action enabled

Was kann mein Browser?

HTML5Wir Entwickler stoßen ja während unserer täglichen Arbeit immer wieder über extrem nützliche Tools. Viele davon bleiben in unseren Bookmarks verborgen und jeder benutzt sie, ohne darüber zu reden. Deshalb kann es durchaus sein, dass Einige das Tool, dass ich mal der breiten Masse näherbringen möchte, schon kennen.

Wer hat nicht schon mal verzweifelt über einem Konzept gebrütet und festgestellt, dass die abgegrenzten Browserversionen nicht mit der geforderten Frontend-Funktionalität zusammenpassen? Welcher Entwickler hat noch nicht stundenlang an CSS geschraubt, um dann hinterher festzustellen, dass es in Browser XYZ doch nicht läuft, weil man auf „moderne“ CSS Funktionalitäten gesetzt hat? Gott sei Dank gibt es im Internet ja abertausende Seiten, die sich mit HTML5, CSS3 und JavaScript auseinandersetzen und einem hier weiterhelfen. Aber wird die gewünschte Funktionalität nun auch wirklich von der aktuellen Opera-Version unterstützt? Und unterstützt der Android Browser von Android Gingerbread nicht vielleicht doch WebSockets? Was kann mein Browser? weiterlesen

Share One 2012

Ich war am 09.05. auf der Share One im Lindner Hotel & Sports Academy direkt neben der Commerzbank-Arena im Frankfurter Stadtwald. Die Share One ist eine Fachkonferenz rund um Microsoft SharePoint, veranstaltet von der im Saarland ansässigen Data One GmbH

Die Veranstaltung wurde mit der Keynote zum Thema „Vom IT-Leiter zum Prozessverantwortlichen – Die Zukunft des CIO’s im Zeitalter der Cloud“ des CIO der Heidelberger Druchmaschinen AG, Uwe Herold, eingeleitet. Er gab interessante Einblicke in das Thema Prozessmanagement gerade im Bezug auf Umstieg in die Cloud und seine Einschätzung, für wen sich ein Umstieg lohnen kann, und für wen nicht. Er machte durchaus deutlich, dass sich der Umstieg für Großunternehmen nicht lohnt (wobei seine Grenzen sehr seltsam gewählt waren; Kleinunternehmen bis 5.000 Mitarbeiter, Großunternehmen ab 10.000 Mitarbeiter), da sie eigentlich immer für On Premise Software bessere Konditionen bekommen, als es Cloud Lösungen bieten können.

Der zweite Vortrag war von Martina Grom, MVP für Office 365, von der österreichischen atwork information technology GmbH. Sie zeigte die technischen Möglichkeiten der SaaS Plattform Office 365 von Microsoft. Hierzu gab sie erst eine theoretische Einführung in das Thema, welches anschliessend nach einigen technischen Schwierigkeiten mit ihrem Airbook (ja, ein Apple Gerät :-)), dann auf einem Windows System auch praktisch gezeigt wurde.

Nach einer recht kurzen Pause, da die ersten beiden Speaker doch ein wenig überzogen hatten, folgte der Vortrag „Better Together – SharePoint und Azure im Zusammenspiel“ von Thorsten Hans. Auch hier ging es wieder um die Cloud. Diesmal war die PaaS Lösung Azure das Hauptthema des Vortrags. Auch hier erfuhren wir mehr über die technischen Möglichkeiten der Plattform und die möglichen Anwendungsbereiche.

Wir hatten somit zu diesem Zeitpunkt drei Vorträge zum Thema Cloud gehört, zwei aus Sicht von Techies und einen aus Sicht eines CIO. Interessant fand ich dabei, dass die beiden Techies dem Thema weitaus aufgeschlossener waren, als der CIO, der doch immernoch recht zurückhaltend wirkte.

Der letzte Vortrag vor dem Mittagessen war von Michael Denzler von der Firma AvePoint – „SharePoint Governance – Wie halte ich meinen SharePoint sauber“. Es drehte sich alles um das Thema Governance im Sharepoint Bereich. Hier muss man sagen, dass er zwar viele Probleme, die für die Verantwortlichen entstehen, in seinem Vortrag aufgezeigt hat, aber er den Maßnahmen, um dem entgegen zu wirken eigentlich kaum Zeit gewidmet hat, sondern dies mit einem lapidaren „Und wir von AvePoint bieten dafür auch eine tolle Lösung“ beendet hat. Leider hat man nicht mal wirklich gesehen, was die „Tolle Lösung“ denn alles kann, sondern er hat die Zuhörer nur an die Kollegen vom AvePoint Stand verwiesen.

Nach dem durchaus leckeren Mittagessen, konnte ich mich noch ein wenig mit Thomas Hans und Martina Grom unterhalten, die direkt neben uns am Tisch saßen. Es war eine nette Diskussion zum Thema Cloud, Windows 8 und Visual Studio, aber auch zum Thema „Apple vs. Microsoft“, wo sich schnell herausgestellt hat, dass die beiden auch der Meinung sind, dass das Device zählt, und wie man den größten persönlichen Nutzen aus den Geräten ziehen sollte und es eigentlich unwichtig ist, vom wem es hergestellt wurde. Ihr seht also, auch in der Microsoft Welt gibt es nicht nur Schwarz und Weiß.

Nach dem Essen gab es dann, anders als am Vormittag zwei Tracks mit Vorträgen, die zumindest äußerlich als „Entscheider & Lösungen“ und „Technik & Umsetzung“ betitelt waren. Für mich als Techie war eigentlich klar, dass mich die „Entscheider & Lösungen“ Vorträge nicht wirklich interessieren würden, und so hab ich mir zuerst den Vortrag „Duet Enterprise – Das Beste aus zwei Welten – SharePoint und SAP ERP im perfekten Zusammenspiel“ von Martin Sudbrock von Microsoft angeschaut. Bereits nach kurzer Zeit merkte ich, dass von „Technik“ oder „Umsetzung“ nicht wirklich viel zu spüren war und ohne fundiertes SAP Know How war auch nur teilweise etwas zu verstehen, aber zumindest hatte ich am Ende einen Eindruck, was Duet Enterprise alles kann, und auch, was es besser und einfacher erledigt, als die Standardintegration von SAP über Business Connectivity Services.

Der nächste Vortrag auf der Agenda im Tech-Bereich war „Kennzahlen auf Knopfdruck – Excel Services, PowerPivot und Co.“ von Patrick Sender von Data One. Ich gebe zu, meine Aufmerksamkeit war nach wenigen Minuten nicht mehr vorhanden, da sowohl das Thema extrem eintönig war, als auch der Referent leider etwas einschläfernd. Eventuell hätte ich mir doch den QM Vortrag im Entscheider Track anschauen sollen. Alles in allem war im KPI Vortrag auch hier wieder etwas SAP mit im Topf und er hat viele bunte Diagramme und Tabellen auf Knopfdruck erzeugt. Viel Geklicke und wenig Infos, leider.

Dann folgte der Vortrag, auf den ich mich im Vorfeld am meisten gefreut hatte. Wolfgang Rychlak von Microsoft referierte zum Thema „Effiziente Kommunikation jederzeit und überall – Unified Communication mit MS Lync Server und Co.“. Das Co. war zwar leider nicht zu entdecken, aber Herr Rychlak hat auf jeden Fall einen sehr schönen Überblick über die gesamte Lync Plattform inklusive Live Präsentation gegeben und hat meine Erwartungen nur dahingehend enttäuscht, dass seine Aussage, dass es etwas technischer werden würde, doch nur relativ war. Aber im Nachgang hab ich mich gefragt, warum wir eigentlich Skype benutzen und nicht einfach mal Lync genommen haben. (Jaja, ich weiß, ist zu teuer ;-))

Der letzte Vortrag am Tag war dann „Digitales Marketing – SharePoint als die Business-Plattform auch für das Internet“. Dieser Vortrag stammte wieder aus dem Hause Microsoft von Mathias Moehlis. Nachdem er langwierig erklärt hat, was sich so alles im Netz verändert hat, und warum man weniger von Web-Content-Management als von Customer-Experience-Management sprechen sollte (ja, Microsoft ist mittlerweile auch im Web 2.0 angekommen), hoffte ich ja inständig, dass er zeigen würde, wie man das ganze, was er vorher so schön beschrieben hat, auch technisch mit Sharepoint und Sharepoint für Internet-Sites umsetzen kann, aber weit gefehlt. Er zeigte mehr oder weniger einfach nur jede Menge Webseiten, die mit Sharepoint entwickelt wurden (auch das berühmte Ferrari-Beispiel, welches bekanntermaßen weniger Sharepoint als ein CMS aufgesetzt auf einen Sharepoint ist) und blieb uns die technischen Details hinter dem ganzen schuldig. Immerhin konnte eine der Teilnehmerinnen ihm entlocken, dass der neue Sharepoint wohl auch mit HTML 5 umgehen kann, was er aber nach einem kurzen Verweis auf die NDA leider nicht ausführen konnte. Sehr schade, das hätte mich wirklich interessiert.

Die anschliessende Podiumsdiskussion und die Stadion Führung durch die Commerzbank Arena haben wir uns dann allerdings doch gespart und haben uns dann auf den Heimweg gemacht.

Abschliessend kann ich sagen, dass ich mir persönlich noch tiefgreifendere technische Tehmen gewünscht hätte. Der Technik-Track war leider auch mehr für Entscheider gedacht, und so kam ich als Entwickler leider nicht wirlich auf meine Kosten. Immerhin kenne ich jetzt ein paar Produkte im Sharepoint Umfeld mehr und kann auf dieses Wissen ggf. in zukünftigen Projekten zurückgreifen, wenn ich schon keine neuen Entwicklungserfahrungen mitnehmen konnte. Aber vielleicht kann man den anfänglichen Kontakt zu den MVPs irgendwie ausbauen.

 

 

SharePoint 2010 RTE Styles

Sharepoint 2010 bringt ja einen durchaus brauchbaren Rich Text Editor für Page Content Bereiche und das Content Editor Webpart mit. Jetzt ist es ja aber nun üblich, dass man nicht jedes Mal sein komplettes Text-Layout mühsam im RTE einstellen möchte, sondern man möchte ja eigentlich zumindest häufig genutze Formatierungsoptionen wiederverwenden können. Microsoft hat hier mitgedacht und bringt Styles mit, die wiederverwendet werden können. Diese sind bequem im Editierungsmodus über das Ribbon erreichbar.

Sharepoint 2010 Standard Styles

Nun muss man aber zugeben, die Styles, die Microsoft dort hinterlegt hat, sind nicht unbedingt das, was man als User erwartet und vor allem entsprechen Sie erstmal keinem Corporate Design. Aber auch hier hat Microsoft mitgedacht, und so kann man eigene Styles relativ leicht hinzufügen.

Man legt sich einfach eine CSS-Datei an und fügt dort CSS-Klassen ein, deren Name mit ms-rteStyle- beginnt. Zusätzlich muss man noch das CSS-Attribut -ms-name einfügen, dass den Titel des Styles in dem Dropdown angibt.

Eine solche CSS-Klasse könnte in etwa so aussehen:

.ms-rteStyle-Notification
{
	-ms-name: "Hinweistext";
	border: 1px solid #7F0000;
	background: #FFD800;
	padding: 5px;
	color: #7F0000;
}

Wie kommt das ganze nun in meinen Sharepoint wird sich der Leser nun wahrscheinlich denken. Nun ja, man muss nun lediglich diese CSS-Datei in seinem Sharepoint einbinden. Da ich gerne vieles am Sharepoint umstyle, arbeite ich mit Visual Studio Solutions, die eigene Masterpages deployen und dort ein komplettes Branding mitbringen. Hier binden wir dann einfach die zusätzlich CSS Datei in der Masterpage ein und deployen die Solution. Natürlich gibt es auch noch andere Wege, so kann man z.B. die CSS-Datei in den Style Library Ordner hochladen, eine Kopie der v4.master anlegen, dort die CSS Datei eintragen  und in den Site Master Page Settings diese eigene Masterpage referenzieren, oder, oder, oder. Eventuell gehe ich noch mal in einem anderen Blogbeitrag auf dieses Thema ein, aber hier geht es erstmal nur um die RTE Styles.

Sharepoint interpretiert jede in der Masterpage eingebundene CSS-Datei und überführt alle Klassen, die dem oben gezeigten Schema entsprechen in das Style-Dropdown, so dass es dort einfach durch den Benutzer ausgewählt werden kann. Wichtig ist hier, dass außer dem entsprechenden Klassennamen und dem -ms-name Attribut mindestens ein weiteres CSS-Attribut angegeben wird.

Final sieht unser Beispiel dann etwa so aus

Angepasset RTE Styles im Sharepoint

Wie man sieht, sind hier schon weitere Styles eingebunden und ganz am Ende der Liste erscheint unser Beispiel-Style. An dieser Stelle muss ich aber leider darauf hinweisen, dass man diese Styles nur bedingt stapeln kann, man kann also nicht Hinweistext mit z.B. Interner Link kombinieren, solange es sich um den gleichen Bereich handelt, dem der jeweilige Style zugewiesen werden soll. Wenn man nur einem einzelnen Wort innerhalb eines Absatzes einen anderen Style geben möchte, funktioniert das schon mitunter. Ich selbst empfinde es aber von der Handhabung als etwas „frickelig“

Was für Text geht, geht natürlich auch für Bilder. Hier lautet das Präfix des CSS-Klassennamen etwas anders, die Herangehensweise ist aber identisch.

.ms-rteImage-CustomImageStyle
{
-ms-name: "Image Style";
border: 2px dotted #666;
margin: 10px;
}

Dies sieht als Ergebnis so aus:

Benutzerdefinierter RTE Style für Bilder

Im Screenshot sieht man auch sehr schön, dass dort in den Bildtools neben den Bildformatvorlagen auch noch der Button für Position ist. Auch dieser lässt sich ähnlich der oben genannten Methode überschreiben. Hier lautet das Präfix ms-rtePosition.

.ms-rtePosition-LeftTop
{
	-ms-name: "Links mit Rahmen";
	float: left;
	padding: 10px;
	border: 1px solid grey;
	margin-right: 10px;
	margin-bottom: 10px;
}

Man kann auch bestehende Style überschreiben. Die von Microsoft definierten CSS-Klassen sind:

Für Text:

.ms-rteStyle-Comment
.ms-rteStyle-Normal
.ms-rteStyle-Highlight
.ms-rteStyle-Byline
.ms-rteStyle-Tagline
.ms-rteStyle-Comment
.ms-rteStyle-References
.ms-rteStyle-Caption

Bilder:

.ms-rteImage-0
.ms-rteImage-1
.ms-rteImage-2
.ms-rteImage-3
.ms-rteImage-4

Positionen:

.ms-rtePosition-1
.ms-rtePosition-2
.ms-rtePosition-3
.ms-rtePosition-4
.ms-rtePosition-5

Durch die hier genannten Optionen, die Styles, Image Styles und Image Positions anzupassen, sind einem eigentlich keine Grenzen gesetzt. Wer gerne mit jQuery arbeitet, sich aber immer geärgert hat, dass im in RTE Textbereichen eventuell passende Selektoren fehlen, kann auch hier mit den RTE Styles arbeiten. Hier ist es zwar etwas störend, dass man immer mindestens ein zusätzliches CSS-Attribut angeben muss, aber hier kann man im Zweifel auch einfach ein beliebiges Attribut mit Default-Wert (oder sowieso schon gesetztem Wert einfügen.

Ich hoffe, dieser kleine Exkurs in die Welt der RTE Styles war halbwegs hilfreich.

Style Library vs. Layouts Folder in Sharepoint 2010

Im aktuellen Sharepoint Projekt kamen wir irgendwann an den Punkt, an dem wir festgestellt haben, dass die von uns entwickelte Branding Solution mit der Style Library einige Probleme verursacht hat.

Während des Projekts haben wir uns daher kurz entschlossen, die Branding relevanten Dateien (also CSS, Layout Bilder und JavaScripts) aus der Style Library in den Layouts-Ordner zu verschieben. Es hat funktioniert (warum sollte es auch nicht), aber ich bin erst hinterher dazu gekommen, mir mal Gedanken zu machen, was für Vor- oder Nachteile oder Auswirkungen das hat.

Ich bin zu dem Entschluss gekommen, dass in meinen Augen das Ablegen der Branding relevanten Dateien im Layouts-Ordner eigentlich sogar der bessere Weg ist.

Die Style Library ist eine ghostable Library, dass heisst alle Dateien werden im Dateisystem vorgehalten und als Kopie in die Datenbank gespeichert. Da sie nicht manuell bearbeitet werden sollen (da wir ja extra eine Solution dafür haben), brauchen wir dieses Feature eigentlich nicht. Eher im Gegenteil. Das Ghosting hat während der Entwicklung und dem Deployment auf dem Live-System dafür gesorgt, dass unsere CSS-Dateien nicht immer aktualisiert wurden, was doch für einige verwunderte Entwicklerblick gesorgt hat, weil sich keiner das Verhalten erklären konnte (in neun von 10 Fällen funktioniert es; nur immer, wenn es wirklich grad wichtig war, nicht…).

Weiterhin muss man sagen, da die Style Library ja virtuell in der Datenbank vorliegt, sind weitaus mehr Layer vorhanden, die die Dateien letztenendes passieren müssen, bis sie vom Webserver ausgeliefert werden (Datenbank, Netzwerk, Objektmodell, Webserver), während der Layouts Ordner ja nur eine 1:1 Repräsentation des Ordners im Dateisystem ist, was aus meiner Sicht den Zugriff ressourcenschonender macht.

Sicherlich hat auch der Layouts-Ordner seine Nachteile, so wird die Style Library in der Content Database vorgehalten und bei einem Backup ebenfalls mitgesichert und auch wiederhergestellt; Farmen, die eine gemeinsame Content-Database nutzen (über Cluster oder auch Single-Server) greifen auf die gleichen Dateien zu. Aber diese Nachteile bzgl. des Backups kamen in unserem Fall sowieso nicht zum tragen. Im Live System war zwar genau der Fall vorhanden, dass mehrere Frontend Webserver auf die gleiche Datenbank zugriffen, allerdings enthielt unsere Branding Solution natürlich auch mehr als lediglich nur ein paar Styles. Ich spreche hier von UserControls, Masterpages, FeatureReceiver, uvm. Das heisst das Branding hätte mittels eines einfachen Datenbank Backups gar nicht wiederhergestellt werden können, da die Solution zwangsweise deployed hätte werden müssen (und somit unsere Style Dateien ebenfalls wieder vorhanden gewesen wären).

Dazu kommt, dass man gerade die Styles und Javascript während der Entwicklung auch mal schnell direkt im Dateisystem anpassen kann und wenn man fertig ist, einfach die Änderungen in die Dateien in der Visual Studio Solution überträgt. Damit kann man das ständige Deployen der VS Solution umgehen und wesentlich schneller Änderungen an seinen Dateien vornehmen.

Ich hatte ja zuerst noch Bedenken, dass SharePoint (der ja die CSS Dateien parsed) Probleme mit dem Layouts-Order hat. Dies wäre fatal gewesen, da wir eigene RTE Styles in unseren CSS Dateien hinterlegt hatten, aber dies war überhaupt kein Problem. SharePoint hat die dort gelagerten CSS Dateien genauso behandelt, wie jede andere auch.

Features, die explizit die Style Library benötigen, wie z.B. Themes benutzen wir nicht, also ist auch das kein Argument dafür.

Und zu guter letzt ist der Layouts Ordner wirklich in jedem Web vorhanden und nicht nur in der Webseite auf oberster Ebene. Dies sorgt besonders bei Managed Paths dafür, dass man seine Styles wunderbar einfach einbinden kann.

Alle die oben aufgezählten Gründe, sind für mich eigentlich mehr als ausreichend, momentan auf das Ablegen von Style Dateien in der Style Library zu verzichten und stattdesssen auf den Layouts-Ordner zu setzen.