Browse by Tags

All Tags » SharePoint 2007 Development (RSS)

SharePoint Workflows mit Visual Studio - E-Mail als 'plain text' verschicken

In meinem letzten Blogpost habe ich mich postiv über das neue Visual Studio 2008 und den grafischen Workflow-Editor geäußert. Seitdem habe ich ein paar ältere Workflows mit Visual Studio 2008 neu erstellt - und dabei bin ich auf ein kleines Problem gestoßen. Um in einem Workflow eine Benachrichtigungsmail zu verschicken, zieht man im grafischen Editor das Icon SendEMail aus der Toolbox auf die gewünschte Stelle im Ablaufplan. Anschließend konfiguriert man die wichtigesten Parameter (Adresse, Betreff, Mailtext) und schon kann der Workflow eine Benachrichtigungsmail erzeugen und verschicken (vorausgesetzt, man hat in der Zentraladministration die Parameter für ausgehende Mails richtig eingestellt). Dies klappt auch, aber mit der Formatierung der abgeschickten Mail war ich nicht zufrieden, denn offenbar verschickt SendEMail Mails im HTML-Format. Ich habe nun nach einer Möglichkeit gesucht, statt in HTML die Mails als Text (plain text) zu verschicken. Leider gibt gibt es dafür bei SendEMail keinen Parameter - aber man kann sich mit dem Property Headers behelfen. Hinter dem Property Headers verbirgt sich ein StringDictionary - das ist eine Liste, die aus Key / Value - Paaren besteht. Mit folgendem Snippet kann man in einem Workflow Mails als 'plan text' verschicken: public StringProperty oHeaders; oHeaders = new StringDictionary(); oHeaders.Add(„Content-Type“, „plain/text“); Anschließend weißt man dem betreffenden SendEMail -Objekt bzw. dessen Headers-Property die Variable...

Workflows mit Visual Studio 2008 erstellen

Das Erstellen von Workflows mit dem ' alten ' Visual Studio 2005 war keine leichte Sache und ehrlich gesagt habe ich mich damit immer etwas schwer getan. Mit dem neuen Visual Studio 2008 ist das Erstellen von Workflows jetzt viel einfacher geworden. Dies beginnt bereits bei der Installation: einfach Visual Studio 2008 in einer Entwicklungsumgebung mit MOSS oder WSS installieren und darauf achten, dass die Visual Studio Tools for Office mitinstalliert werden. Empfehlenswert, aber nicht zwingend notwendig ist noch die Installation des .NET-Frameworks 3.5. Warum - dazu später mehr. Nachdem die Installation fehlerfrei durchgelaufen ist, kann man bereits damit beginnen, einen ersten Workflow mit Visual Studio 2008 zu erstellen. Dazu geht man wie folgt vor: 1) Anlegen eines neuen Projekts vom Typ Sequentieller Sharepoint-Workflow . Dabei sollte darauf geachtet werden, dass oben rechts in dem Projektauswahlfenster .NET Framework 3.5 ausgewählt ist. 2. Nachdem man einen Namen und einen Speicherort für das Projekt ausgewählt hat, startet der Wizzard mit seiner ersten Frage: wie soll der neue Workflow heißen und auf welcher lokalen Webseite soll der Workflow später getestet ( Debugging ) werden. An diesem Wizzard-Schritt sieht man schon, dass der Wizzard nicht für Remote-Debugging ausgelegt ist. 3) Im nächsten Schritt fragt der Wizzard nach der Liste, mit der der neue Workflow verknüpft werden soll und welche Verlaufs- und Aufgabenlisten verwendet werden sollen. Der Wizzard befüllt...

Webpartwartungsseite - Hilfreich bei Problemlösungen

Meist geschieht es, wenn man sehr viel an einer Seite gearbeitet hat. Man hat vielleicht hier und da ein Webpart hinzugefügt, es konfiguriert, es in eine andere Zone verschoben, gelöscht, wieder hinzugefügt und neu konfiguriert, ein anderes Webpart ausprobiert ... und irgendwann passiert es dann: die Seite läßt sich z.B. im Sharepoint-Designer nicht mehr öffnen. Stattdessen erscheint eine Fehlermeldung, die meist sinngemäß besagt, dass Probleme mit einem Webpart das Öffnen der Seite verhindern. Für solche Probleme ist die Webpartwartungsseite hilfreich. Hier werden alle Webparts aufgelistet, die jemals auf einer Seite eingebunden waren. Allerdings ist der Zugang zu dieser Wartungsseite gut versteckt. Ich möchte hier einen Weg aufzeigen, wie man an diese Wartungsseite für eine spezielle Seite kommt: zuerst läßt man sich die betroffene Seite im Browser anzeigen nun klickt man auf Websiteaktionen -> Alle Websiteinhalte einblenden es wird nun eine Seite angezeigt, in der alle Website-Inhalte (Biliotheken, Listen, ...) angezeigt werden. Hier klickt man nun auf Seiten. nun wird eine Bibliothek mit alle Seiten der aktuellen Website angezeigt. In dieser Bibliothek sucht man sich die problembehaftete Seite aus und wählt in deren Kontextmenü Eigenschaften bearbeiten . nun wird eine ausführliche Ansicht aller Parameter der aktuellen Seite angezeigt. Ganz unten auf der Seite findet man den gesuchten Link: Webpartseite in Wartungsansicht öffnen . Klickt man auf diesen Link, bekommt man...

