Wednesday, July 8, 2009

Beginning SharePoint Development Available Now!

It's here - after a far too long wait - the next issue of Understanding SharePoint Journal.
The topic this time, as you likely know, is Beginning SharePoint Development. If you are an aspiring developer, or if you have a lot of experience as a developer on other platforms, this issue is for you.
The issue, spanning 128 pages, covers the following aspects of SharePoint development:
  • Creating the development environment
  • Overview of SharePoint from a developer's perspective
  • SharePoint development core concepts
  • Data development in SharePoint
  • Event handlers and workflows in SharePoint
  • SharePoint web part development
  • Development of visual elements

You'll also get 21 videos lasting more than 3 hours and 15 minutes, walking you through the steps of the exercises and showing you some additional and useful tips and tricks.

I won't hold you here no more, here is the URL:http://www.beginningsharepointdevelopment.com/

Monday, June 29, 2009

Screencasts and Resources for SharePoint, in Arabic

In Co-operation with EndUserSharePoint.Com , I'd like to announce the first ever SharePoint series of Screencasts in Arabic recorded from Egypt SharePoint User Group meetings and presented by me. Special thanks to Mark Miller ( owner and editor of EUSP ) for being interested in the Arabic content and our activities at Egypt SharePoint User Group.
You can find here screencasts, slidedeck and photos from the most recent meeting where I spoke about SharePoint Content Types.

Session Description :“Content types are incredibly cool and fundamental to how SharePoint works with Data and Information. Is this session we’ll explore the power of custom content types development and see how we can use them for customizing the visual appearance, introducing new behaviors and much MORE !”

Saturday, June 27, 2009

Egypt SharePoint User Group, June 09 Meeting .




Two weeks ago , Egypt SharePoint User Group second meeting was held, Special thanks for ITWorx for hosting the event.
The sessions went really great and we had a great guest : Michael Noel , A SharePoint Guru, speaking about "Building a perfect SharePoint farm", it was very informative and useful. Thanks Michael and I hope that you enjoyed your time in Cairo.

For me, I really had great experience speaking about my favorite topic in SharePoint " Content Types". Firstly, I spoke about Content Types from the End User perspecive, demonstrated Site Content Types and List content types then I switched to the development part where we developed Content Types using CAML and I discussed some methods to design everything from the UI and export the Content Types to Visual Studio and deploying them through "Features".

Finally, I discussed how to customize Content Types froms and how to customize SharePoint through Content Types.
The session was very interactive and we had very nice and interesting attendees.

After my session , I've received many requests to share the slide deck on my blog. Sorry for the delay but finally I managed to upload it, you can get it from the following URL :
http://cid-3cd6d1b6f330333f.skydrive.live.com/self.aspx/Public/EGYSUG%20June09/A%20Deep%20Dive%20into%20SharePoint%20Content%20Types.pptx

Tuesday, June 23, 2009

Getting The Login Name for a Given Display Name in SharePoint

Yes, It's possible to retrieve the LoginName of a user if you only have the DisplayName ( Last Name + First Name ).
There are a lot of ways to achieve that like

1) You can directly query the Active Directory.

2) You can use a PeopleEditor control, which will grab the user if you type in the lastname, firstname combination as follows :
PeopleEditor people = new PeopleEditor();
people.MultiSelect = false;
this.Controls.Add(people);
int userID = Int32.Parse((((PickerEntity)people.ResolvedEntities[0]).EntityData["SPUserID"]).ToString());
SPUser user = SPContext.Current.Site.RootWeb.SiteUsers.GetByID(userID);

3) You can use SharePoint Search API ( FullTextSqlQuery Class ).

SELECT AccountNameFROM portal..scope()WHERE ( ("SCOPE" = 'People') ) AND ("Title" = '[DISPLAY NAME]')

I prefer the third way, much more easier ..

Thursday, June 11, 2009

Querying MSMQ Messages Using LINQ

In a project that I'm currently working on, I neded to retrieve messages from MSMQ based on some criteria, I used LINQ to do that and would like to share this code with you.

MessageQueue messageQueue = new MessageQueue(Constants.MessageQueueName);
messageQueue.Formatter = new BinaryMessageFormatter();
var TrackingRecords = from System.Messaging.Message message in messageQueue
where message.Label.Contains(Constants.MessageLabel)
select (ICLGRecord)message.Body;
// Itterate through the Messages
foreach (var TrackingRecord in TrackingRecords)
{

}
// Remove All Items From MSMQ
messageQueue.Purge();

Friday, June 5, 2009

Using Surveys on anonymous access SharePoint sites

One of the nice features of SharePoint is "Surveys". They allow you to create a set of questions and have users of the site fill them in. It allows for selections from a set list, rating scales (where you rate a number of items along ascale from, say, 'not at all' to 'extremely') and even flow logic (where the outcome of one question causes certain questions to be skipped).
For intranet-type team sites, this just works like a charm. For public sites with anonymous access however, it turns out not so easy. To fill out a form, the user must have write access to the survey's library for example. Normally, we of course never allow write access to anonymous users. This article will show you how to configure your survey for use on a public anonymous web site (it involves a little trick). Note that this tutorial applies to ALL flavours of SharePoint, both WSS 3.0 as any of the MOSS 2007 licenses.
http://www.teuntostring.net/blog/2007/07/using-surveys-on-anonymous-access.html

Friday, May 29, 2009

Third Medal @ MSDN and TECHNET forums

I forgot to announce that I was awarded the third star @ MSDN forums two weeks ago.



For those who don't know, MSDN and Technet forums have a star based recognition system for how many answers you provide and how much you share to the community.