Display all my alerts
The "old" SharePoint Server 2003 offered the ability to display all alerts from a user on his/her MySite. MOSS and SharePoint 2010 lacks this functionality. So I wrote a Webpart, which will display all my alerts. Of course is multilingual. Currently there is English, German and Spanish language support included. And it will work on Windows SharePoint Services V3 as well ass SharePoint Foundation. You don’t need the Office Server / SharePoint Server 2010 for it 🙂
HowTo use the resource files from SharePoint
How about using the available resources from SharePoint to translate some basic words and sentences? Well, it is quite easy to use the available resources. You need the Microsoft.SharePoint.Intl.dll and some lines of code to use the already translated resources:
// define yourself variables
private readonly CultureInfo _Cult;
private readonly Assembly _SharePoint_Intl_Assembly;
private readonly ResourceManager _SharePoint_RM;
private readonly ResourceManager _SharePoint_WebPartPage_RM;
// initialize them in your constructor
_SharePoint_Intl_Assembly = Assembly.Load("Microsoft.SharePoint.intl, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c");
_SharePoint_RM = new ResourceManager("Microsoft.SharePoint", _SharePoint_Intl_Assembly);
_SharePoint_WebPartPage_RM = new ResourceManager("Microsoft.SharePoint.WebPartPages.strings", _SharePoint_Intl_Assembly);
// get the current culture
internal static CultureInfo GetCultureInfo()
{
CultureInfo newCultureInfo;
try
{
uint localeID = SPContext.Current.RegionalSettings.LocaleId;
newCultureInfo = new CultureInfo((int)localeID);
}
catch
{
newCultureInfo = new CultureInfo(1033);
}
return newCultureInfo;
}
// use the resources
string test = _SharePoint_RM.GetString("ExpireDateInPast", _Cult);
// will result in 'The Expire date is in the past.'
But how do you know how the resource name for your translated text might be? Your friend and helper is the Reflector. Open up the ‘Microsoft.SharePoint.Intl.dll’ from the ‘C:\WINDOWS\assembly\GAC_MSIL\Microsoft.SharePoint.intl\12.0.0.0__71e9bce111e9429__71e9bce111e9429c’ folder (navigate to that path with cmd.exe and copy the dll to some safe place like c:\temp).
Custom assemblies for the Reporting Services 2005
Even if the Reporting Services are very powerfull, you might get to the point where you have to extend the building functionality. So why not write your own custom assembly with some additional code?
Create your assembly like this:
1: using System;<br> 2: using System.Security.Permissions;<br> 3: using Microsoft.SharePoint;<br> 4: <br> 5: public class MyNamespace<br> 6: {<br> 7: public class ReportingExtension<br> 8: {<br> 9: public ReportingExtension()<br> 10: {<br> 11: }<br> 12: <br> 13: public static string HelloWorld()<br> 14: {<br> 15: return "Hello World.";<br> 16: }<br> 17: <br> 18: [EnvironmentPermission(SecurityAction.Assert, Unrestricted = true)]<br> 19: [Microsoft.SharePoint.Security.SharePointPermission(SecurityAction.Assert, Unrestricted = true)]<br> 20: public static string getSomeListItem(string url, int itemID)<br> 21: {<br> 22: string returnvalue = string.Empty;<br> 23: try<br> 24: {<br> 25: using (SPSite site = new SPSite(url))<br> 26: using (SPWeb web = site.OpenWeb())<br> 27: {<br> 28: // do something<br> 29: returnvalue = "";<br> 30: }<br> 31: }<br> 32: catch (Exception ex)<br> 33: {<br> 34: return ex.ToString();<br> 35: }<br> 36: <br> 37: return returnvalue;<br> 38: }<br> 39: }<br> 40: }
Index a remote SharePoint Site
Did you ever want to crawl a remote SharePoint site and were unsuccessfull doing so? Well I did.
The only solution I found, was not to crawl the remote site with the default crawler credentials, but with an account from the remote site.
You can do so by creating a crawl rule in your SharedServices Provider, which only includes the remote site.
Target Audiences
You can specify a Target Audience in a Webpart, for it to only be visible to e.g. members of a certain AD group.

Have you ever wonderd yourself why on earth the new group does not appear in the list and is not valid? Well, I did 🙁
The reason is quite simle. Shortly after the userimport from your AD or another LDAP source there is another import started. This one imports groups and memberships. Only after this step the groups will show up in the “Target Audiences” field in your Webpart!
Updated Wiki Webpart
Please use my custom field type. It is more flexible –> http://www.hezser.de
I updated my Wiki Webpart. For all of you who don’t know what it does:
The normal Wiki Edit Form misses the ability to upload pictures. My Webpart, which has to be included to the EditForm.aspx, allows you to upload a picture. It also creates a link in your Wiki post, which displays the uploaded image.
This release of the Webpart is multi lingual. Meaning it will present text to the user in english and german. If you would like this Webpart in your language, drop me a note 🙂
updated SDKs
The updated SDKs are now available for downloading.
Get form Url from a list
Whenever you have an ID from a list item, you might want to create a link to its DispForm or EditForm. But how do you get the Url to the forms?
1: SPList list = something;
<span class=lnum> 2: </span>list.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url;
Create an eventlog entry
For exception handling it is good practice to write errors to the eventlog.
EventLog.WriteEntry(“SharePoint.Error”, errorText, EventLogEntryType.Error);
Since SP1 for Windows Server 2003 “the normal user” is not allowed to write to the eventlog. James Kovacs wrote a great article about the problem.
(Remember to create your eventlog source, if you have your own!)
1: if(!EventLog.SourceExists(“SharePoint.Error”, ".")) {
<span class=lnum> 2: </span> EventLog.CreateEventSource(<span class=str>"SharePoint.Error"</span>, <span class=str>"Application"</span>, <span class=str>"."</span>);
3: } Visual Studio 2005 Keyboard Shortcut References
You can download an overview for Default Visual Studio 2005 Shortcuts for C+ here.
„File not found“ error
If somehow the path to your masterpage is broken, you will get an error message like “file not found” when you access a website. This could happen if you create a new site from a template, which comes from another server. You can open your site in SharePoint Designer, though.
The KB article A subsite that you create in SharePoint Server 2007 does not inherit master page settings from its parent site, and you receive error messages on the Site Master Page Settings page describes this problem. You can solve it by enabling and disabling the Publishing feature in your sitesettings.
Open Office 2007 files from WSS V2/SPS 2003
You all know, that you can open a document via the context menu in SharePoint in editmode in an Office Application. This does not work, if you save e.g. a .docx.
But help is on the way: Icons that represent 2007 Office files are incorrect, and the “Edit in Microsoft Office
How to get LookupField Information from a listItem
If you want the ID or the value form a LookupField, you can get it easily with this code snippet:
SPListItem item = getitsomewhare… SPFieldLookupValue lf = (SPFieldLookupValue) item.ParentList.Fields.GetField(_FieldName).GetFieldValue( item.GetFormattedValue(_FieldName));
if you got the field, fetch its properties via
if (lf == null) { int itemID = lf.LookupId; string itemValue = lf.LookupValue; }
Have fun ;-)
Install Windows Service Pack on a VM
On a newly installed Virtual Machine you don’t need any uninstall information from a servicepack, which consumes lots of diskspace. You can install the SP2 for Windows Server 2003 (R2) with the /nobackup parameter.
RESTART OPTIONS
/NORESTART:
No restart will take place. You will have to perform a manual restart yourself before the service pack installation can be considered complete.
/FORCERESTART:
A restart will automatically take place at the end of the installation.This will be handy if you automate the execution of UPDATE.EXE.
Display a website, which requires authentification
I started to write a Webpart, which shows the content of a remote website. You can specify logon information, as well as proxy information.
**It is not ready yet! But I was asked for it. So I will publish it unfinished!
**