Rewriting Links In Search Results (XSLT)

Occasionly you may find that you want to build your own link translation functions directly into the search XSLT, essentially stating two parameters, the URL attributes to find, and the URL attributes to replace it to, adjusting the return on the SharePoint Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Iterating Through All WebParts On Page

One of my friends instant messaged me this morning and asked if it was feasible to use a method that would take an SPWeb object, and a URL as a parameter in order to return a collection of all the WebParts that coordinated with the URL. I haven't Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Cloning SharePoint List Security (Freeware Security Tool)

I have run up into a cloning issue on other occasions, quite recently actually, since the project I am currently slated for has a really complex scheme in order to control user access to our local SharePoint instance and its related objects, as such sometimes Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Großes Zeitfenster beim Ändern des Passworts in einem ActiveDirectory

Ein Mitarbeiter eines unserer Kunden rief mich vor kurzem an, um mir ein ungewöhnliches Verhalten beim Ändern seines Passwortes zu schildern. Nachdem er sein Passwort mit Hilfe eines unserer WebParts geändert hatte, konnte er sich dennoch weiterhin mit seinem alten Passwort anmelden. Eine Fehlermeldung beim Ändern seines Passworts habe es nicht gegeben. Daraufhin habe er versucht, sich mit seinem neuen (also dem geänderten) Passwort anzumelden und auch mit diesem konnte er sich anmelden. Da er sich sowohl mit altem, als auch mit neuem Passwort anmelden konnte, vermutete er nun einen Fehler in unserem Passwort-Ändern-WebPart. Unser WebPart zum Ändern von Passwörtern greift auf ein ActiveDirectory zu. Und genau hier liegt die Erklärung zu diesem ungewöhnlichen Verhalten. Nach dem Einspielen des SP1 für Windows Server 2003 verlängert sich das Zeitfenster in dem sowohl das alte, als auch das neue Passwort gültig sind, auf 1 Stunde. Dies bedeutet, dass das alte Passwort unter Umständen noch eine Stunde gültig bleibt, nachdem es bereits vom Benutzer geändert wurde. Dieses Zeitfenster läßt sich aber durch Änderungen an einem Registry-Key auf 1 Minute verkürzen. Microsoft hat die nötigen Änderungen hier beschrieben: http://support.microsoft.com/kb/906305/en-us Dieses Problem lies sich also schnell lösen - auch deswegen, weil diese Änderung keinen Neustart des Servers erfordert! Posted on SharePoint Blogs Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

ClickOnce Makes SDC Not Suck So Bad

Within federal computing systems, it is commonplace (and regulated) that a standard image be used when creating new machines that are going to be put on either NIPRNet (unclassified) and SIPRNet (classified) systems. While this is all fine and good, there Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

String.Compare for Performance And Readability

Sometimes, I am just so used to doing things a certain way that I don't look for new ways of doing it. Fault of my programming personality I suppose, but String.Compare is one of those things that I use religiously now. Let's take a quick example Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Where Are You Mr. System.Web.UI.Design?

I was developing a custom web control that I planned on consuming in a WebPart, and I had some control properties that required a reference to an image. So I had: Select For Unformatted Code C#: [Editor(typeof(ImageUrlEditor), typeof(UITypeEditor))] Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Get Friendly User Name For SPAuditEntry UserId

I saw this post on the forums: http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2270146&SiteID=17 Where the user states (paraphrased): I've been tasked with delivering a custom auditing solution in Sharepoint 2007 and become a little Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Working With Application Config Files Remotely

One of my friends that I was working with had a brief question regarding using a uniform application configuration file between projects. In aggregate, he was wondering if it was feasible to use the orthodox ConfigurationManager.OpenExeConfiguration in Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Controlling SPField Display

On occasion, you may encounter the requirement when creating fields programmatically that you want to hide the field display depending on what form type that ListFormWebPart is located on (i.e. whether you are in NewForm, EditForm, etc.). Through the Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Why CommaDelimitedStringCollection Made Me Happy Today

Another thing that I stumbled on today that has made me all sorts of happy is the CommaDelimitedStringCollection class, which basically let's you take a bunch of string values and work with them in a comma delimited format (so I guess the class name Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Hello ManagementObjectEnumerator

I totally didn't know that there was a ManagementObjectEnumerator class, but I found out there was today which made me all sorts of happy. What I was trying to do was to just display a list of the application pools of the current host machine's Read More......( read more ) Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks
More Posts Next page »